From eced1bcb96ebf549758fe40b4e31880a9fcd9e6e Mon Sep 17 00:00:00 2001 From: dsambit Date: Mon, 23 Oct 2023 23:02:04 +0000 Subject: [PATCH] deploy: 9013d30d523ad21346b624d919b71f30e02af7b9 --- .nojekyll | 0 _b_f_g_s_non_linear_solver_8h.html | 105 + _b_f_g_s_non_linear_solver_8h_source.html | 363 + _composite_data_8h.html | 106 + _composite_data_8h_source.html | 147 + _data_type_overloads_8h.html | 127 + _data_type_overloads_8h_source.html | 223 + _device_a_p_i_calls_8h.html | 88 + _device_a_p_i_calls_8h_source.html | 273 + _device_blas_wrapper_8h.html | 88 + _device_blas_wrapper_8h_source.html | 420 + _device_data_type_overloads_8cu_8h.html | 319 + ...ice_data_type_overloads_8cu_8h_source.html | 1045 + _device_data_type_overloads_8h.html | 88 + _device_data_type_overloads_8h_source.html | 124 + _device_data_type_overloads_8hip_8h.html | 320 + ...ce_data_type_overloads_8hip_8h_source.html | 914 + _device_exceptions_8cu_8h.html | 159 + _device_exceptions_8cu_8h_source.html | 145 + _device_exceptions_8hip_8h.html | 159 + _device_exceptions_8hip_8h_source.html | 145 + _device_kernel_launcher_constants_8h.html | 88 + ...e_kernel_launcher_constants_8h_source.html | 144 + _device_type_config_8cu_8h.html | 136 + _device_type_config_8cu_8h_source.html | 155 + _device_type_config_8h.html | 88 + _device_type_config_8h_source.html | 124 + _device_type_config_8hip_8h.html | 113 + _device_type_config_8hip_8h_source.html | 151 + _exceptions_8h.html | 228 + _exceptions_8h_source.html | 251 + _f_e_basis_operations_8h.html | 137 + _f_e_basis_operations_8h_source.html | 1230 ++ _f_e_basis_operations_kernels_device_8h.html | 88 + ...s_operations_kernels_device_8h_source.html | 146 + _formulas.tex | 123 + _formulas_dark.tex | 125 + _l_b_f_g_s_non_linear_solver_8h.html | 105 + _l_b_f_g_s_non_linear_solver_8h_source.html | 361 + _m_d_i_engine_8h.html | 88 + _m_d_i_engine_8h_source.html | 242 + _m_p_i_communicator_p2_p_8h.html | 112 + _m_p_i_communicator_p2_p_8h_source.html | 242 + _m_p_i_communicator_p2_p_kernels_8h.html | 108 + ...i_communicator_p2_p_kernels_8h_source.html | 223 + _m_p_i_pattern_p2_p_8h.html | 113 + _m_p_i_pattern_p2_p_8h_source.html | 533 + _m_p_i_requesters_base_8h.html | 108 + _m_p_i_requesters_base_8h_source.html | 165 + _m_p_i_requesters_n_b_x_8h.html | 112 + _m_p_i_requesters_n_b_x_8h_source.html | 386 + _m_p_i_tags_8h.html | 118 + _m_p_i_tags_8h_source.html | 151 + _m_p_i_write_on_file_8h.html | 108 + _m_p_i_write_on_file_8h_source.html | 139 + _memory_manager_8h.html | 109 + _memory_manager_8h_source.html | 186 + _memory_space_type_8h.html | 107 + _memory_space_type_8h_source.html | 139 + _memory_storage_8h.html | 116 + _memory_storage_8h_source.html | 655 + _memory_transfer_8h.html | 109 + _memory_transfer_8h_source.html | 238 + _memory_transfer_kernels_device_8h.html | 88 + ...ory_transfer_kernels_device_8h_source.html | 152 + _multi_vector_8h.html | 119 + _multi_vector_8h_source.html | 693 + _n_n_g_g_a_8h.html | 88 + _n_n_g_g_a_8h_source.html | 133 + _n_n_l_d_a_8h.html | 88 + _n_n_l_d_a_8h_source.html | 129 + _optimized_index_set_8h.html | 108 + _optimized_index_set_8h_source.html | 192 + _periodic_table_8h.html | 116 + _periodic_table_8h_source.html | 195 + _quad_data_composite_write_8h.html | 107 + _quad_data_composite_write_8h_source.html | 135 + _r_e_a_d_m_e_8md.html | 82 + _type_config_8h.html | 104 + _type_config_8h_source.html | 103 + annotated.html | 160 + bc_s.png | Bin 0 -> 676 bytes bc_sd.png | Bin 0 -> 635 bytes cg_p_r_p_non_linear_solver_8h.html | 104 + cg_p_r_p_non_linear_solver_8h_source.html | 427 + ...onalized_subspace_iteration_solver_8h.html | 107 + ...d_subspace_iteration_solver_8h_source.html | 242 + ...d_subspace_iteration_solver_device_8h.html | 88 + ...ace_iteration_solver_device_8h_source.html | 260 + ...1_1_b_f_g_s_non_linear_solver-members.html | 145 + classdftfe_1_1_b_f_g_s_non_linear_solver.html | 1382 ++ classdftfe_1_1_b_f_g_s_non_linear_solver.png | Bin 0 -> 704 bytes ...1_l_b_f_g_s_non_linear_solver-members.html | 145 + ...dftfe_1_1_l_b_f_g_s_non_linear_solver.html | 1382 ++ ...sdftfe_1_1_l_b_f_g_s_non_linear_solver.png | Bin 0 -> 715 bytes classdftfe_1_1_mixing_scheme-members.html | 109 + classdftfe_1_1_mixing_scheme.html | 670 + classdftfe_1_1_process_grid-members.html | 110 + classdftfe_1_1_process_grid.html | 725 + ...fe_1_1_sca_l_a_p_a_c_k_matrix-members.html | 152 + classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html | 2246 +++ ...asis_1_1_f_e_basis_operations-members.html | 162 + ...tfe_1_1basis_1_1_f_e_basis_operations.html | 294 + ...ftfe_1_1basis_1_1_f_e_basis_operations.png | Bin 0 -> 1814 bytes ...asis_9a9280e7dd92d071ae27bd4af430a9d1.html | 171 + ...asis_a6d54428caba6f4ef403d0ce98c55ffa.html | 740 + ...basis_a6d54428caba6f4ef403d0ce98c55ffa.png | Bin 0 -> 2096 bytes ...1_1_f_e_basis_operations_base-members.html | 162 + ..._1basis_1_1_f_e_basis_operations_base.html | 1871 ++ ...1_1basis_1_1_f_e_basis_operations_base.png | Bin 0 -> 1815 bytes ...1_1cg_p_r_p_non_linear_solver-members.html | 147 + classdftfe_1_1cg_p_r_p_non_linear_solver.html | 1516 ++ classdftfe_1_1cg_p_r_p_non_linear_solver.png | Bin 0 -> 734 bytes ...zed_subspace_iteration_solver-members.html | 104 + ...hogonalized_subspace_iteration_solver.html | 580 + ...thogonalized_subspace_iteration_solver.png | Bin 0 -> 1091 bytes ...dftfe_1_1dealii_linear_solver-members.html | 104 + classdftfe_1_1dealii_linear_solver.html | 490 + classdftfe_1_1dealii_linear_solver.png | Bin 0 -> 665 bytes ...1dealii_linear_solver_problem-members.html | 99 + ...dftfe_1_1dealii_linear_solver_problem.html | 473 + ...sdftfe_1_1dealii_linear_solver_problem.png | Bin 0 -> 1582 bytes classdftfe_1_1dft_base-members.html | 119 + classdftfe_1_1dft_base.html | 1106 ++ classdftfe_1_1dft_base.png | Bin 0 -> 747 bytes classdftfe_1_1dft_class-members.html | 499 + classdftfe_1_1dft_class.html | 12716 +++++++++++++ classdftfe_1_1dft_class.png | Bin 0 -> 732 bytes classdftfe_1_1dft_parameters-members.html | 271 + classdftfe_1_1dft_parameters.html | 3076 +++ ...1dft_utils_1_1_composite_data-members.html | 93 + ...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 | 90 + ..._1_1dft_utils_1_1_m_p_i_write_on_file.html | 143 + classdftfe_1_1dft_utils_1_1_pool-members.html | 94 + classdftfe_1_1dft_utils_1_1_pool.html | 235 + ...1_1_quad_data_composite_write-members.html | 96 + ...t_utils_1_1_quad_data_composite_write.html | 274 + ...ft_utils_1_1_quad_data_composite_write.png | Bin 0 -> 883 bytes ...ils_1_1constraint_matrix_info-members.html | 108 + ..._1dft_utils_1_1constraint_matrix_info.html | 659 + classdftfe_1_1dftfe_wrapper-members.html | 125 + classdftfe_1_1dftfe_wrapper.html | 1386 ++ ...ftfe_1_1dispersion_correction-members.html | 108 + classdftfe_1_1dispersion_correction.html | 636 + classdftfe_1_1eigen_solver_class-members.html | 93 + classdftfe_1_1eigen_solver_class.html | 272 + classdftfe_1_1eigen_solver_class.png | Bin 0 -> 1099 bytes classdftfe_1_1elpa_scala_manager-members.html | 107 + classdftfe_1_1elpa_scala_manager.html | 513 + classdftfe_1_1energy_calculator-members.html | 99 + classdftfe_1_1energy_calculator.html | 916 + ...tfe_1_1exc_density_base_class-members.html | 96 + classdftfe_1_1exc_density_base_class.html | 358 + classdftfe_1_1exc_density_base_class.png | Bin 0 -> 1060 bytes ...fe_1_1exc_density_g_g_a_class-members.html | 102 + classdftfe_1_1exc_density_g_g_a_class.html | 488 + classdftfe_1_1exc_density_g_g_a_class.png | Bin 0 -> 784 bytes ...fe_1_1exc_density_l_d_a_class-members.html | 102 + classdftfe_1_1exc_density_l_d_a_class.html | 488 + classdftfe_1_1exc_density_l_d_a_class.png | Bin 0 -> 775 bytes classdftfe_1_1exc_manager-members.html | 103 + classdftfe_1_1exc_manager.html | 441 + ..._1exc_wavefunction_base_class-members.html | 97 + ...sdftfe_1_1exc_wavefunction_base_class.html | 315 + classdftfe_1_1exc_wavefunction_base_class.png | Bin 0 -> 832 bytes ..._1exc_wavefunction_none_class-members.html | 98 + ...sdftfe_1_1exc_wavefunction_none_class.html | 231 + classdftfe_1_1exc_wavefunction_none_class.png | Bin 0 -> 827 bytes classdftfe_1_1force_class-members.html | 177 + classdftfe_1_1force_class.html | 4685 +++++ classdftfe_1_1geo_opt_cell-members.html | 121 + classdftfe_1_1geo_opt_cell.html | 1008 + classdftfe_1_1geo_opt_cell.png | Bin 0 -> 698 bytes classdftfe_1_1geo_opt_ion-members.html | 121 + classdftfe_1_1geo_opt_ion.html | 1008 + classdftfe_1_1geo_opt_ion.png | Bin 0 -> 694 bytes ..._1geometry_optimization_class-members.html | 104 + ...sdftfe_1_1geometry_optimization_class.html | 493 + ...ftfe_1_1kerker_solver_problem-members.html | 118 + classdftfe_1_1kerker_solver_problem.html | 1072 ++ classdftfe_1_1kerker_solver_problem.png | Bin 0 -> 1029 bytes ...ohn_sham_d_f_t_operator_class-members.html | 198 + ...tfe_1_1kohn_sham_d_f_t_operator_class.html | 3655 ++++ ...ftfe_1_1kohn_sham_d_f_t_operator_class.png | Bin 0 -> 1114 bytes ...m_d_f_t_operator_device_class-members.html | 221 + ...kohn_sham_d_f_t_operator_device_class.html | 4172 ++++ ...1kohn_sham_d_f_t_operator_device_class.png | Bin 0 -> 1188 bytes ...near_algebra_1_1_multi_vector-members.html | 149 + ...fe_1_1linear_algebra_1_1_multi_vector.html | 1897 ++ classdftfe_1_1linear_solver-members.html | 91 + classdftfe_1_1linear_solver.html | 207 + classdftfe_1_1linear_solver.png | Bin 0 -> 665 bytes ...esh_movement_affine_transform-members.html | 120 + ...tfe_1_1mesh_movement_affine_transform.html | 366 + ...ftfe_1_1mesh_movement_affine_transform.png | Bin 0 -> 815 bytes ...sdftfe_1_1mesh_movement_class-members.html | 115 + classdftfe_1_1mesh_movement_class.html | 854 + classdftfe_1_1mesh_movement_class.png | Bin 0 -> 1163 bytes ...1mesh_movement_gaussian_class-members.html | 121 + ...dftfe_1_1mesh_movement_gaussian_class.html | 497 + ...sdftfe_1_1mesh_movement_gaussian_class.png | Bin 0 -> 811 bytes ...e_1_1molecular_dynamics_class-members.html | 138 + classdftfe_1_1molecular_dynamics_class.html | 1982 ++ classdftfe_1_1non_linear_solver-members.html | 105 + classdftfe_1_1non_linear_solver.html | 501 + classdftfe_1_1non_linear_solver.png | Bin 0 -> 1258 bytes ...e_1_1nonlinear_solver_problem-members.html | 101 + classdftfe_1_1nonlinear_solver_problem.html | 548 + classdftfe_1_1nonlinear_solver_problem.png | Bin 0 -> 1355 bytes ..._1_1nudged_elastic_band_class-members.html | 155 + classdftfe_1_1nudged_elastic_band_class.html | 2068 ++ classdftfe_1_1nudged_elastic_band_class.png | Bin 0 -> 783 bytes ...dftfe_1_1operator_d_f_t_class-members.html | 135 + classdftfe_1_1operator_d_f_t_class.html | 1817 ++ classdftfe_1_1operator_d_f_t_class.png | Bin 0 -> 1117 bytes ...tfe_1_1poisson_solver_problem-members.html | 135 + classdftfe_1_1poisson_solver_problem.html | 1611 ++ classdftfe_1_1poisson_solver_problem.png | Bin 0 -> 1131 bytes ...eudo_utils_1_1_periodic_table-members.html | 99 + ...fe_1_1pseudo_utils_1_1_periodic_table.html | 313 + ...o_utils_1_1xml_todftfe_parser-members.html | 111 + ...1_1pseudo_utils_1_1xml_todftfe_parser.html | 642 + classdftfe_1_1run_parameters-members.html | 111 + classdftfe_1_1run_parameters.html | 494 + classdftfe_1_1symmetry_class-members.html | 142 + classdftfe_1_1symmetry_class.html | 1518 ++ ...ftfe_1_1triangulation_manager-members.html | 139 + classdftfe_1_1triangulation_manager.html | 1796 ++ ...p_i_communicator_p2_p_kernels-members.html | 92 + ...s_1_1_m_p_i_communicator_p2_p_kernels.html | 300 + ...e_1_1utils_1_1_memory_manager-members.html | 92 + classdftfe_1_1utils_1_1_memory_manager.html | 215 + ...memory_space_1_1_h_o_s_t_01_4-members.html | 92 + ...e_00_01_memory_space_1_1_h_o_s_t_01_4.html | 215 + ...e_1_1utils_1_1_memory_storage-members.html | 129 + classdftfe_1_1utils_1_1_memory_storage.html | 1584 ++ ..._1_1utils_1_1_memory_transfer-members.html | 90 + classdftfe_1_1utils_1_1_memory_transfer.html | 159 + ...memory_space_1_1_h_o_s_t_01_4-members.html | 90 + ...t_00_01_memory_space_1_1_h_o_s_t_01_4.html | 146 + ...utils_1_1_optimized_index_set-members.html | 97 + ...ftfe_1_1utils_1_1_optimized_index_set.html | 341 + ...i_1_1_m_p_i_communicator_p2_p-members.html | 110 + ...ls_1_1mpi_1_1_m_p_i_communicator_p2_p.html | 663 + ...1_1mpi_1_1_m_p_i_pattern_p2_p-members.html | 137 + ..._1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html | 1348 ++ ...mpi_1_1_m_p_i_requesters_base-members.html | 91 + ...tils_1_1mpi_1_1_m_p_i_requesters_base.html | 165 + ...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 | 109 + ...ils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html | 621 + ...tils_1_1mpi_1_1_m_p_i_requesters_n_b_x.png | Bin 0 -> 880 bytes classdftfe_1_1vself_bins_manager-members.html | 130 + classdftfe_1_1vself_bins_manager.html | 1560 ++ classes.html | 139 + closed.png | Bin 0 -> 132 bytes constants_8h.html | 154 + constants_8h_source.html | 303 + constraint_matrix_info_8h.html | 108 + constraint_matrix_info_8h_source.html | 266 + constraint_matrix_info_device_8h.html | 88 + constraint_matrix_info_device_8h_source.html | 307 + dealii_linear_solver_8h.html | 104 + dealii_linear_solver_8h_source.html | 200 + dealii_linear_solver_problem_8h.html | 104 + dealii_linear_solver_problem_8h_source.html | 207 + density_calculator_8h.html | 110 + density_calculator_8h_source.html | 201 + ...ty_first_order_response_calculator_8h.html | 109 + ...t_order_response_calculator_8h_source.html | 215 + device_direct_c_c_l_wrapper_8h.html | 88 + device_direct_c_c_l_wrapper_8h_source.html | 269 + device_kernels_generic_8h.html | 88 + device_kernels_generic_8h_source.html | 284 + dft_8h.html | 133 + dft_8h_source.html | 2435 +++ dft_base_8h.html | 107 + dft_base_8h_source.html | 331 + dft_parameters_8h.html | 105 + dft_parameters_8h_source.html | 502 + dft_utils_8h.html | 158 + dft_utils_8h_source.html | 441 + dftd_8h.html | 126 + dftd_8h_source.html | 218 + dftfe_data_types_8h.html | 143 + dftfe_data_types_8h_source.html | 235 + dftfe_wrapper_8h.html | 106 + dftfe_wrapper_8h_source.html | 518 + dir_3e0e28f287a7eabeca6cb1997599e376.html | 94 + dir_7d1659e50fc771a7918f965a6f1404ad.html | 322 + dir_a5be7bbed3ff2f129951759fe96bf5d5.html | 94 + doc.svg | 12 + docd.svg | 12 + doxygen.css | 2045 ++ doxygen.svg | 28 + dynsections.js | 192 + eigen_solver_8h.html | 105 + eigen_solver_8h_source.html | 178 + elpa_scala_manager_8h.html | 108 + elpa_scala_manager_8h_source.html | 274 + energy_calculator_8h.html | 107 + energy_calculator_8h_source.html | 387 + eshelby_tensor_8h.html | 132 + eshelby_tensor_8h_source.html | 256 + eshelby_tensor_spin_polarized_8h.html | 111 + eshelby_tensor_spin_polarized_8h_source.html | 184 + exc_density_base_class_8h.html | 128 + exc_density_base_class_8h_source.html | 221 + exc_density_g_g_a_class_8h.html | 103 + exc_density_g_g_a_class_8h_source.html | 187 + exc_density_l_d_a_class_8h.html | 104 + exc_density_l_d_a_class_8h_source.html | 189 + exc_density_positivity_check_types_8h.html | 105 + ...sity_positivity_check_types_8h_source.html | 110 + exc_manager_8h.html | 105 + exc_manager_8h_source.html | 199 + exc_wavefunction_base_class_8h.html | 111 + exc_wavefunction_base_class_8h_source.html | 162 + exc_wavefunction_none_class_8h.html | 103 + exc_wavefunction_none_class_8h_source.html | 141 + file_readers_8h.html | 136 + file_readers_8h_source.html | 202 + files.html | 206 + folderclosed.svg | 11 + folderclosedd.svg | 11 + folderopen.svg | 17 + folderopend.svg | 12 + force_8h.html | 110 + force_8h_source.html | 1313 ++ force_wfc_contractions_8h.html | 107 + force_wfc_contractions_8h_source.html | 163 + force_wfc_contractions_device_8h.html | 88 + force_wfc_contractions_device_8h_source.html | 169 + functions.html | 127 + functions_b.html | 93 + functions_c.html | 244 + functions_d.html | 793 + functions_e.html | 106 + functions_enum.html | 83 + functions_eval.html | 88 + functions_f.html | 117 + functions_func.html | 108 + functions_func_b.html | 85 + functions_func_c.html | 217 + functions_func_d.html | 104 + functions_func_e.html | 101 + functions_func_f.html | 101 + functions_func_g.html | 224 + functions_func_h.html | 87 + functions_func_i.html | 135 + functions_func_j.html | 85 + functions_func_k.html | 89 + functions_func_l.html | 110 + functions_func_m.html | 115 + functions_func_n.html | 104 + functions_func_o.html | 92 + functions_func_p.html | 100 + functions_func_q.html | 84 + functions_func_r.html | 107 + functions_func_s.html | 122 + functions_func_t.html | 91 + functions_func_u.html | 97 + functions_func_v.html | 87 + functions_func_w.html | 93 + functions_func_x.html | 86 + functions_func_z.html | 91 + functions_func_~.html | 111 + functions_g.html | 238 + functions_h.html | 95 + functions_i.html | 149 + functions_j.html | 85 + functions_k.html | 97 + functions_l.html | 127 + functions_m.html | 159 + functions_n.html | 135 + functions_o.html | 104 + functions_p.html | 117 + functions_q.html | 84 + functions_r.html | 138 + functions_rela.html | 86 + functions_s.html | 156 + functions_t.html | 107 + functions_type.html | 92 + functions_u.html | 115 + functions_v.html | 91 + functions_vars.html | 102 + functions_vars_b.html | 91 + functions_vars_c.html | 106 + functions_vars_d.html | 770 + functions_vars_e.html | 88 + functions_vars_f.html | 97 + functions_vars_g.html | 95 + functions_vars_h.html | 91 + functions_vars_i.html | 96 + functions_vars_k.html | 90 + functions_vars_l.html | 99 + functions_vars_m.html | 127 + functions_vars_n.html | 114 + functions_vars_o.html | 95 + functions_vars_p.html | 99 + functions_vars_r.html | 111 + functions_vars_s.html | 112 + functions_vars_t.html | 99 + functions_vars_u.html | 101 + functions_vars_v.html | 86 + functions_vars_w.html | 95 + functions_vars_x.html | 86 + functions_vars_z.html | 85 + functions_w.html | 105 + functions_x.html | 89 + functions_z.html | 92 + functions_~.html | 111 + geo_opt_cell_8h.html | 108 + geo_opt_cell_8h_source.html | 298 + geo_opt_ion_8h.html | 108 + geo_opt_ion_8h_source.html | 289 + geometry_optimization_class_8h.html | 108 + geometry_optimization_class_8h_source.html | 196 + globals.html | 88 + globals_defs.html | 88 + headers_8h.html | 106 + headers_8h_source.html | 212 + hierarchy.html | 169 + index.html | 138 + jquery.js | 34 + kerker_solver_problem_8h.html | 105 + kerker_solver_problem_8h_source.html | 318 + kerker_solver_problem_device_8h.html | 88 + kerker_solver_problem_device_8h_source.html | 335 + kohn_sham_d_f_t_operator_8h.html | 107 + kohn_sham_d_f_t_operator_8h_source.html | 812 + kohn_sham_d_f_t_operator_device_8h.html | 107 + ..._sham_d_f_t_operator_device_8h_source.html | 996 + lapack__support_8h.html | 175 + lapack__support_8h_source.html | 370 + library_m_d_i_8h.html | 88 + library_m_d_i_8h_source.html | 133 + linear_algebra_operations_8h.html | 174 + linear_algebra_operations_8h_source.html | 937 + linear_algebra_operations_device_8h.html | 88 + ...r_algebra_operations_device_8h_source.html | 515 + linear_algebra_operations_internal_8h.html | 166 + ...algebra_operations_internal_8h_source.html | 419 + linear_solver_8h.html | 104 + linear_solver_8h_source.html | 158 + linear_solver_c_g_device_8h.html | 88 + linear_solver_c_g_device_8h_source.html | 211 + linear_solver_device_8h.html | 88 + linear_solver_device_8h_source.html | 157 + linear_solver_problem_device_8h.html | 88 + linear_solver_problem_device_8h_source.html | 190 + menu.js | 136 + menudata.js | 118 + mesh_gen_utils_8h.html | 116 + mesh_gen_utils_8h_source.html | 393 + mesh_movement_8h.html | 106 + mesh_movement_8h_source.html | 267 + mesh_movement_affine_transform_8h.html | 104 + mesh_movement_affine_transform_8h_source.html | 175 + mesh_movement_gaussian_8h.html | 104 + mesh_movement_gaussian_8h_source.html | 210 + minus.svg | 8 + minusd.svg | 8 + mixing_class_8h.html | 115 + mixing_class_8h_source.html | 262 + molecular_dynamics_class_8h.html | 108 + molecular_dynamics_class_8h_source.html | 624 + namespacedftfe.html | 15811 ++++++++++++++++ namespacedftfe_1_1_l_a_p_a_c_k_support.html | 659 + namespacedftfe_1_1basis.html | 286 + namespacedftfe_1_1data_types.html | 474 + namespacedftfe_1_1dft_utils.html | 1218 ++ namespacedftfe_1_1eshelby_tensor.html | 464 + namespacedftfe_1_1eshelby_tensor_s_p.html | 220 + namespacedftfe_1_1force.html | 255 + namespacedftfe_1_1linear_algebra.html | 139 + ...acedftfe_1_1linear_algebra_operations.html | 1162 ++ ...linear_algebra_operations_1_1internal.html | 1039 + namespacedftfe_1_1mesh_gen_utils.html | 339 + namespacedftfe_1_1pseudo_utils.html | 577 + namespacedftfe_1_1types.html | 110 + namespacedftfe_1_1utils.html | 5245 +++++ namespacedftfe_1_1utils_1_1mpi.html | 145 + namespacedftfe_1_1vector_tools.html | 788 + namespacemembers.html | 86 + namespacemembers_b.html | 85 + namespacemembers_c.html | 151 + namespacemembers_d.html | 109 + namespacemembers_e.html | 87 + namespacemembers_enum.html | 93 + namespacemembers_eval.html | 99 + namespacemembers_f.html | 88 + namespacemembers_func.html | 85 + namespacemembers_func_b.html | 84 + namespacemembers_func_c.html | 143 + namespacemembers_func_d.html | 90 + namespacemembers_func_e.html | 85 + namespacemembers_func_f.html | 87 + namespacemembers_func_g.html | 100 + namespacemembers_func_i.html | 90 + namespacemembers_func_l.html | 86 + namespacemembers_func_m.html | 90 + namespacemembers_func_n.html | 84 + namespacemembers_func_o.html | 87 + namespacemembers_func_p.html | 158 + namespacemembers_func_r.html | 92 + namespacemembers_func_s.html | 98 + namespacemembers_func_t.html | 85 + namespacemembers_func_u.html | 84 + namespacemembers_func_v.html | 84 + namespacemembers_func_w.html | 86 + namespacemembers_func_x.html | 86 + namespacemembers_g.html | 102 + namespacemembers_h.html | 85 + namespacemembers_i.html | 93 + namespacemembers_l.html | 92 + namespacemembers_m.html | 94 + namespacemembers_n.html | 89 + namespacemembers_o.html | 91 + namespacemembers_p.html | 159 + namespacemembers_r.html | 94 + namespacemembers_s.html | 101 + namespacemembers_t.html | 86 + namespacemembers_type.html | 108 + namespacemembers_u.html | 93 + namespacemembers_v.html | 86 + namespacemembers_vars.html | 102 + namespacemembers_w.html | 87 + namespacemembers_x.html | 86 + namespacemembers_z.html | 84 + 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 | 104 + non_linear_solver_8h_source.html | 243 + nonlinear_solver_problem_8h.html | 104 + nonlinear_solver_problem_8h_source.html | 241 + nudged_elastic_band_class_8h.html | 118 + nudged_elastic_band_class_8h_source.html | 445 + open.png | Bin 0 -> 123 bytes operator_8h.html | 109 + operator_8h_source.html | 497 + operator_device_8h.html | 88 + operator_device_8h_source.html | 563 + plus.svg | 9 + plusd.svg | 9 + poisson_solver_problem_8h.html | 105 + poisson_solver_problem_8h_source.html | 424 + poisson_solver_problem_device_8h.html | 88 + poisson_solver_problem_device_8h_source.html | 427 + process__grid_8h.html | 103 + process__grid_8h_source.html | 379 + pseudo_converter_8h.html | 107 + pseudo_converter_8h_source.html | 143 + pseudo_utils_8h.html | 118 + pseudo_utils_8h_source.html | 319 + run_parameters_8h.html | 108 + run_parameters_8h_source.html | 191 + scalapack_8templates_8h.html | 425 + scalapack_8templates_8h_source.html | 3150 +++ scalapack_wrapper_8h.html | 106 + scalapack_wrapper_8h_source.html | 1016 + search/all_0.js | 4 + search/all_1.js | 50 + search/all_10.js | 118 + search/all_11.js | 5 + search/all_12.js | 72 + search/all_13.js | 97 + search/all_14.js | 34 + search/all_15.js | 47 + search/all_16.js | 17 + search/all_17.js | 30 + search/all_18.js | 13 + search/all_19.js | 13 + search/all_1a.js | 31 + search/all_2.js | 16 + search/all_3.js | 240 + search/all_4.js | 796 + search/all_5.js | 44 + search/all_6.js | 54 + search/all_7.js | 182 + search/all_8.js | 21 + search/all_9.js | 82 + search/all_a.js | 5 + search/all_b.js | 21 + search/all_c.js | 68 + search/all_d.js | 135 + search/all_e.js | 67 + search/all_f.js | 36 + search/classes_0.js | 4 + search/classes_1.js | 7 + search/classes_10.js | 4 + search/classes_11.js | 4 + search/classes_2.js | 10 + search/classes_3.js | 13 + search/classes_4.js | 8 + search/classes_5.js | 6 + search/classes_6.js | 6 + search/classes_7.js | 5 + search/classes_8.js | 33 + search/classes_9.js | 6 + search/classes_a.js | 6 + search/classes_b.js | 7 + search/classes_c.js | 4 + search/classes_d.js | 4 + search/classes_e.js | 5 + search/classes_f.js | 4 + search/close.svg | 18 + search/defines_0.js | 8 + search/defines_1.js | 4 + search/defines_2.js | 4 + search/enums_0.js | 4 + search/enums_1.js | 4 + search/enums_2.js | 4 + search/enums_3.js | 6 + search/enums_4.js | 4 + search/enums_5.js | 5 + search/enums_6.js | 5 + search/enums_7.js | 4 + search/enums_8.js | 4 + search/enums_9.js | 4 + search/enumvalues_0.js | 5 + search/enumvalues_1.js | 11 + search/enumvalues_2.js | 5 + search/enumvalues_3.js | 4 + search/enumvalues_4.js | 7 + search/enumvalues_5.js | 8 + search/enumvalues_6.js | 5 + search/enumvalues_7.js | 7 + search/enumvalues_8.js | 10 + search/enumvalues_9.js | 5 + search/enumvalues_a.js | 5 + search/enumvalues_b.js | 7 + search/enumvalues_c.js | 9 + search/enumvalues_d.js | 4 + search/files_0.js | 4 + search/files_1.js | 10 + search/files_10.js | 5 + search/files_11.js | 5 + search/files_12.js | 5 + search/files_13.js | 4 + search/files_2.js | 28 + search/files_3.js | 16 + search/files_4.js | 9 + search/files_5.js | 6 + search/files_6.js | 4 + search/files_7.js | 7 + search/files_8.js | 13 + search/files_9.js | 23 + search/files_a.js | 8 + search/files_b.js | 6 + search/files_c.js | 9 + search/files_d.js | 4 + search/files_e.js | 5 + search/files_f.js | 7 + search/functions_0.js | 29 + search/functions_1.js | 6 + search/functions_10.js | 4 + search/functions_11.js | 36 + search/functions_12.js | 57 + search/functions_13.js | 13 + search/functions_14.js | 18 + search/functions_15.js | 8 + search/functions_16.js | 16 + search/functions_17.js | 9 + search/functions_18.js | 11 + search/functions_19.js | 31 + search/functions_2.js | 197 + search/functions_3.js | 31 + search/functions_4.js | 23 + search/functions_5.js | 25 + search/functions_6.js | 161 + search/functions_7.js | 7 + search/functions_8.js | 62 + search/functions_9.js | 5 + search/functions_a.js | 9 + search/functions_b.js | 33 + search/functions_c.js | 41 + search/functions_d.js | 25 + search/functions_e.js | 16 + search/functions_f.js | 95 + search/mag.svg | 24 + search/mag_d.svg | 24 + search/mag_sel.svg | 31 + search/mag_seld.svg | 31 + search/namespaces_0.js | 20 + 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/related_3.js | 4 + search/search.css | 291 + search/search.js | 840 + 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/variables_0.js | 23 + search/variables_1.js | 11 + search/variables_10.js | 31 + search/variables_11.js | 20 + search/variables_12.js | 22 + search/variables_13.js | 7 + search/variables_14.js | 15 + search/variables_15.js | 6 + search/variables_16.js | 6 + search/variables_2.js | 33 + search/variables_3.js | 694 + search/variables_4.js | 8 + search/variables_5.js | 17 + search/variables_6.js | 15 + search/variables_7.js | 11 + search/variables_8.js | 16 + search/variables_9.js | 10 + search/variables_a.js | 20 + search/variables_b.js | 47 + search/variables_c.js | 35 + search/variables_d.js | 17 + search/variables_e.js | 19 + search/variables_f.js | 31 + solve_vself_in_bins_device_8h.html | 88 + solve_vself_in_bins_device_8h_source.html | 177 + splitbar.png | Bin 0 -> 314 bytes splitbard.png | Bin 0 -> 282 bytes ...e_1_1pseudo_utils_1_1_element-members.html | 94 + structdftfe_1_1pseudo_utils_1_1_element.html | 218 + symmetry_8h.html | 112 + symmetry_8h_source.html | 302 + 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 | 105 + triangulation_manager_8h_source.html | 548 + upf_toxml_8cc.html | 125 + upf_toxml_8h.html | 110 + upf_toxml_8h_source.html | 155 + vector_utilities_8h.html | 139 + vector_utilities_8h_source.html | 547 + vself_bins_manager_8h.html | 127 + vself_bins_manager_8h_source.html | 502 + xml_todftfe_parser_8h.html | 118 + xml_todftfe_parser_8h_source.html | 227 + 769 files changed, 196467 insertions(+) create mode 100644 .nojekyll 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 _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_device_8h.html create mode 100644 _f_e_basis_operations_kernels_device_8h_source.html create mode 100644 _formulas.tex create mode 100644 _formulas_dark.tex 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_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_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_1basis_1_1_f_e_basis_operations.png create mode 100644 classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_9a9280e7dd92d071ae27bd4af430a9d1.html create mode 100644 classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html create mode 100644 classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.png create mode 100644 classdftfe_1_1basis_1_1_f_e_basis_operations_base-members.html create mode 100644 classdftfe_1_1basis_1_1_f_e_basis_operations_base.html create mode 100644 classdftfe_1_1basis_1_1_f_e_basis_operations_base.png 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_1kohn_sham_d_f_t_operator_class-members.html create mode 100644 classdftfe_1_1kohn_sham_d_f_t_operator_class.html create mode 100644 classdftfe_1_1kohn_sham_d_f_t_operator_class.png create mode 100644 classdftfe_1_1kohn_sham_d_f_t_operator_device_class-members.html create mode 100644 classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html create mode 100644 classdftfe_1_1kohn_sham_d_f_t_operator_device_class.png 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_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_1pseudo_utils_1_1xml_todftfe_parser-members.html create mode 100644 classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.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 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 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 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_8h.html create mode 100644 force_wfc_contractions_device_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 kohn_sham_d_f_t_operator_8h.html create mode 100644 kohn_sham_d_f_t_operator_8h_source.html create mode 100644 kohn_sham_d_f_t_operator_device_8h.html create mode 100644 kohn_sham_d_f_t_operator_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_l_a_p_a_c_k_support.html create mode 100644 namespacedftfe_1_1basis.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_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_u.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 open.png create mode 100644 operator_8h.html create mode 100644 operator_8h_source.html create mode 100644 operator_device_8h.html create mode 100644 operator_device_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_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/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/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_13.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/related_3.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/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 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 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 upf_toxml_8cc.html create mode 100644 upf_toxml_8h.html create mode 100644 upf_toxml_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 create mode 100644 xml_todftfe_parser_8h.html create mode 100644 xml_todftfe_parser_8h_source.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb 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..efb441920 --- /dev/null +++ b/_b_f_g_s_non_linear_solver_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..714330059 --- /dev/null +++ b/_b_f_g_s_non_linear_solver_8h_source.html @@ -0,0 +1,363 @@ + + + + + + + +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 upfToxml.cc:37
+ +
+ + + + diff --git a/_composite_data_8h.html b/_composite_data_8h.html new file mode 100644 index 000000000..6a8d78b95 --- /dev/null +++ b/_composite_data_8h.html @@ -0,0 +1,106 @@ + + + + + + + +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..c7d8aa513 --- /dev/null +++ b/_composite_data_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +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
+
39 getMPIDataType(MPI_Datatype *mpi_datatype) = 0;
+
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
+ +
Definition upfToxml.cc:37
+
+ + + + diff --git a/_data_type_overloads_8h.html b/_data_type_overloads_8h.html new file mode 100644 index 000000000..274c16024 --- /dev/null +++ b/_data_type_overloads_8h.html @@ -0,0 +1,127 @@ + + + + + + + +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< double > dftfe::utils::complexConj (const std::complex< double > x)
 
std::complex< float > dftfe::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..4d095ab30 --- /dev/null +++ b/_data_type_overloads_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + +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
+
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 upfToxml.cc:37
+
+ + + + diff --git a/_device_a_p_i_calls_8h.html b/_device_a_p_i_calls_8h.html new file mode 100644 index 000000000..53c325fbb --- /dev/null +++ b/_device_a_p_i_calls_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..e23299d71 --- /dev/null +++ b/_device_a_p_i_calls_8h_source.html @@ -0,0 +1,273 @@ + + + + + + + +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);
+
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 upfToxml.cc:37
+
+ + + + diff --git a/_device_blas_wrapper_8h.html b/_device_blas_wrapper_8h.html new file mode 100644 index 000000000..c23d5c48e --- /dev/null +++ b/_device_blas_wrapper_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..3acb8c5e6 --- /dev/null +++ b/_device_blas_wrapper_8h_source.html @@ -0,0 +1,420 @@ + + + + + + + +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 upfToxml.cc:37
+
+ + + + diff --git a/_device_data_type_overloads_8cu_8h.html b/_device_data_type_overloads_8cu_8h.html new file mode 100644 index 000000000..432ef7ccc --- /dev/null +++ b/_device_data_type_overloads_8cu_8h.html @@ -0,0 +1,319 @@ + + + + + + + +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)
 
int * dftfe::utils::makeDataTypeDeviceCompatible (int *a)
 
const int * dftfe::utils::makeDataTypeDeviceCompatible (const int *a)
 
long int * dftfe::utils::makeDataTypeDeviceCompatible (long int *a)
 
const long int * dftfe::utils::makeDataTypeDeviceCompatible (const long int *a)
 
unsigned int * dftfe::utils::makeDataTypeDeviceCompatible (unsigned int *a)
 
const unsigned int * dftfe::utils::makeDataTypeDeviceCompatible (const unsigned int *a)
 
unsigned long int * dftfe::utils::makeDataTypeDeviceCompatible (unsigned long int *a)
 
const unsigned long int * dftfe::utils::makeDataTypeDeviceCompatible (const unsigned long int *a)
 
double * dftfe::utils::makeDataTypeDeviceCompatible (double *a)
 
const double * dftfe::utils::makeDataTypeDeviceCompatible (const double *a)
 
float * dftfe::utils::makeDataTypeDeviceCompatible (float *a)
 
const float * dftfe::utils::makeDataTypeDeviceCompatible (const float *a)
 
cuDoubleComplex * dftfe::utils::makeDataTypeDeviceCompatible (std::complex< double > *a)
 
const cuDoubleComplex * dftfe::utils::makeDataTypeDeviceCompatible (const std::complex< double > *a)
 
cuFloatComplex * dftfe::utils::makeDataTypeDeviceCompatible (std::complex< float > *a)
 
const cuFloatComplex * dftfe::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..59f1c3421 --- /dev/null +++ b/_device_data_type_overloads_8cu_8h_source.html @@ -0,0 +1,1045 @@ + + + + + + + +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 {
+
31 return make_cuDoubleComplex(realPart, imagPart);
+
32 }
+
+
33
+
34 __forceinline__ __device__ cuFloatComplex
+
+ +
36 {
+
37 return make_cuFloatComplex(realPart, imagPart);
+
38 }
+
+
39
+
40 //
+
41 // copyValue for homogeneous types
+
42 //
+
43 __forceinline__ __device__ void
+
+
44 copyValue(double *a, const double b)
+
45 {
+
46 *a = b;
+
47 }
+
+
48
+
49 __forceinline__ __device__ void
+
+
50 copyValue(float *a, const float b)
+
51 {
+
52 *a = b;
+
53 }
+
+
54
+
55 __forceinline__ __device__ void
+
+
56 copyValue(cuDoubleComplex *a, const cuDoubleComplex b)
+
57 {
+
58 *a = b;
+
59 }
+
+
60
+
61 __forceinline__ __device__ void
+
+
62 copyValue(cuFloatComplex *a, const cuFloatComplex b)
+
63 {
+
64 *a = b;
+
65 }
+
+
66
+
67 //
+
68 // copyValue for heteregenous types
+
69 //
+
70 __forceinline__ __device__ void
+
+
71 copyValue(float *a, const double b)
+
72 {
+
73 *a = b;
+
74 }
+
+
75
+
76 __forceinline__ __device__ void
+
+
77 copyValue(double *a, const float b)
+
78 {
+
79 *a = b;
+
80 }
+
+
81
+
82 __forceinline__ __device__ void
+
+
83 copyValue(cuDoubleComplex *a, const cuFloatComplex b)
+
84 {
+
85 *a = make_cuDoubleComplex(b.x, b.y);
+
86 }
+
+
87
+
88 __forceinline__ __device__ void
+
+
89 copyValue(cuFloatComplex *a, const cuDoubleComplex b)
+
90 {
+
91 *a = make_cuFloatComplex(b.x, b.y);
+
92 }
+
+
93
+
94 __forceinline__ __device__ void
+
+
95 copyValue(cuDoubleComplex *a, const double b)
+
96 {
+
97 *a = make_cuDoubleComplex(b, 0);
+
98 }
+
+
99
+
100 __forceinline__ __device__ void
+
+
101 copyValue(cuFloatComplex *a, const float b)
+
102 {
+
103 *a = make_cuFloatComplex(b, 0);
+
104 }
+
+
105
+
106 __forceinline__ __device__ void
+
+
107 copyValue(cuDoubleComplex *a, const float b)
+
108 {
+
109 *a = make_cuDoubleComplex(b, 0);
+
110 }
+
+
111
+
112 __forceinline__ __device__ void
+
+
113 copyValue(cuFloatComplex *a, const double b)
+
114 {
+
115 *a = make_cuFloatComplex(b, 0);
+
116 }
+
+
117
+
118 // real part obverloads
+
119
+
120 __forceinline__ __device__ double
+
+ +
122 {
+
123 return a;
+
124 }
+
+
125
+
126 __forceinline__ __device__ float
+
+ +
128 {
+
129 return a;
+
130 }
+
+
131
+
132 __forceinline__ __device__ double
+
+
133 realPartDevice(cuDoubleComplex a)
+
134 {
+
135 return a.x;
+
136 }
+
+
137
+
138 __forceinline__ __device__ float
+
+
139 realPartDevice(cuFloatComplex a)
+
140 {
+
141 return a.x;
+
142 }
+
+
143
+
144 // imag part obverloads
+
145
+
146 __forceinline__ __device__ double
+
+ +
148 {
+
149 return 0;
+
150 }
+
+
151
+
152 __forceinline__ __device__ float
+
+ +
154 {
+
155 return 0;
+
156 }
+
+
157
+
158 __forceinline__ __device__ double
+
+
159 imagPartDevice(cuDoubleComplex a)
+
160 {
+
161 return a.y;
+
162 }
+
+
163
+
164 __forceinline__ __device__ float
+
+
165 imagPartDevice(cuFloatComplex a)
+
166 {
+
167 return a.y;
+
168 }
+
+
169
+
170 // abs obverloads
+
171
+
172 __forceinline__ __device__ double
+
+
173 abs(double a)
+
174 {
+
175 return fabs(a);
+
176 }
+
+
177
+
178 __forceinline__ __device__ float
+
+
179 abs(float a)
+
180 {
+
181 return fabs(a);
+
182 }
+
+
183
+
184 __forceinline__ __device__ double
+
+
185 abs(cuDoubleComplex a)
+
186 {
+
187 return cuCabs(a);
+
188 }
+
+
189
+
190 __forceinline__ __device__ float
+
+
191 abs(cuFloatComplex a)
+
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
+
212 __forceinline__ __device__ int
+
+
213 conj(int a)
+
214 {
+
215 return a;
+
216 }
+
+
217
+
218 __forceinline__ __device__ float
+
+
219 conj(float a)
+
220 {
+
221 return a;
+
222 }
+
+
223 __forceinline__ __device__ double
+
+
224 conj(double a)
+
225 {
+
226 return a;
+
227 }
+
+
228
+
229 __forceinline__ __device__ cuDoubleComplex
+
+
230 conj(cuDoubleComplex a)
+
231 {
+
232 return cuConj(a);
+
233 }
+
+
234
+
235 __forceinline__ __device__ cuFloatComplex
+
+
236 conj(cuFloatComplex a)
+
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
+
257 __forceinline__ __device__ int
+
+
258 mult(int a, int b)
+
259 {
+
260 return a * b;
+
261 }
+
+
262
+
263 __forceinline__ __device__ double
+
+
264 mult(double a, double b)
+
265 {
+
266 return a * b;
+
267 }
+
+
268
+
269 __forceinline__ __device__ float
+
+
270 mult(float a, float b)
+
271 {
+
272 return a * b;
+
273 }
+
+
274
+
275 __forceinline__ __device__ double
+
+
276 mult(float a, double b)
+
277 {
+
278 return a * b;
+
279 }
+
+
280
+
281 __forceinline__ __device__ double
+
+
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 //
+
292 __forceinline__ __device__ cuDoubleComplex
+
+
293 mult(cuDoubleComplex a, cuDoubleComplex b)
+
294 {
+
295 return cuCmul(a, b);
+
296 }
+
+
297
+
298 __forceinline__ __device__ cuFloatComplex
+
+
299 mult(cuFloatComplex a, cuFloatComplex b)
+
300 {
+
301 return cuCmulf(a, b);
+
302 }
+
+
303
+
304
+
305 //
+
306 // mult for complex heterogeneous types e.g. (cuDoubleComplex,
+
307 // cuFloatComplex)
+
308 //
+
309 __forceinline__ __device__ cuDoubleComplex
+
+
310 mult(cuFloatComplex a, cuDoubleComplex b)
+
311 {
+
312 return cuCmul(make_cuDoubleComplex(a.x, a.y), b);
+
313 }
+
+
314
+
315 __forceinline__ __device__ cuDoubleComplex
+
+
316 mult(cuDoubleComplex a, cuFloatComplex b)
+
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 //
+
325 __forceinline__ __device__ cuDoubleComplex
+
+
326 mult(double a, cuDoubleComplex b)
+
327 {
+
328 return make_cuDoubleComplex(a * b.x, a * b.y);
+
329 }
+
+
330
+
331 __forceinline__ __device__ cuDoubleComplex
+
+
332 mult(cuDoubleComplex a, double b)
+
333 {
+
334 return make_cuDoubleComplex(b * a.x, b * a.y);
+
335 }
+
+
336
+
337 __forceinline__ __device__ cuFloatComplex
+
+
338 mult(float a, cuFloatComplex b)
+
339 {
+
340 return make_cuFloatComplex(a * b.x, a * b.y);
+
341 }
+
+
342
+
343 __forceinline__ __device__ cuFloatComplex
+
+
344 mult(cuFloatComplex a, float b)
+
345 {
+
346 return make_cuFloatComplex(b * a.x, b * a.y);
+
347 }
+
+
348
+
349 __forceinline__ __device__ cuDoubleComplex
+
+
350 mult(double a, cuFloatComplex b)
+
351 {
+
352 return make_cuDoubleComplex(a * b.x, a * b.y);
+
353 }
+
+
354
+
355 __forceinline__ __device__ cuDoubleComplex
+
+
356 mult(cuFloatComplex a, double b)
+
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
+
374 __forceinline__ __device__ int
+
+
375 add(int a, int b)
+
376 {
+
377 return a + b;
+
378 }
+
+
379
+
380 __forceinline__ __device__ double
+
+
381 add(double a, double b)
+
382 {
+
383 return a + b;
+
384 }
+
+
385
+
386 __forceinline__ __device__ float
+
+
387 add(float a, float b)
+
388 {
+
389 return a + b;
+
390 }
+
+
391
+
392 __forceinline__ __device__ cuDoubleComplex
+
+
393 add(cuDoubleComplex a, cuDoubleComplex b)
+
394 {
+
395 return cuCadd(a, b);
+
396 }
+
+
397
+
398
+
399 __forceinline__ __device__ cuFloatComplex
+
+
400 add(cuFloatComplex a, cuFloatComplex b)
+
401 {
+
402 return cuCaddf(a, b);
+
403 }
+
+
404
+
405 __forceinline__ __device__ double
+
+
406 add(double a, float b)
+
407 {
+
408 return a + b;
+
409 }
+
+
410
+
411 __forceinline__ __device__ double
+
+
412 add(float a, double b)
+
413 {
+
414 return a + b;
+
415 }
+
+
416
+
417 __forceinline__ __device__ cuDoubleComplex
+
+
418 add(cuDoubleComplex a, cuFloatComplex b)
+
419 {
+
420 return cuCadd(a, make_cuDoubleComplex(b.x, b.y));
+
421 }
+
+
422
+
423
+
424 __forceinline__ __device__ cuDoubleComplex
+
+
425 add(cuFloatComplex a, cuDoubleComplex b)
+
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
+
443 __forceinline__ __device__ int
+
+
444 sub(int a, int b)
+
445 {
+
446 return a - b;
+
447 }
+
+
448
+
449 __forceinline__ __device__ double
+
+
450 sub(double a, double b)
+
451 {
+
452 return a - b;
+
453 }
+
+
454
+
455 __forceinline__ __device__ float
+
+
456 sub(float a, float b)
+
457 {
+
458 return a - b;
+
459 }
+
+
460
+
461 __forceinline__ __device__ cuDoubleComplex
+
+
462 sub(cuDoubleComplex a, cuDoubleComplex b)
+
463 {
+
464 return cuCsub(a, b);
+
465 }
+
+
466
+
467 __forceinline__ __device__ cuFloatComplex
+
+
468 sub(cuFloatComplex a, cuFloatComplex b)
+
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
+
485 __forceinline__ __device__ int
+
+
486 div(int a, int b)
+
487 {
+
488 return a / b;
+
489 }
+
+
490
+
491 __forceinline__ __device__ double
+
+
492 div(double a, double b)
+
493 {
+
494 return a / b;
+
495 }
+
+
496
+
497 __forceinline__ __device__ float
+
+
498 div(float a, float b)
+
499 {
+
500 return a / b;
+
501 }
+
+
502
+
503 __forceinline__ __device__ cuDoubleComplex
+
+
504 div(cuDoubleComplex a, cuDoubleComplex b)
+
505 {
+
506 return cuCdiv(a, b);
+
507 }
+
+
508
+
509 __forceinline__ __device__ cuFloatComplex
+
+
510 div(cuFloatComplex a, cuFloatComplex b)
+
511 {
+
512 return cuCdivf(a, b);
+
513 }
+
+
514
+
515 //
+
516 // div for complex heterogeneous types e.g. (cuDoubleComplex,
+
517 // cuFloatComplex)
+
518 //
+
519 __forceinline__ __device__ cuDoubleComplex
+
+
520 div(cuFloatComplex a, cuDoubleComplex b)
+
521 {
+
522 return cuCdiv(make_cuDoubleComplex(a.x, a.y), b);
+
523 }
+
+
524
+
525 __forceinline__ __device__ cuDoubleComplex
+
+
526 div(cuDoubleComplex a, cuFloatComplex b)
+
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 //
+
535 __forceinline__ __device__ cuDoubleComplex
+
+
536 div(double a, cuDoubleComplex b)
+
537 {
+
538 return make_cuDoubleComplex(a / b.x, a / b.y);
+
539 }
+
+
540
+
541 __forceinline__ __device__ cuDoubleComplex
+
+
542 div(cuDoubleComplex a, double b)
+
543 {
+
544 return make_cuDoubleComplex(b / a.x, b / a.y);
+
545 }
+
+
546
+
547 __forceinline__ __device__ cuFloatComplex
+
+
548 div(float a, cuFloatComplex b)
+
549 {
+
550 return make_cuFloatComplex(a / b.x, a / b.y);
+
551 }
+
+
552
+
553 __forceinline__ __device__ cuFloatComplex
+
+
554 div(cuFloatComplex a, float b)
+
555 {
+
556 return make_cuFloatComplex(b / a.x, b / a.y);
+
557 }
+
+
558
+
559 __forceinline__ __device__ cuDoubleComplex
+
+
560 div(double a, cuFloatComplex b)
+
561 {
+
562 return make_cuDoubleComplex(a / b.x, a / b.y);
+
563 }
+
+
564
+
565 __forceinline__ __device__ cuDoubleComplex
+
+
566 div(cuFloatComplex a, double b)
+
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
+
+
691 makeDataTypeDeviceCompatible(unsigned long int a)
+
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
+ +
__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 upfToxml.cc:37
+
+ + + + diff --git a/_device_data_type_overloads_8h.html b/_device_data_type_overloads_8h.html new file mode 100644 index 000000000..572cde24b --- /dev/null +++ b/_device_data_type_overloads_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..f4e1f4b0a --- /dev/null +++ b/_device_data_type_overloads_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +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..324d7b3db --- /dev/null +++ b/_device_data_type_overloads_8hip_8h.html @@ -0,0 +1,320 @@ + + + + + + + +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)
 
int * dftfe::utils::makeDataTypeDeviceCompatible (int *a)
 
const int * dftfe::utils::makeDataTypeDeviceCompatible (const int *a)
 
long int * dftfe::utils::makeDataTypeDeviceCompatible (long int *a)
 
const long int * dftfe::utils::makeDataTypeDeviceCompatible (const long int *a)
 
unsigned int * dftfe::utils::makeDataTypeDeviceCompatible (unsigned int *a)
 
const unsigned int * dftfe::utils::makeDataTypeDeviceCompatible (const unsigned int *a)
 
unsigned long int * dftfe::utils::makeDataTypeDeviceCompatible (unsigned long int *a)
 
const unsigned long int * dftfe::utils::makeDataTypeDeviceCompatible (const unsigned long int *a)
 
double * dftfe::utils::makeDataTypeDeviceCompatible (double *a)
 
const double * dftfe::utils::makeDataTypeDeviceCompatible (const double *a)
 
float * dftfe::utils::makeDataTypeDeviceCompatible (float *a)
 
const float * dftfe::utils::makeDataTypeDeviceCompatible (const float *a)
 
cuDoubleComplex * dftfe::utils::makeDataTypeDeviceCompatible (std::complex< double > *a)
 
const cuDoubleComplex * dftfe::utils::makeDataTypeDeviceCompatible (const std::complex< double > *a)
 
cuFloatComplex * dftfe::utils::makeDataTypeDeviceCompatible (std::complex< float > *a)
 
const cuFloatComplex * dftfe::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..af6462cb9 --- /dev/null +++ b/_device_data_type_overloads_8hip_8h_source.html @@ -0,0 +1,914 @@ + + + + + + + +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
+
+
58 copyValue(hipDoubleComplex *a, const hipDoubleComplex b)
+
59 {
+
60 *a = b;
+
61 }
+
+
62
+
63 __forceinline__ __device__ void
+
+
64 copyValue(hipFloatComplex *a, const hipFloatComplex b)
+
65 {
+
66 *a = b;
+
67 }
+
+
68
+
69 //
+
70 // copyValue for heteregenous types
+
71 //
+
72 __forceinline__ __device__ void
+
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
+
+
85 copyValue(hipDoubleComplex *a, const hipFloatComplex b)
+
86 {
+
87 *a = make_hipDoubleComplex(b.x, b.y);
+
88 }
+
+
89
+
90 __forceinline__ __device__ void
+
+
91 copyValue(hipFloatComplex *a, const hipDoubleComplex b)
+
92 {
+
93 *a = make_hipFloatComplex(b.x, b.y);
+
94 }
+
+
95
+
96 __forceinline__ __device__ void
+
+
97 copyValue(hipDoubleComplex *a, const double b)
+
98 {
+
99 *a = make_hipDoubleComplex(b, 0);
+
100 }
+
+
101
+
102 __forceinline__ __device__ void
+
+
103 copyValue(hipFloatComplex *a, const float b)
+
104 {
+
105 *a = make_hipFloatComplex(b, 0);
+
106 }
+
+
107
+
108 __forceinline__ __device__ void
+
+
109 copyValue(hipDoubleComplex *a, const float b)
+
110 {
+
111 *a = make_hipDoubleComplex(b, 0);
+
112 }
+
+
113
+
114 __forceinline__ __device__ void
+
+
115 copyValue(hipFloatComplex *a, const double b)
+
116 {
+
117 *a = make_hipFloatComplex(b, 0);
+
118 }
+
+
119
+
120 // real part obverloads
+
121
+
122 __forceinline__ __device__ double
+
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
+
+
135 realPartDevice(hipDoubleComplex a)
+
136 {
+
137 return a.x;
+
138 }
+
+
139
+
140 __forceinline__ __device__ float
+
+
141 realPartDevice(hipFloatComplex a)
+
142 {
+
143 return a.x;
+
144 }
+
+
145
+
146 // imag part obverloads
+
147
+
148 __forceinline__ __device__ double
+
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
+
+
161 imagPartDevice(hipDoubleComplex a)
+
162 {
+
163 return a.y;
+
164 }
+
+
165
+
166 __forceinline__ __device__ float
+
+
167 imagPartDevice(hipFloatComplex a)
+
168 {
+
169 return a.y;
+
170 }
+
+
171
+
172 // abs obverloads
+
173
+
174 __forceinline__ __device__ double
+
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
+
+
187 abs(hipDoubleComplex a)
+
188 {
+
189 return hipCabs(a);
+
190 }
+
+
191
+
192 __forceinline__ __device__ float
+
+
193 abs(hipFloatComplex a)
+
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
+
+
232 conj(hipDoubleComplex a)
+
233 {
+
234 return hipConj(a);
+
235 }
+
+
236
+
237 __forceinline__ __device__ hipFloatComplex
+
+
238 conj(hipFloatComplex a)
+
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
+
+
294 mult(hipDoubleComplex a, hipDoubleComplex b)
+
295 {
+
296 return hipCmul(a, b);
+
297 }
+
+
298
+
299 __forceinline__ __device__ hipFloatComplex
+
+
300 mult(hipFloatComplex a, hipFloatComplex b)
+
301 {
+
302 return hipCmulf(a, b);
+
303 }
+
+
304
+
305
+
306 //
+
307 // mult for complex heterogeneous types e.g. (hipDoubleComplex,
+
308 // hipFloatComplex)
+
309 //
+
310 __forceinline__ __device__ hipDoubleComplex
+
+
311 mult(hipFloatComplex a, hipDoubleComplex b)
+
312 {
+
313 return hipCmul(make_hipDoubleComplex(a.x, a.y), b);
+
314 }
+
+
315
+
316 __forceinline__ __device__ hipDoubleComplex
+
+
317 mult(hipDoubleComplex a, hipFloatComplex b)
+
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 //
+
326 __forceinline__ __device__ hipDoubleComplex
+
+
327 mult(double a, hipDoubleComplex b)
+
328 {
+
329 return make_hipDoubleComplex(a * b.x, a * b.y);
+
330 }
+
+
331
+
332 __forceinline__ __device__ hipDoubleComplex
+
+
333 mult(hipDoubleComplex a, double b)
+
334 {
+
335 return make_hipDoubleComplex(b * a.x, b * a.y);
+
336 }
+
+
337
+
338 __forceinline__ __device__ hipFloatComplex
+
+
339 mult(float a, hipFloatComplex b)
+
340 {
+
341 return make_hipFloatComplex(a * b.x, a * b.y);
+
342 }
+
+
343
+
344 __forceinline__ __device__ hipFloatComplex
+
+
345 mult(hipFloatComplex a, float b)
+
346 {
+
347 return make_hipFloatComplex(b * a.x, b * a.y);
+
348 }
+
+
349
+
350 __forceinline__ __device__ hipDoubleComplex
+
+
351 mult(double a, hipFloatComplex b)
+
352 {
+
353 return make_hipDoubleComplex(a * b.x, a * b.y);
+
354 }
+
+
355
+
356 __forceinline__ __device__ hipDoubleComplex
+
+
357 mult(hipFloatComplex a, double b)
+
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
+
+
394 add(hipDoubleComplex a, hipDoubleComplex b)
+
395 {
+
396 return hipCadd(a, b);
+
397 }
+
+
398
+
399
+
400 __forceinline__ __device__ hipFloatComplex
+
+
401 add(hipFloatComplex a, hipFloatComplex b)
+
402 {
+
403 return hipCaddf(a, b);
+
404 }
+
+
405
+
406 __forceinline__ __device__ double
+
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
+
+
419 add(hipDoubleComplex a, hipFloatComplex b)
+
420 {
+
421 return hipCadd(a, make_hipDoubleComplex(b.x, b.y));
+
422 }
+
+
423
+
424
+
425 __forceinline__ __device__ hipDoubleComplex
+
+
426 add(hipFloatComplex a, hipDoubleComplex b)
+
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
+
+
463 sub(hipDoubleComplex a, hipDoubleComplex b)
+
464 {
+
465 return hipCsub(a, b);
+
466 }
+
+
467
+
468 __forceinline__ __device__ hipFloatComplex
+
+
469 sub(hipFloatComplex a, hipFloatComplex b)
+
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
+
+
505 div(hipDoubleComplex a, hipDoubleComplex b)
+
506 {
+
507 return hipCdiv(a, b);
+
508 }
+
+
509
+
510 __forceinline__ __device__ hipFloatComplex
+
+
511 div(hipFloatComplex a, hipFloatComplex b)
+
512 {
+
513 return hipCdivf(a, b);
+
514 }
+
+
515
+
516 //
+
517 // div for complex heterogeneous types e.g. (hipDoubleComplex,
+
518 // hipFloatComplex)
+
519 //
+
520 __forceinline__ __device__ hipDoubleComplex
+
+
521 div(hipFloatComplex a, hipDoubleComplex b)
+
522 {
+
523 return hipCdiv(make_hipDoubleComplex(a.x, a.y), b);
+
524 }
+
+
525
+
526 __forceinline__ __device__ hipDoubleComplex
+
+
527 div(hipDoubleComplex a, hipFloatComplex b)
+
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 //
+
536 __forceinline__ __device__ hipDoubleComplex
+
+
537 div(double a, hipDoubleComplex b)
+
538 {
+
539 return make_hipDoubleComplex(a / b.x, a / b.y);
+
540 }
+
+
541
+
542 __forceinline__ __device__ hipDoubleComplex
+
+
543 div(hipDoubleComplex a, double b)
+
544 {
+
545 return make_hipDoubleComplex(b / a.x, b / a.y);
+
546 }
+
+
547
+
548 __forceinline__ __device__ hipFloatComplex
+
+
549 div(float a, hipFloatComplex b)
+
550 {
+
551 return make_hipFloatComplex(a / b.x, a / b.y);
+
552 }
+
+
553
+
554 __forceinline__ __device__ hipFloatComplex
+
+
555 div(hipFloatComplex a, float b)
+
556 {
+
557 return make_hipFloatComplex(b / a.x, b / a.y);
+
558 }
+
+
559
+
560 __forceinline__ __device__ hipDoubleComplex
+
+
561 div(double a, hipFloatComplex b)
+
562 {
+
563 return make_hipDoubleComplex(a / b.x, a / b.y);
+
564 }
+
+
565
+
566 __forceinline__ __device__ hipDoubleComplex
+
+
567 div(hipFloatComplex a, double b)
+
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
+ +
__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 upfToxml.cc:37
+
+ + + + diff --git a/_device_exceptions_8cu_8h.html b/_device_exceptions_8cu_8h.html new file mode 100644 index 000000000..b9662af46 --- /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..d6da639b1 --- /dev/null +++ b/_device_exceptions_8cu_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +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..1bbb1b48b --- /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..39241a54b --- /dev/null +++ b/_device_exceptions_8hip_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +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..74cb142dd --- /dev/null +++ b/_device_kernel_launcher_constants_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..f375eb80b --- /dev/null +++ b/_device_kernel_launcher_constants_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +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 upfToxml.cc:37
+
+ + + + diff --git a/_device_type_config_8cu_8h.html b/_device_type_config_8cu_8h.html new file mode 100644 index 000000000..c229355fa --- /dev/null +++ b/_device_type_config_8cu_8h.html @@ -0,0 +1,136 @@ + + + + + + + +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..ea7bdb6e1 --- /dev/null +++ b/_device_type_config_8cu_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +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 {
+
26 typedef cudaError_t deviceError_t;
+
27 typedef cudaStream_t deviceStream_t;
+
28 typedef cudaEvent_t deviceEvent_t;
+
29 typedef cuDoubleComplex deviceDoubleComplex;
+
30 typedef cuFloatComplex deviceFloatComplex;
+
31
+
32 // static consts
+
33 static const deviceError_t deviceSuccess = cudaSuccess;
+
34
+
35 // vendor blas related typedef and static consts
+
36 typedef cublasHandle_t deviceBlasHandle_t;
+
37 typedef cublasOperation_t deviceBlasOperation_t;
+
38 typedef cublasStatus_t deviceBlasStatus_t;
+
39 typedef cublasMath_t deviceBlasMath_t;
+
40
+
41 static const cublasOperation_t DEVICEBLAS_OP_N = CUBLAS_OP_N;
+
42 static const cublasOperation_t DEVICEBLAS_OP_T = CUBLAS_OP_T;
+
43 static const cublasOperation_t DEVICEBLAS_OP_C = CUBLAS_OP_C;
+
44 static const cublasMath_t DEVICEBLAS_TF32_TENSOR_OP_MATH =
+
45 CUBLAS_TF32_TENSOR_OP_MATH;
+
46 } // namespace utils
+
47} // namespace dftfe
+
48
+
49#endif // dftfeDeviceTypeConfig_cuh
+
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 upfToxml.cc:37
+
+ + + + diff --git a/_device_type_config_8h.html b/_device_type_config_8h.html new file mode 100644 index 000000000..3bf4cef56 --- /dev/null +++ b/_device_type_config_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..f9be67e23 --- /dev/null +++ b/_device_type_config_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +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..366ca2005 --- /dev/null +++ b/_device_type_config_8hip_8h.html @@ -0,0 +1,113 @@ + + + + + + + +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..69730a620 --- /dev/null +++ b/_device_type_config_8hip_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + +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
+
34 static const deviceError_t deviceSuccess = hipSuccess;
+
35
+
36 // vendor blas related typedef and static consts
+
37 typedef hipblasHandle_t deviceBlasHandle_t;
+
38 typedef hipblasOperation_t deviceBlasOperation_t;
+
39 typedef hipblasStatus_t deviceBlasStatus_t;
+
40
+
41 static const hipblasOperation_t DEVICEBLAS_OP_N = HIPBLAS_OP_N;
+
42 static const hipblasOperation_t DEVICEBLAS_OP_T = HIPBLAS_OP_T;
+
43 static const hipblasOperation_t DEVICEBLAS_OP_C = HIPBLAS_OP_C;
+
44 } // namespace utils
+
45} // namespace dftfe
+
46
+
47#endif // dftfeDeviceTypeConfig_hiph
+
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 upfToxml.cc:37
+
+ + + + diff --git a/_exceptions_8h.html b/_exceptions_8h.html new file mode 100644 index 000000000..066df95a9 --- /dev/null +++ b/_exceptions_8h.html @@ -0,0 +1,228 @@ + + + + + + + +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..7c17bee42 --- /dev/null +++ b/_exceptions_8h_source.html @@ -0,0 +1,251 @@ + + + + + + + +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
+ + +
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 upfToxml.cc:37
+
+ + + + diff --git a/_f_e_basis_operations_8h.html b/_f_e_basis_operations_8h.html new file mode 100644 index 000000000..aec9b8f7f --- /dev/null +++ b/_f_e_basis_operations_8h.html @@ -0,0 +1,137 @@ + + + + + + + +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 "../utils/FEBasisOperations.t.cc"
+#include "../utils/FEBasisOperationsHost.t.cc"
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
 
class  dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
 
class  dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
 
+ + + + + +

+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 + }
 
+ + + + + + + + + +

+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..b687d32b3 --- /dev/null +++ b/_f_e_basis_operations_8h_source.html @@ -0,0 +1,1230 @@ + + + + + + + +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
+
27namespace dftfe
+
28{
+
+
29 namespace basis
+
30 {
+
+ +
32 {
+ +
34
+
35 update_values = 0x0001,
+
36
+ +
38
+
39 update_transpose = 0x0004
+
40 };
+
+
41
+
42 inline UpdateFlags
+
+
43 operator|(const UpdateFlags f1, const UpdateFlags f2)
+
44 {
+
45 return static_cast<UpdateFlags>(static_cast<unsigned int>(f1) |
+
46 static_cast<unsigned int>(f2));
+
47 }
+
+
48
+
49
+
50
+
51 inline UpdateFlags &
+
+ +
53 {
+
54 f1 = f1 | f2;
+
55 return f1;
+
56 }
+
+
57
+
58
+
+
59 inline UpdateFlags operator&(const UpdateFlags f1, const UpdateFlags f2)
+
60 {
+
61 return static_cast<UpdateFlags>(static_cast<unsigned int>(f1) &
+
62 static_cast<unsigned int>(f2));
+
63 }
+
+
64
+
65
+
66 inline UpdateFlags &
+
+ +
68 {
+
69 f1 = f1 & f2;
+
70 return f1;
+
71 }
+
+
72
+
73
+
74 template <typename ValueTypeBasisCoeff,
+
75 typename ValueTypeBasisData,
+
76 dftfe::utils::MemorySpace memorySpace>
+
+ +
78 {
+
79 protected:
+ + + +
83
+
84 public:
+
85 /**
+
86 * @brief Constructor, fills required data structures using deal.ii's MatrixFree and AffineConstraints objects
+
87 * @param[in] matrixFreeData MatrixFree object.
+
88 * @param[in] constraintsVector std::vector of AffineConstraints, should
+
89 * be the same vector which was passed for the construction of the given
+
90 * MatrixFree object.
+
91 */
+ +
93 dealii::MatrixFree<3, ValueTypeBasisData> &matrixFreeData,
+
94 std::vector<const dealii::AffineConstraints<ValueTypeBasisData> *>
+
95 &constraintsVector);
+
96
+
97 /**
+
98 * @brief Default Destructor
+
99 */
+ +
101
+
102 /**
+
103 * @brief fills required data structures for the given dofHandlerID
+
104 * @param[in] dofHandlerID dofHandler index to be used for getting data
+
105 * from the MatrixFree object.
+
106 * @param[in] quadratureID std::vector of quadratureIDs to be used, should
+
107 * be the same IDs which were used during the construction of the given
+
108 * MatrixFree object.
+
109 */
+
110 void
+
111 init(const unsigned int & dofHandlerID,
+
112 const std::vector<unsigned int> &quadratureID,
+
113 const UpdateFlags updateFlags = update_values);
+
114
+
115 /**
+
116 * @brief sets internal variables and optionally resizes internal temp storage for interpolation operations
+
117 * @param[in] vecBlockSize block size to used for operations on vectors,
+
118 * this has to be set to the exact value before any such operations are
+
119 * called.
+
120 * @param[in] cellBlockSize block size to used for cells, this has to be
+
121 * set to a value greater than or equal to the required value before any
+
122 * such operations are called
+
123 * @param[in] quadratureID Quadrature index to be used.
+
124 * @param[in] isResizeTempStorage whether to resize internal tempstorage.
+
125 */
+
126 void
+
127 reinit(const unsigned int &vecBlockSize,
+
128 const unsigned int &cellBlockSize,
+
129 const unsigned int &quadratureID,
+
130 const bool isResizeTempStorage = true);
+
131
+
132 // private:
+
133#if defined(DFTFE_WITH_DEVICE)
+
134 using constraintInfoClass =
+
135 typename std::conditional<memorySpace ==
+ +
137 dftUtils::constraintMatrixInfoDevice,
+ +
139#else
+ +
141#endif
+
142
+
143
+
144
+
145 /**
+
146 * @brief Initializes indexset maps from process level indices to cell level indices for a single vector, also initializes cell index to cellid map.
+
147 */
+
148 void
+ +
150
+
151 /**
+
152 * @brief Initializes indexset maps from process level indices to cell level indices for multivectors.
+
153 */
+
154 void
+ +
156
+
157 /**
+
158 * @brief Initializes the constraintMatrixInfo object.
+
159 */
+
160 void
+ +
162
+
163 /**
+
164 * @brief Constructs the MPIPatternP2P object.
+
165 */
+
166 void
+ +
168
+
169 /**
+
170 * @brief Fill the shape function data and jacobian data in the ValueTypeBasisCoeff datatype.
+
171 */
+
172 void
+ +
174
+
175 /**
+
176 * @brief Fill the shape function data and jacobian data in the ValueTypeBasisData datatype.
+
177 */
+
178 void
+ +
180
+
181 /**
+
182 * @brief Resizes the internal temp storage to be sufficient for the vector and cell block sizes provided in reinit.
+
183 */
+
184 void
+ +
186
+
187 /**
+
188 * @brief Number of quadrature points per cell for the quadratureID set in reinit.
+
189 */
+
190 unsigned int
+ +
192
+
193 /**
+
194 * @brief Number of DoFs per cell for the dofHandlerID set in init.
+
195 */
+
196 unsigned int
+ +
198
+
199 /**
+
200 * @brief Number of locally owned cells on the current processor.
+
201 */
+
202 unsigned int
+
203 nCells() const;
+
204
+
205 /**
+
206 * @brief Number of DoFs on the current processor, locally owned + ghosts.
+
207 */
+
208 unsigned int
+ +
210
+
211 /**
+
212 * @brief Number of locally owned DoFs on the current processor.
+
213 */
+
214 unsigned int
+
215 nOwnedDofs() const;
+
216
+
217 /**
+
218 * @brief Shape function values at quadrature points.
+
219 * @param[in] transpose if false the the data is indexed as [iQuad *
+
220 * d_nDofsPerCell + iNode] and if true it is indexed as [iNode *
+
221 * d_nQuadsPerCell + iQuad].
+
222 */
+ +
224 shapeFunctionData(bool transpose = false) const;
+
225
+
226 /**
+
227 * @brief Shape function gradient values at quadrature points.
+
228 * @param[in] transpose if false the the data is indexed as [iDim *
+
229 * d_nQuadsPerCell * d_nDofsPerCell + iQuad * d_nDofsPerCell + iNode] and
+
230 * if true it is indexed as [iDim * d_nQuadsPerCell * d_nDofsPerCell +
+
231 * iNode * d_nQuadsPerCell + iQuad].
+
232 */
+ +
234 shapeFunctionGradientData(bool transpose = false) const;
+
235
+
236 /**
+
237 * @brief Inverse Jacobian matrices, for cartesian cells returns the
+
238 * diagonal elements of the inverse Jacobian matrices for each cell, for
+
239 * affine cells returns the 3x3 inverse Jacobians for each cell otherwise
+
240 * returns the 3x3 inverse Jacobians at each quad point for each cell.
+
241 */
+ + +
244
+
245 /**
+
246 * @brief determinant of Jacobian times the quadrature weight at each
+
247 * quad point for each cell.
+
248 */
+ +
250 JxW() const;
+
251
+
252 /**
+
253 * @brief Shape function values at quadrature points in ValueTypeBasisData.
+
254 * @param[in] transpose if false the the data is indexed as [iQuad *
+
255 * d_nDofsPerCell + iNode] and if true it is indexed as [iNode *
+
256 * d_nQuadsPerCell + iQuad].
+
257 */
+
258 template <typename A = ValueTypeBasisCoeff,
+
259 typename B = ValueTypeBasisData,
+
260 typename std::enable_if_t<std::is_same<A, B>::value, int> = 0>
+ +
262 shapeFunctionBasisData(bool transpose = false) const;
+
263 template <typename A = ValueTypeBasisCoeff,
+
264 typename B = ValueTypeBasisData,
+
265 typename std::enable_if_t<!std::is_same<A, B>::value, int> = 0>
+ +
267 shapeFunctionBasisData(bool transpose = false) const;
+
268
+
269 /**
+
270 * @brief Shape function gradient values at quadrature points in ValueTypeBasisData.
+
271 * @param[in] transpose if false the the data is indexed as [iDim *
+
272 * d_nQuadsPerCell * d_nDofsPerCell + iQuad * d_nDofsPerCell + iNode] and
+
273 * if true it is indexed as [iDim * d_nQuadsPerCell * d_nDofsPerCell +
+
274 * iNode * d_nQuadsPerCell + iQuad].
+
275 */
+
276 template <typename A = ValueTypeBasisCoeff,
+
277 typename B = ValueTypeBasisData,
+
278 typename std::enable_if_t<std::is_same<A, B>::value, int> = 0>
+ +
280 shapeFunctionGradientBasisData(bool transpose = false) const;
+
281 template <typename A = ValueTypeBasisCoeff,
+
282 typename B = ValueTypeBasisData,
+
283 typename std::enable_if_t<!std::is_same<A, B>::value, int> = 0>
+ +
285 shapeFunctionGradientBasisData(bool transpose = false) const;
+
286
+
287 /**
+
288 * @brief Inverse Jacobian matrices in ValueTypeBasisData, for cartesian cells returns the
+
289 * diagonal elements of the inverse Jacobian matrices for each cell, for
+
290 * affine cells returns the 3x3 inverse Jacobians for each cell otherwise
+
291 * returns the 3x3 inverse Jacobians at each quad point for each cell.
+
292 */
+
293 template <typename A = ValueTypeBasisCoeff,
+
294 typename B = ValueTypeBasisData,
+
295 typename std::enable_if_t<std::is_same<A, B>::value, int> = 0>
+ + +
298 template <typename A = ValueTypeBasisCoeff,
+
299 typename B = ValueTypeBasisData,
+
300 typename std::enable_if_t<!std::is_same<A, B>::value, int> = 0>
+ + +
303
+
304 /**
+
305 * @brief determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each
+
306 * quad point for each cell.
+
307 */
+
308 template <typename A = ValueTypeBasisCoeff,
+
309 typename B = ValueTypeBasisData,
+
310 typename std::enable_if_t<std::is_same<A, B>::value, int> = 0>
+ + +
313 template <typename A = ValueTypeBasisCoeff,
+
314 typename B = ValueTypeBasisData,
+
315 typename std::enable_if_t<!std::is_same<A, B>::value, int> = 0>
+ + +
318
+
319 /**
+
320 * @brief returns 2 if all cells on current processor are Cartesian,
+
321 * 1 if all cells on current processor are affine and 0 otherwise.
+
322 */
+
323 unsigned int
+ +
325
+
326 /**
+
327 * @brief returns the deal.ii cellID corresponing to given cell Index.
+
328 * @param[in] iElem cell Index
+
329 */
+
330 dealii::CellId
+
331 cellID(const unsigned int iElem) const;
+
332
+
333 /**
+
334 * @brief Creates a multivector.
+
335 * @param[in] blocksize Number of vectors in the multivector.
+
336 * @param[out] multiVector the created multivector.
+
337 */
+
338 void
+ +
340 const unsigned int blocksize,
+ +
342 &multiVector) const;
+
343
+
344 /**
+
345 * @brief Creates scratch multivectors.
+
346 * @param[in] vecBlockSize Number of vectors in the multivector.
+
347 * @param[out] numMultiVecs number of scratch multivectors needed with
+
348 * this vecBlockSize.
+
349 */
+
350 void
+
351 createScratchMultiVectors(const unsigned int vecBlockSize,
+
352 const unsigned int numMultiVecs = 1) const;
+
353
+
354 /**
+
355 * @brief Clears scratch multivectors.
+
356 */
+
357 void
+ +
359
+
360 /**
+
361 * @brief Gets scratch multivectors.
+
362 * @param[in] vecBlockSize Number of vectors in the multivector.
+
363 * @param[out] numMultiVecs index of the multivector among those with the
+
364 * same vecBlockSize.
+
365 */
+ +
367 getMultiVector(const unsigned int vecBlockSize,
+
368 const unsigned int index = 0) const;
+
369
+
370 /**
+
371 * @brief Apply constraints on given multivector.
+
372 * @param[inout] multiVector the given multivector.
+
373 */
+
374 void
+ + +
377 &multiVector) const;
+
378
+
379
+
380
+ +
382 std::vector<const dealii::AffineConstraints<ValueTypeBasisData> *>
+ +
384 const dealii::MatrixFree<3, ValueTypeBasisData> *d_matrixFreeDataPtr;
+ + + + + +
390 std::vector<dealii::CellId> d_cellIndexToCellIdMap;
+
391 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace>>
+ +
393 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace>>
+ +
395 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace>>
+ +
397 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace>>
+ +
399 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace>>
+ +
401 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace>>
+ +
403 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace>>
+ +
405
+
406 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace>>
+ +
408 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace>>
+ +
410 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace>>
+ +
412 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace>>
+ +
414 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace>>
+ +
416 std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace>>
+ +
418
+
419
+
420 mutable std::map<
+
421 unsigned int,
+
422 std::vector<
+ + +
425
+
426 std::vector<unsigned int> d_quadratureIDsVector;
+
427 unsigned int d_quadratureID;
+
428 std::vector<unsigned int> d_nQuadsPerCell;
+
429 unsigned int d_dofHandlerID;
+
430 unsigned int d_nVectors;
+
431 unsigned int d_nCells;
+
432 unsigned int d_cellsBlockSize;
+
433 unsigned int d_nDofsPerCell;
+
434 unsigned int d_localSize;
+
435 unsigned int d_locallyOwnedSize;
+ + + +
439
+
440 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
+ +
442 };
+
+
443 template <typename ValueTypeBasisCoeff,
+
444 typename ValueTypeBasisData,
+
445 dftfe::utils::MemorySpace memorySpace>
+
+
446 class FEBasisOperations : FEBasisOperationsBase<ValueTypeBasisCoeff,
+
447 ValueTypeBasisData,
+
448 memorySpace>
+
449 {};
+
+
450
+
451 template <typename ValueTypeBasisCoeff, typename ValueTypeBasisData>
+
+
452 class FEBasisOperations<ValueTypeBasisCoeff,
+
453 ValueTypeBasisData,
+ +
455 : public FEBasisOperationsBase<ValueTypeBasisCoeff,
+
456 ValueTypeBasisData,
+
457 dftfe::utils::MemorySpace::HOST>
+
458 {
+
459 public:
+ +
461 ValueTypeBasisCoeff,
+
462 ValueTypeBasisData,
+
463 dftfe::utils::MemorySpace::HOST>::FEBasisOperationsBase;
+
464
+
465 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
466 ValueTypeBasisData,
+ +
468 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
469 ValueTypeBasisData,
+ + +
472 ValueTypeBasisCoeff,
+
473 ValueTypeBasisData,
+ + +
476 ValueTypeBasisCoeff,
+
477 ValueTypeBasisData,
+ + +
480 ValueTypeBasisCoeff,
+
481 ValueTypeBasisData,
+ + +
484 ValueTypeBasisCoeff,
+
485 ValueTypeBasisData,
+ +
487 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
488 ValueTypeBasisData,
+ + +
491 ValueTypeBasisCoeff,
+
492 ValueTypeBasisData,
+ + +
495 ValueTypeBasisCoeff,
+
496 ValueTypeBasisData,
+ + +
499 ValueTypeBasisCoeff,
+
500 ValueTypeBasisData,
+ + +
503 ValueTypeBasisCoeff,
+
504 ValueTypeBasisData,
+ + +
507 ValueTypeBasisCoeff,
+
508 ValueTypeBasisData,
+ + +
511 ValueTypeBasisCoeff,
+
512 ValueTypeBasisData,
+ + +
515 ValueTypeBasisCoeff,
+
516 ValueTypeBasisData,
+ + +
519 ValueTypeBasisCoeff,
+
520 ValueTypeBasisData,
+ + +
523 ValueTypeBasisCoeff,
+
524 ValueTypeBasisData,
+ + +
527 ValueTypeBasisCoeff,
+
528 ValueTypeBasisData,
+ +
530 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
531 ValueTypeBasisData,
+ + +
534 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
535 ValueTypeBasisData,
+ + +
538 ValueTypeBasisCoeff,
+
539 ValueTypeBasisData,
+ + +
542 ValueTypeBasisCoeff,
+
543 ValueTypeBasisData,
+ + +
546 ValueTypeBasisCoeff,
+
547 ValueTypeBasisData,
+ +
549 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
550 ValueTypeBasisData,
+ + + +
554 ValueTypeBasisCoeff,
+
555 ValueTypeBasisData,
+ +
557
+
558
+
559 /**
+
560 * @brief Interpolate process level nodal data to cell level quadrature data.
+
561 * @param[in] nodalData process level nodal data, the multivector should
+
562 * already have ghost data and constraints should have been applied.
+
563 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
564 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
565 * @param[out] quadratureGradients Cell level quadrature gradients,
+
566 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
567 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
568 */
+
569 void
+ +
571 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
573 & nodalData,
+
574 ValueTypeBasisCoeff *quadratureValues,
+
575 ValueTypeBasisCoeff *quadratureGradients = NULL) const;
+
576
+
577 // FIXME Untested function
+
578 /**
+
579 * @brief Integrate cell level quadrature data times shape functions to process level nodal data.
+
580 * @param[in] quadratureValues Cell level quadrature values, indexed by
+
581 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
582 * @param[in] quadratureGradients Cell level quadrature gradients,
+
583 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
584 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
585 * @param[out] nodalData process level nodal data.
+
586 */
+
587 void
+ +
589 ValueTypeBasisCoeff *quadratureValues,
+
590 ValueTypeBasisCoeff *quadratureGradients,
+
591 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
593 &nodalData) const;
+
594
+
595 /**
+
596 * @brief Get cell level nodal data from process level nodal data.
+
597 * @param[in] nodalData process level nodal data, the multivector should
+
598 * already have ghost data and constraints should have been applied.
+
599 * @param[out] cellNodalDataPtr Cell level nodal values, indexed by
+
600 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
601 */
+
602 void
+ +
604 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
606 & nodalData,
+
607 ValueTypeBasisCoeff *cellNodalDataPtr) const;
+
608 // FIXME Untested function
+
609 /**
+
610 * @brief Accumulate cell level nodal data into process level nodal data.
+
611 * @param[in] cellNodalDataPtr Cell level nodal values, indexed by
+
612 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
613 * @param[out] nodalData process level nodal data.
+
614 */
+
615 void
+ +
617 const ValueTypeBasisCoeff *cellNodalDataPtr,
+
618 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
620 &nodalData) const;
+
621
+
622 /**
+
623 * @brief Interpolate process level nodal data to cell level quadrature data.
+
624 * @param[in] nodalData process level nodal data, the multivector should
+
625 * already have ghost data and constraints should have been applied.
+
626 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
627 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
628 * @param[out] quadratureGradients Cell level quadrature gradients,
+
629 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
630 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
631 * @param[in] cellRange the range of cells for which interpolation has to
+
632 * be done.
+
633 */
+
634 void
+ +
636 const dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
638 & nodalData,
+
639 ValueTypeBasisCoeff * quadratureValues,
+
640 ValueTypeBasisCoeff * quadratureGradients,
+
641 const std::pair<unsigned int, unsigned int> cellRange) const;
+
642
+
643 /**
+
644 * @brief Interpolate cell level nodal data to cell level quadrature data.
+
645 * @param[in] nodalData cell level nodal data, the multivector should
+
646 * already have ghost data and constraints should have been applied.
+
647 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
648 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
649 * @param[out] quadratureGradients Cell level quadrature gradients,
+
650 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
651 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
652 * @param[in] cellRange the range of cells for which interpolation has to
+
653 * be done.
+
654 */
+
655 void
+ +
657 const ValueTypeBasisCoeff * nodalData,
+
658 ValueTypeBasisCoeff * quadratureValues,
+
659 ValueTypeBasisCoeff * quadratureGradients,
+
660 const std::pair<unsigned int, unsigned int> cellRange) const;
+
661
+
662 // FIXME Untested function
+
663 /**
+
664 * @brief Integrate cell level quadrature data times shape functions to process level nodal data.
+
665 * @param[in] quadratureValues Cell level quadrature values, indexed by
+
666 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
667 * @param[in] quadratureGradients Cell level quadrature gradients,
+
668 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
669 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
670 * @param[out] nodalData process level nodal data.
+
671 * @param[in] cellRange the range of cells for which integration has to be
+
672 * done.
+
673 */
+
674 void
+ +
676 const ValueTypeBasisCoeff *quadratureValues,
+
677 const ValueTypeBasisCoeff *quadratureGradients,
+
678 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
680 & nodalData,
+
681 const std::pair<unsigned int, unsigned int> cellRange) const;
+
682
+
683
+
684 /**
+
685 * @brief Get cell level nodal data from process level nodal data.
+
686 * @param[in] nodalData process level nodal data, the multivector should
+
687 * already have ghost data and constraints should have been applied.
+
688 * @param[out] cellNodalDataPtr Cell level nodal values, indexed by
+
689 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
690 * @param[in] cellRange the range of cells for which extraction has to be
+
691 * done.
+
692 */
+
693 void
+ +
695 const dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
697 & nodalData,
+
698 ValueTypeBasisCoeff * cellNodalDataPtr,
+
699 const std::pair<unsigned int, unsigned int> cellRange) const;
+
700
+
701 // FIXME Untested function
+
702 /**
+
703 * @brief Accumulate cell level nodal data into process level nodal data.
+
704 * @param[in] cellNodalDataPtr Cell level nodal values, indexed by
+
705 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
706 * @param[out] nodalData process level nodal data.
+
707 * @param[in] cellRange the range of cells for which extraction has to be
+
708 * done.
+
709 */
+
710 void
+ +
712 const ValueTypeBasisCoeff *cellNodalDataPtr,
+
713 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
715 & nodalData,
+
716 const std::pair<unsigned int, unsigned int> cellRange) const;
+
717 };
+
+
718#if defined(DFTFE_WITH_DEVICE)
+
719 template <typename ValueTypeBasisCoeff, typename ValueTypeBasisData>
+
720 class FEBasisOperations<ValueTypeBasisCoeff,
+
721 ValueTypeBasisData,
+ +
723 : public FEBasisOperationsBase<ValueTypeBasisCoeff,
+
724 ValueTypeBasisData,
+
725 dftfe::utils::MemorySpace::DEVICE>
+
726 {
+
727 public:
+ +
729 ValueTypeBasisCoeff,
+
730 ValueTypeBasisData,
+
731 dftfe::utils::MemorySpace::DEVICE>::FEBasisOperationsBase;
+
732 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
733 ValueTypeBasisData,
+ + +
736 ValueTypeBasisCoeff,
+
737 ValueTypeBasisData,
+ + +
740 ValueTypeBasisCoeff,
+
741 ValueTypeBasisData,
+ + +
744 ValueTypeBasisCoeff,
+
745 ValueTypeBasisData,
+ + +
748 ValueTypeBasisCoeff,
+
749 ValueTypeBasisData,
+ +
751 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
752 ValueTypeBasisData,
+ + + +
756 ValueTypeBasisCoeff,
+
757 ValueTypeBasisData,
+ + +
760 ValueTypeBasisCoeff,
+
761 ValueTypeBasisData,
+ + +
764 ValueTypeBasisCoeff,
+
765 ValueTypeBasisData,
+ + +
768 ValueTypeBasisCoeff,
+
769 ValueTypeBasisData,
+ + +
772 ValueTypeBasisCoeff,
+
773 ValueTypeBasisData,
+ + +
776 ValueTypeBasisCoeff,
+
777 ValueTypeBasisData,
+ + +
780 ValueTypeBasisCoeff,
+
781 ValueTypeBasisData,
+ + +
784 ValueTypeBasisCoeff,
+
785 ValueTypeBasisData,
+ + +
788 ValueTypeBasisCoeff,
+
789 ValueTypeBasisData,
+ + +
792 ValueTypeBasisCoeff,
+
793 ValueTypeBasisData,
+ + +
796 ValueTypeBasisCoeff,
+
797 ValueTypeBasisData,
+ +
799 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
800 ValueTypeBasisData,
+ + +
803 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
804 ValueTypeBasisData,
+ + +
807 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
808 ValueTypeBasisData,
+ + +
811 ValueTypeBasisCoeff,
+
812 ValueTypeBasisData,
+ + +
815 ValueTypeBasisCoeff,
+
816 ValueTypeBasisData,
+ + +
819 ValueTypeBasisCoeff,
+
820 ValueTypeBasisData,
+ +
822 using FEBasisOperationsBase<ValueTypeBasisCoeff,
+
823 ValueTypeBasisData,
+ + + +
827 ValueTypeBasisCoeff,
+
828 ValueTypeBasisData,
+ +
830
+
831 // FIXME has to be removed in a future PR
+
832 /**
+
833 * @brief sets device blas handle for internal blas operations.
+
834 */
+
835 dftfe::utils::deviceBlasHandle_t *d_deviceBlasHandlePtr;
+
836 void
+
837 setDeviceBLASHandle(
+
838 dftfe::utils::deviceBlasHandle_t *deviceBlasHandlePtr);
+
839
+
840 // FIXME has to be removed in a future PR
+
841 /**
+
842 * @brief gets device blas handle for blas operations.
+
843 */
+ +
845 getDeviceBLASHandle();
+
846
+
847
+
848
+
849 /**
+
850 * @brief Interpolate process level nodal data to cell level quadrature data.
+
851 * @param[in] nodalData process level nodal data, the multivector should
+
852 * already have ghost data and constraints should have been applied.
+
853 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
854 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
855 * @param[out] quadratureGradients Cell level quadrature gradients,
+
856 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
857 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
858 */
+
859 void
+
860 interpolate(
+
861 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
863 & nodalData,
+
864 ValueTypeBasisCoeff *quadratureValues,
+
865 ValueTypeBasisCoeff *quadratureGradients = NULL) const;
+
866
+
867
+
868 // FIXME Untested function
+
869 /**
+
870 * @brief Integrate cell level quadrature data times shape functions to process level nodal data.
+
871 * @param[in] quadratureValues Cell level quadrature values, indexed by
+
872 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
873 * @param[in] quadratureGradients Cell level quadrature gradients,
+
874 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
875 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
876 * @param[out] nodalData process level nodal data.
+
877 */
+
878 void
+
879 integrateWithBasis(
+
880 ValueTypeBasisCoeff *quadratureValues,
+
881 ValueTypeBasisCoeff *quadratureGradients,
+
882 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
884 &nodalData) const;
+
885
+
886 /**
+
887 * @brief Get cell level nodal data from process level nodal 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] cellNodalDataPtr Cell level nodal values, indexed by
+
891 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
892 */
+
893 void
+
894 extractToCellNodalData(
+
895 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
897 & nodalData,
+
898 ValueTypeBasisCoeff *cellNodalDataPtr) const;
+
899
+
900 // FIXME Untested function
+
901 /**
+
902 * @brief Accumulate cell level nodal data into process level nodal data.
+
903 * @param[in] cellNodalDataPtr Cell level nodal values, indexed by
+
904 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
905 * @param[out] nodalData process level nodal data.
+
906 */
+
907 void
+
908 accumulateFromCellNodalData(
+
909 const ValueTypeBasisCoeff *cellNodalDataPtr,
+
910 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
912 &nodalData) const;
+
913
+
914 /**
+
915 * @brief Interpolate process level nodal data to cell level quadrature data.
+
916 * @param[in] nodalData process level nodal data, the multivector should
+
917 * already have ghost data and constraints should have been applied.
+
918 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
919 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
920 * @param[out] quadratureGradients Cell level quadrature gradients,
+
921 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
922 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
923 * @param[in] cellRange the range of cells for which interpolation has to
+
924 * be done.
+
925 */
+
926 void
+
927 interpolateKernel(
+ +
929 ValueTypeBasisCoeff,
+ +
931 ValueTypeBasisCoeff * quadratureValues,
+
932 ValueTypeBasisCoeff * quadratureGradients,
+
933 const std::pair<unsigned int, unsigned int> cellRange) const;
+
934
+
935 /**
+
936 * @brief Interpolate cell level nodal data to cell level quadrature data.
+
937 * @param[in] nodalData cell level nodal data, the multivector should
+
938 * already have ghost data and constraints should have been applied.
+
939 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
940 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
941 * @param[out] quadratureGradients Cell level quadrature gradients,
+
942 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
943 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
944 * @param[in] cellRange the range of cells for which interpolation has to
+
945 * be done.
+
946 */
+
947 void
+
948 interpolateKernel(
+
949 const ValueTypeBasisCoeff * nodalData,
+
950 ValueTypeBasisCoeff * quadratureValues,
+
951 ValueTypeBasisCoeff * quadratureGradients,
+
952 const std::pair<unsigned int, unsigned int> cellRange) const;
+
953
+
954 // FIXME Untested function
+
955 /**
+
956 * @brief Integrate cell level quadrature data times shape functions to process level nodal data.
+
957 * @param[in] quadratureValues Cell level quadrature values, indexed by
+
958 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
959 * @param[in] quadratureGradients Cell level quadrature gradients,
+
960 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
961 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
962 * @param[out] nodalData process level nodal data.
+
963 * @param[in] cellRange the range of cells for which integration has to be
+
964 * done.
+
965 */
+
966 void
+
967 integrateWithBasisKernel(
+
968 const ValueTypeBasisCoeff *quadratureValues,
+
969 const ValueTypeBasisCoeff *quadratureGradients,
+
970 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
972 & nodalData,
+
973 const std::pair<unsigned int, unsigned int> cellRange) const;
+
974
+
975
+
976 /**
+
977 * @brief Get cell level nodal data from process level nodal data.
+
978 * @param[in] nodalData process level nodal data, the multivector should
+
979 * already have ghost data and constraints should have been applied.
+
980 * @param[out] cellNodalDataPtr Cell level nodal values, indexed by
+
981 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
982 * @param[in] cellRange the range of cells for which extraction has to be
+
983 * done.
+
984 */
+
985 void
+
986 extractToCellNodalDataKernel(
+ +
988 ValueTypeBasisCoeff,
+ +
990 ValueTypeBasisCoeff * cellNodalDataPtr,
+
991 const std::pair<unsigned int, unsigned int> cellRange) const;
+
992
+
993 // FIXME Untested function
+
994 /**
+
995 * @brief Accumulate cell level nodal data into process level nodal data.
+
996 * @param[in] cellNodalDataPtr Cell level nodal values, indexed by
+
997 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
998 * @param[out] nodalData process level nodal data.
+
999 * @param[in] cellRange the range of cells for which extraction has to be
+
1000 * done.
+
1001 */
+
1002 void
+
1003 accumulateFromCellNodalDataKernel(
+
1004 const ValueTypeBasisCoeff *cellNodalDataPtr,
+
1005 dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff,
+ +
1007 & nodalData,
+
1008 const std::pair<unsigned int, unsigned int> cellRange) const;
+
1009 };
+
1010#endif
+
1011 } // end of namespace basis
+
+
1012} // end of namespace dftfe
+
1013#include "../utils/FEBasisOperations.t.cc"
+
1014#include "../utils/FEBasisOperationsHost.t.cc"
+
1015#if defined(DFTFE_WITH_DEVICE)
+
1016# include "../utils/FEBasisOperationsDevice.t.cc"
+
1017#endif
+
1018
+
1019#endif // dftfeBasisOperations_h
+ + +
void extractToCellNodalData(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr) const
Get cell level nodal data from process level nodal data.
+
void interpolate(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients=NULL) 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 accumulateFromCellNodalData(const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData) const
Accumulate cell level nodal data into process level nodal data.
+
void extractToCellNodalDataKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &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, dftfe::utils::MemorySpace::HOST > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) const
Accumulate cell level nodal data into process level nodal data.
+
void integrateWithBasis(ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData) const
Integrate cell level quadrature data times shape functions to process level nodal data.
+
void integrateWithBasisKernel(const ValueTypeBasisCoeff *quadratureValues, const ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) const
Integrate cell level quadrature data times shape functions to process level nodal data.
+
void interpolateKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const
Interpolate process level nodal data to cell level quadrature data.
+
Definition FEBasisOperations.h:78
+
dealii::CellId cellID(const unsigned int iElem) const
returns the deal.ii cellID corresponing to given cell Index.
+
unsigned int d_quadratureID
Definition FEBasisOperations.h:427
+
std::vector< unsigned int > d_nQuadsPerCell
Definition FEBasisOperations.h:428
+
void resizeTempStorage()
Resizes the internal temp storage to be sufficient for the vector and cell block sizes provided in re...
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempCellNodalData
Definition FEBasisOperations.h:81
+
std::vector< dealii::CellId > d_cellIndexToCellIdMap
Definition FEBasisOperations.h:390
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_JxWBasisData
Definition FEBasisOperations.h:409
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionGradientBasisData(bool transpose=false) const
Shape function gradient values at quadrature points in ValueTypeBasisData.
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataInternalLayout
Definition FEBasisOperations.h:398
+
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & shapeFunctionData(bool transpose=false) const
Shape function values at quadrature points.
+
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & JxW() const
determinant of Jacobian times the quadrature weight at each quad point for each cell.
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataTranspose
Definition FEBasisOperations.h:404
+
void initializeShapeFunctionAndJacobianData()
Fill the shape function data and jacobian data in the ValueTypeBasisCoeff datatype.
+
void createScratchMultiVectors(const unsigned int vecBlockSize, const unsigned int numMultiVecs=1) const
Creates scratch multivectors.
+
bool areAllCellsAffine
Definition FEBasisOperations.h:436
+
unsigned int d_nVectors
Definition FEBasisOperations.h:430
+
std::map< unsigned int, std::vector< dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > > > scratchMultiVectors
Definition FEBasisOperations.h:424
+
unsigned int cellsTypeFlag() const
returns 2 if all cells on current processor are Cartesian, 1 if all cells on current processor are af...
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_JxWData
Definition FEBasisOperations.h:394
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisDataTranspose
Definition FEBasisOperations.h:417
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionBasisData(bool transpose=false) const
Shape function values at quadrature points in ValueTypeBasisData.
+
unsigned int nOwnedDofs() const
Number of locally owned DoFs on the current processor.
+
void initializeFlattenedIndexMaps()
Initializes indexset maps from process level indices to cell level indices for multivectors.
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisDataTranspose
Definition FEBasisOperations.h:415
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsData
Definition FEBasisOperations.h:81
+
std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > * d_constraintsVector
Definition FEBasisOperations.h:383
+
void reinit(const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorage=true)
sets internal variables and optionally resizes internal temp storage for interpolation operations
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseJacobiansBasisData() const
Inverse Jacobian matrices in ValueTypeBasisData, for cartesian cells returns the diagonal elements of...
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & JxWBasisData() const
determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each quad point for each...
+
std::vector< unsigned int > d_quadratureIDsVector
Definition FEBasisOperations.h:426
+
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & shapeFunctionGradientData(bool transpose=false) const
Shape function gradient values at quadrature points.
+
void distribute(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) const
Apply constraints on given multivector.
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsDataNonAffine
Definition FEBasisOperations.h:82
+
bool areAllCellsCartesian
Definition FEBasisOperations.h:437
+
void clearScratchMultiVectors() const
Clears scratch multivectors.
+
unsigned int d_nDofsPerCell
Definition FEBasisOperations.h:433
+
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & getMultiVector(const unsigned int vecBlockSize, const unsigned int index=0) const
Gets scratch multivectors.
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisData
Definition FEBasisOperations.h:413
+
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > d_flattenedCellDofIndexToProcessDofIndexMap
Definition FEBasisOperations.h:389
+
unsigned int nDofsPerCell() const
Number of DoFs per cell for the dofHandlerID set in init.
+
UpdateFlags d_updateFlags
Definition FEBasisOperations.h:438
+
unsigned int nRelaventDofs() const
Number of DoFs on the current processor, locally owned + ghosts.
+
unsigned int d_locallyOwnedSize
Definition FEBasisOperations.h:435
+
dftfe::utils::MemoryStorage< dftfe::global_size_type, dftfe::utils::MemorySpace::HOST > d_cellDofIndexToProcessDofIndexMap
Definition FEBasisOperations.h:387
+
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & inverseJacobians() const
Inverse Jacobian matrices, for cartesian cells returns the diagonal elements of the inverse Jacobian ...
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_inverseJacobianData
Definition FEBasisOperations.h:392
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientData
Definition FEBasisOperations.h:400
+
unsigned int nCells() const
Number of locally owned cells on the current processor.
+
void initializeConstraints()
Initializes the constraintMatrixInfo object.
+
unsigned int d_cellsBlockSize
Definition FEBasisOperations.h:432
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_inverseJacobianBasisData
Definition FEBasisOperations.h:407
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionDataTranspose
Definition FEBasisOperations.h:402
+
unsigned int d_localSize
Definition FEBasisOperations.h:434
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionData
Definition FEBasisOperations.h:396
+
unsigned int nQuadsPerCell() const
Number of quadrature points per cell for the quadratureID set in reinit.
+
unsigned int d_nCells
Definition FEBasisOperations.h:431
+
FEBasisOperationsBase(dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)
Constructor, fills required data structures using deal.ii's MatrixFree and AffineConstraints objects.
+
const dealii::MatrixFree< 3, ValueTypeBasisData > * d_matrixFreeDataPtr
Definition FEBasisOperations.h:384
+
void init(const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const UpdateFlags updateFlags=update_values)
fills required data structures for the given dofHandlerID
+
void createMultiVector(const unsigned int blocksize, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) const
Creates a multivector.
+
constraintInfoClass d_constraintInfo
Definition FEBasisOperations.h:381
+
void initializeMPIPattern()
Constructs the MPIPatternP2P object.
+
unsigned int d_dofHandlerID
Definition FEBasisOperations.h:429
+
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisData
Definition FEBasisOperations.h:411
+
void initializeIndexMaps()
Initializes indexset maps from process level indices to cell level indices for a single vector,...
+
~FEBasisOperationsBase()=default
Default Destructor.
+
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P
Definition FEBasisOperations.h:441
+
void initializeShapeFunctionAndJacobianBasisData()
Fill the shape function data and jacobian data in the ValueTypeBasisData datatype.
+
Definition FEBasisOperations.h:449
+
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
+
Definition MemoryStorage.h:33
+ + + +
UpdateFlags operator|(const UpdateFlags f1, const UpdateFlags f2)
Definition FEBasisOperations.h:43
+
UpdateFlags & operator|=(UpdateFlags &f1, const UpdateFlags f2)
Definition FEBasisOperations.h:52
+
UpdateFlags
Definition FEBasisOperations.h:32
+
@ update_values
Definition FEBasisOperations.h:35
+
@ update_transpose
Definition FEBasisOperations.h:39
+
@ update_default
Definition FEBasisOperations.h:33
+
@ update_gradients
Definition FEBasisOperations.h:37
+
UpdateFlags operator&(const UpdateFlags f1, const UpdateFlags f2)
Definition FEBasisOperations.h:59
+
UpdateFlags & operator&=(UpdateFlags &f1, const UpdateFlags f2)
Definition FEBasisOperations.h:67
+
MemorySpace
Definition MemorySpaceType.h:33
+ + +
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
Definition upfToxml.cc:37
+
unsigned long int global_size_type
Definition TypeConfig.h:7
+
+ + + + diff --git a/_f_e_basis_operations_kernels_device_8h.html b/_f_e_basis_operations_kernels_device_8h.html new file mode 100644 index 000000000..33dfabbc2 --- /dev/null +++ b/_f_e_basis_operations_kernels_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: workspace/include/FEBasisOperationsKernelsDevice.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
FEBasisOperationsKernelsDevice.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_f_e_basis_operations_kernels_device_8h_source.html b/_f_e_basis_operations_kernels_device_8h_source.html new file mode 100644 index 000000000..5a7f0d84d --- /dev/null +++ b/_f_e_basis_operations_kernels_device_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +DFT-FE: workspace/include/FEBasisOperationsKernelsDevice.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
FEBasisOperationsKernelsDevice.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 dftfeFEBasisOperationsKernelsDevice_h
+
18#define dftfeFEBasisOperationsKernelsDevice_h
+
19
+
20#ifdef DFTFE_WITH_DEVICE
+
21# include <TypeConfig.h>
+
22
+
23namespace dftfe
+
24{
+
25 namespace basis
+
26 {
+
27 namespace FEBasisOperationsKernelsDevice
+
28 {
+
29 /**
+
30 * @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 *
+
31 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
32 * @param[in] numVecs number of vectors.
+
33 * @param[in] numQuads number of quadrature points per cell.
+
34 * @param[in] numCells number of locally owned cells.
+
35 * @param[in] copyFromVec source data pointer.
+
36 * @param[out] copyToVec destination data pointer.
+
37 */
+
38 template <typename ValueType1, typename ValueType2>
+
39 void
+
40 reshapeNonAffineCase(const dftfe::size_type numVecs,
+
41 const dftfe::size_type numQuads,
+
42 const dftfe::size_type numCells,
+
43 const ValueType1 * copyFromVec,
+
44 ValueType2 * copyToVec);
+
45
+
46
+
47 }; // namespace FEBasisOperationsKernelsDevice
+
48 } // namespace basis
+
49} // namespace dftfe
+
50
+
51#endif // DFTFE_WITH_DEVICE
+
52#endif // dftfeFEBasisOperationsKernelsDevice_h
+ +
Definition upfToxml.cc:37
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + 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/_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..b78f77b29 --- /dev/null +++ b/_l_b_f_g_s_non_linear_solver_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..c6c5c87d0 --- /dev/null +++ b/_l_b_f_g_s_non_linear_solver_8h_source.html @@ -0,0 +1,361 @@ + + + + + + + +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,
+
53 const MPI_Comm & mpi_comm_parent,
+
54 const bool isCurvatureOnlyLineSearchStoppingCondition = false);
+
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,
+
148 nonlinearSolverProblem & problem);
+
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
+ +
Definition upfToxml.cc:37
+ +
+ + + + diff --git a/_m_d_i_engine_8h.html b/_m_d_i_engine_8h.html new file mode 100644 index 000000000..b9ca8ab78 --- /dev/null +++ b/_m_d_i_engine_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..c922c2a75 --- /dev/null +++ b/_m_d_i_engine_8h_source.html @@ -0,0 +1,242 @@ + + + + + + + +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 upfToxml.cc:37
+
+ + + + 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..354bdcf8a --- /dev/null +++ b/_m_p_i_communicator_p2_p_8h.html @@ -0,0 +1,112 @@ + + + + + + + +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

class  dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
 
+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
namespace  dftfe::utils::mpi
 
+
+ + + + 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..1c155d3db --- /dev/null +++ b/_m_p_i_communicator_p2_p_8h_source.html @@ -0,0 +1,242 @@ + + + + + + + +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
+
32
+
33namespace dftfe
+
34{
+
35 namespace utils
+
36 {
+
+
37 namespace mpi
+
38 {
+
39 template <typename ValueType, MemorySpace memorySpace>
+
+ +
41 {
+
42 public:
+ +
44 std::shared_ptr<const MPIPatternP2P<memorySpace>> mpiPatternP2P,
+
45 const size_type blockSize);
+
46
+
47 void
+ +
49 const size_type communicationChannel = 0);
+
50
+
51 void
+ + +
54 const size_type communicationChannel = 0);
+
55
+
56
+
57 void
+ +
59 const size_type communicationChannel = 0);
+
60
+
61 void
+ +
63
+
64 void
+ + +
67 const size_type communicationChannel = 0);
+
68
+
69 void
+ + +
72
+
73 std::shared_ptr<const MPIPatternP2P<memorySpace>>
+ +
75
+
76 int
+
77 getBlockSize() const;
+
78
+
79 private:
+
80 std::shared_ptr<const MPIPatternP2P<memorySpace>> d_mpiPatternP2P;
+
81
+ +
83
+ +
85
+ +
87
+ +
89
+ +
91
+ +
93
+ +
95
+ +
97
+
98
+
99#ifdef DFTFE_WITH_DEVICE
+
100 std::shared_ptr<MemoryStorage<ValueType, MemorySpace::HOST_PINNED>>
+
101 d_ghostDataCopyHostPinnedPtr;
+
102
+
103 std::shared_ptr<MemoryStorage<ValueType, MemorySpace::HOST_PINNED>>
+
104 d_sendRecvBufferHostPinnedPtr;
+
105#endif // DFTFE_WITH_DEVICE
+
106
+
107 std::vector<MPI_Request> d_requestsUpdateGhostValues;
+
108 std::vector<MPI_Request> d_requestsAccumulateAddLocallyOwned;
+ +
110 };
+
+
111
+
112 } // namespace mpi
+
+
113 } // namespace utils
+
114} // namespace dftfe
+
115#endif // dftfeMPICommunicatorP2P_h
+ + + + + +
Definition MemoryStorage.h:33
+
Definition MPICommunicatorP2P.h:41
+
std::shared_ptr< const MPIPatternP2P< memorySpace > > getMPIPatternP2P() const
+
size_type d_ghostSize
Definition MPICommunicatorP2P.h:86
+
void accumulateAddLocallyOwnedEnd(MemoryStorage< ValueType, memorySpace > &dataArray)
+
MemoryStorage< ValueType, memorySpace > d_sendRecvBuffer
Definition MPICommunicatorP2P.h:88
+
std::vector< MPI_Request > d_requestsAccumulateAddLocallyOwned
Definition MPICommunicatorP2P.h:108
+
MemoryStorage< double, memorySpace > d_tempDoubleImagArrayForAtomics
Definition MPICommunicatorP2P.h:92
+
MPI_Comm d_mpiCommunicator
Definition MPICommunicatorP2P.h:109
+
MemoryStorage< float, memorySpace > d_tempFloatRealArrayForAtomics
Definition MPICommunicatorP2P.h:94
+
std::shared_ptr< const MPIPatternP2P< memorySpace > > d_mpiPatternP2P
Definition MPICommunicatorP2P.h:80
+
std::vector< MPI_Request > d_requestsUpdateGhostValues
Definition MPICommunicatorP2P.h:107
+
void updateGhostValuesBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
+
MemoryStorage< double, memorySpace > d_tempDoubleRealArrayForAtomics
Definition MPICommunicatorP2P.h:90
+ +
size_type d_locallyOwnedSize
Definition MPICommunicatorP2P.h:84
+
size_type d_blockSize
Definition MPICommunicatorP2P.h:82
+
MemoryStorage< float, memorySpace > d_tempFloatImagArrayForAtomics
Definition MPICommunicatorP2P.h:96
+
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)
+
void accumulateAddLocallyOwnedBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
+
void updateGhostValues(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
+
A class template to store the communication pattern (i.e., which entries/nodes to receive from which ...
Definition MPIPatternP2P.h:57
+ +
Definition upfToxml.cc:37
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + 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..41ddfef45 --- /dev/null +++ b/_m_p_i_communicator_p2_p_kernels_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..2b23ac3f3 --- /dev/null +++ b/_m_p_i_communicator_p2_p_kernels_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + +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
+
30namespace dftfe
+
31{
+
32 namespace utils
+
33 {
+
34 template <typename ValueType, dftfe::utils::MemorySpace memorySpace>
+
+ +
36 {
+
37 public:
+ +
39
+
40 /**
+
41 * @brief Function template for architecture adaptable gather kernel to send buffer
+
42 * @tparam ValueType the type of the number
+
43 * @tparam memorySpace
+
44 * @param[in] dataArray data array with locally owned entries
+
45 * @param[in] ownedLocalIndicesForTargetProcs
+
46 * @param[in] blockSize
+
47 * @param[out] sendBuffer
+
48 */
+
49 static void
+ + +
52 const SizeTypeVector & ownedLocalIndicesForTargetProcs,
+
53 const size_type blockSize,
+ +
55
+
56 /**
+
57 * @brief Function template for architecture adaptable accumlate kernel from recv buffer
+
58 * @tparam ValueType the type of the number
+
59 * @tparam memorySpace
+
60 * @param[in] recvBuffer
+
61 * @param[in] ownedLocalIndicesForTargetProcs
+
62 * @param[in] blockSize
+
63 * @param[out] dataArray
+
64 */
+
65 static void
+ + +
68 const SizeTypeVector & ownedLocalIndicesForTargetProcs,
+
69 const size_type blockSize,
+
70 const size_type locallyOwnedSize,
+
71 const size_type ghostSize,
+
72 MemoryStorage<double, memorySpace> & tempDoubleRealDataArray,
+
73 MemoryStorage<double, memorySpace> & tempDoubleImagDataArray,
+
74 MemoryStorage<float, memorySpace> & tempFloatRealDataArray,
+
75 MemoryStorage<float, memorySpace> & tempFloatImagDataArray,
+ +
77 };
+
+
78
+
79#ifdef DFTFE_WITH_DEVICE
+
80 template <typename ValueType>
+
81 class MPICommunicatorP2PKernels<ValueType,
+ +
83 {
+
84 public:
+
85 static void
+ + +
88 &dataArray,
+ +
90 & ownedLocalIndicesForTargetProcs,
+
91 const size_type blockSize,
+ +
93 &sendBuffer);
+
94
+
95 static void
+ + +
98 &recvBuffer,
+ +
100 & ownedLocalIndicesForTargetProcs,
+
101 const size_type blockSize,
+
102 const size_type locallyOwnedSize,
+
103 const size_type ghostSize,
+ +
105 &tempDoubleRealDataArray,
+ +
107 &tempDoubleImagDataArray,
+ +
109 &tempFloatRealDataArray,
+ +
111 &tempFloatImagDataArray,
+ +
113 };
+
114#endif
+
115 } // namespace utils
+
116} // namespace dftfe
+
117
+
118
+
119#endif
+ + + + +
Definition MPICommunicatorP2PKernels.h:36
+
static void accumAddLocallyOwnedContrRecvBufferFromTargetProcs(const MemoryStorage< ValueType, memorySpace > &recvBuffer, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, const size_type locallyOwnedSize, const size_type ghostSize, MemoryStorage< double, memorySpace > &tempDoubleRealDataArray, MemoryStorage< double, memorySpace > &tempDoubleImagDataArray, MemoryStorage< float, memorySpace > &tempFloatRealDataArray, MemoryStorage< float, memorySpace > &tempFloatImagDataArray, 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< ValueType, memorySpace > &sendBuffer)
Function template for architecture adaptable gather kernel to send buffer.
+ + +
Definition upfToxml.cc:37
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + 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..4587bdb0a --- /dev/null +++ b/_m_p_i_pattern_p2_p_8h.html @@ -0,0 +1,113 @@ + + + + + + + +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..57f5ad69e --- /dev/null +++ b/_m_p_i_pattern_p2_p_8h_source.html @@ -0,0 +1,533 @@ + + + + + + + +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>
+
98 &locallyOwnedRange,
+
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
+
138 isGhostEntry(const global_size_type globalId) const;
+
139
+ +
141 globalToLocal(const global_size_type globalId) const;
+
142
+ +
144 localToGlobal(const size_type localId) const;
+
145
+
146 const std::vector<global_size_type> &
+ +
148
+
149 const std::vector<size_type> &
+ +
151
+
152 const std::vector<size_type> &
+ +
154
+ + +
157
+ +
159 getGhostLocalIndices(const size_type procId) const;
+
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
+ +
177 getOwnedLocalIndices(const size_type procId) const;
+
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.
+
377 MPI_Comm d_mpiComm;
+
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
+ + + + +
Definition OptimizedIndexSet.h:44
+
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 upfToxml.cc:37
+
unsigned long int global_size_type
Definition TypeConfig.h:7
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + diff --git a/_m_p_i_requesters_base_8h.html b/_m_p_i_requesters_base_8h.html new file mode 100644 index 000000000..f1ce4417b --- /dev/null +++ b/_m_p_i_requesters_base_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..2144a5466 --- /dev/null +++ b/_m_p_i_requesters_base_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +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 upfToxml.cc:37
+
+ + + + 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..32778e482 --- /dev/null +++ b/_m_p_i_requesters_n_b_x_8h.html @@ -0,0 +1,112 @@ + + + + + + + +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..21336b699 --- /dev/null +++ b/_m_p_i_requesters_n_b_x_8h_source.html @@ -0,0 +1,386 @@ + + + + + + + +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 //
+
208 MPI_Request d_barrierRequest;
+
209
+
210 //
+
211 // MPI communicator
+
212 //
+
213 const MPI_Comm &d_comm;
+
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
+ + +
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 upfToxml.cc:37
+
+ + + + diff --git a/_m_p_i_tags_8h.html b/_m_p_i_tags_8h.html new file mode 100644 index 000000000..b38769376 --- /dev/null +++ b/_m_p_i_tags_8h.html @@ -0,0 +1,118 @@ + + + + + + + +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..3d18e9912 --- /dev/null +++ b/_m_p_i_tags_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + +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 upfToxml.cc:37
+
+ + + + 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..11ef57aa8 --- /dev/null +++ b/_m_p_i_write_on_file_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..c2e3cfa5d --- /dev/null +++ b/_m_p_i_write_on_file_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +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)
+
Definition upfToxml.cc:37
+
+ + + + diff --git a/_memory_manager_8h.html b/_memory_manager_8h.html new file mode 100644 index 000000000..d17b0a277 --- /dev/null +++ b/_memory_manager_8h.html @@ -0,0 +1,109 @@ + + + + + + + +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..7c516f747 --- /dev/null +++ b/_memory_manager_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + +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>
+
+
30 class MemoryManager<ValueType, MemorySpace::HOST>
+
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>
+
45 class MemoryManager<ValueType, MemorySpace::HOST_PINNED>
+
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
+ + + +
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 upfToxml.cc:37
+
+ + + + diff --git a/_memory_space_type_8h.html b/_memory_space_type_8h.html new file mode 100644 index 000000000..a6cc4a62a --- /dev/null +++ b/_memory_space_type_8h.html @@ -0,0 +1,107 @@ + + + + + + + +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..478cdb0af --- /dev/null +++ b/_memory_space_type_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +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 upfToxml.cc:37
+
+ + + + diff --git a/_memory_storage_8h.html b/_memory_storage_8h.html new file mode 100644 index 000000000..c3e9f258b --- /dev/null +++ b/_memory_storage_8h.html @@ -0,0 +1,116 @@ + + + + + + + +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, memorySpaceDst > dftfe::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..d9e4b77cc --- /dev/null +++ b/_memory_storage_8h_source.html @@ -0,0 +1,655 @@ + + + + + + + +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:
+
50 typedef ValueType value_type;
+
51 typedef ValueType * pointer;
+
52 typedef ValueType & reference;
+
53 typedef const ValueType &const_reference;
+
54 typedef ValueType * iterator;
+
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
+
96 setValue(const ValueType val);
+
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 */
+ +
150 operator=(MemoryStorage &&rhs) noexcept;
+
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
+
178 resize(std::size_t size, ValueType initVal = ValueType());
+
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 *
+
192 data() noexcept;
+
193
+
194 /**
+
195 * @brief Return the raw pointer to the Vector without modifying the values
+
196 * @return pointer to const data
+
197 */
+
198 const ValueType *
+
199 data() const noexcept;
+
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 */
+
216 template <dftfe::utils::MemorySpace memorySpaceDst>
+
217 void
+
218 copyTo(MemoryStorage<ValueType, memorySpaceDst> &dstMemoryStorage) const;
+
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 */
+
246 template <dftfe::utils::MemorySpace memorySpaceDst>
+
247 void
+
248 copyTo(MemoryStorage<ValueType, memorySpaceDst> &dstMemoryStorage,
+
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 */
+
267 template <dftfe::utils::MemorySpace memorySpaceSrc>
+
268 void
+ +
270 const MemoryStorage<ValueType, memorySpaceSrc> &srcMemoryStorage);
+
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 */
+
297 template <dftfe::utils::MemorySpace memorySpaceSrc>
+
298 void
+
299 copyFrom(MemoryStorage<ValueType, memorySpaceSrc> &srcMemoryStorage,
+
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 */
+
317 template <dftfe::utils::MemorySpace memorySpaceDst>
+
318 void
+
319 copyTo(ValueType *dst) const;
+
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 */
+
345 template <dftfe::utils::MemorySpace memorySpaceDst>
+
346 void
+
347 copyTo(ValueType * dst,
+
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 */
+
365 template <dftfe::utils::MemorySpace memorySpaceSrc>
+
366 void
+
367 copyFrom(const ValueType *src);
+
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 */
+
392 template <dftfe::utils::MemorySpace memorySpaceSrc>
+
393 void
+
394 copyFrom(const ValueType * src,
+
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
+
415 copyTo(std::vector<ValueType> &dst) const;
+
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
+
447 copyTo(std::vector<ValueType> &dst,
+
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
+
465 copyFrom(const std::vector<ValueType> &src);
+
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
+
491 copyFrom(const std::vector<ValueType> &src,
+
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 */
+
518 template <typename ValueType, utils::MemorySpace memorySpaceDst>
+
519 MemoryStorage<ValueType, memorySpaceDst>
+
520 memoryStorageFromSTL(const std::vector<ValueType> &src);
+
521
+
522 } // namespace utils
+
523} // end of namespace dftfe
+
524
+
525#include "../utils/MemoryStorage.t.cc"
+
526
+
527#endif
+ + +
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 upfToxml.cc:37
+
+ + + + diff --git a/_memory_transfer_8h.html b/_memory_transfer_8h.html new file mode 100644 index 000000000..a8ed0e6ad --- /dev/null +++ b/_memory_transfer_8h.html @@ -0,0 +1,109 @@ + + + + + + + +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..ce9772d3f --- /dev/null +++ b/_memory_transfer_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +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
+ + +
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 upfToxml.cc:37
+
+ + + + diff --git a/_memory_transfer_kernels_device_8h.html b/_memory_transfer_kernels_device_8h.html new file mode 100644 index 000000000..ad7a5dfa3 --- /dev/null +++ b/_memory_transfer_kernels_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..d7b64cab5 --- /dev/null +++ b/_memory_transfer_kernels_device_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +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 upfToxml.cc:37
+
+ + + + diff --git a/_multi_vector_8h.html b/_multi_vector_8h.html new file mode 100644 index 000000000..6ea4e455a --- /dev/null +++ b/_multi_vector_8h.html @@ -0,0 +1,119 @@ + + + + + + + +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..19edffac2 --- /dev/null +++ b/_multi_vector_8h_source.html @@ -0,0 +1,693 @@ + + + + + + + +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 */
+
311 MultiVector(const MultiVector &u, const ValueType initVal = 0);
+
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
+
423 setValue(const ValueType val);
+
424
+
425 template <typename ValueBaseType>
+
426 void
+
427 scale(const ValueBaseType val);
+
428
+
429 template <typename ValueBaseType>
+
430 void
+
431 add(const ValueBaseType *valVec, const MultiVector &u);
+
432
+
433 template <typename ValueBaseType>
+
434 void
+
435 add(const ValueBaseType val, const MultiVector &u);
+
436
+
437 template <typename ValueBaseType1, typename ValueBaseType2>
+
438 void
+
439 addAndScale(const ValueBaseType1 valScale,
+
440 const ValueBaseType2 valAdd,
+
441 const MultiVector & u);
+
442
+
443 template <typename ValueBaseType1, typename ValueBaseType2>
+
444 void
+
445 scaleAndAdd(const ValueBaseType1 valScale,
+
446 const ValueBaseType2 valAdd,
+
447 const MultiVector & u);
+
448
+
449 void
+
450 dot(const MultiVector &u, ValueType *dotVec);
+
451
+
452 void
+ +
454
+
455 void
+
456 updateGhostValues(const size_type communicationChannel = 0);
+
457
+
458 void
+
459 accumulateAddLocallyOwned(const size_type communicationChannel = 0);
+
460
+
461 void
+
462 updateGhostValuesBegin(const size_type communicationChannel = 0);
+
463
+
464 void
+ +
466
+
467 void
+
468 accumulateAddLocallyOwnedBegin(const size_type communicationChannel = 0);
+
469
+
470 void
+ +
472
+
473 bool
+ +
475
+
476 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
+ +
478
+
479 template <typename ValueBaseType>
+
480 void
+
481 l2Norm(ValueBaseType *normVec) const;
+
482
+
483
+ +
485 globalSize() const;
+ +
487 localSize() const;
+ + + +
491 ghostSize() const;
+ +
493 numVectors() const;
+
494
+
495 private:
+
496 std::unique_ptr<Storage> d_storage;
+ + + + + +
502 std::unique_ptr<utils::mpi::MPICommunicatorP2P<ValueType, memorySpace>>
+ +
504 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
+ +
506 };
+
+
507
+
508 //
+
509 // helper functions
+
510 //
+
511 template <typename ValueType, utils::MemorySpace memorySpace>
+
512 void
+ +
514 const std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
+
515 & partitioner,
+
516 const size_type numVectors,
+ +
518
+
519 } // end of namespace linearAlgebra
+
+
520} // end of namespace dftfe
+
521#include "../src/linAlg/MultiVector.t.cc"
+
522#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:505
+
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 ...
+
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:501
+
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:500
+
const_iterator end() const
Return iterator pointing to the end of MultiVector data.
+
std::unique_ptr< Storage > d_storage
Definition MultiVector.h:496
+
std::unique_ptr< utils::mpi::MPICommunicatorP2P< ValueType, memorySpace > > d_mpiCommunicatorP2P
Definition MultiVector.h:503
+
size_type d_locallyOwnedSize
Definition MultiVector.h:499
+
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:497
+
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:498
+
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.
+
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)
+
Definition upfToxml.cc:37
+
unsigned long int global_size_type
Definition TypeConfig.h:7
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + diff --git a/_n_n_g_g_a_8h.html b/_n_n_g_g_a_8h.html new file mode 100644 index 000000000..67815466d --- /dev/null +++ b/_n_n_g_g_a_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..f6ad1bdc3 --- /dev/null +++ b/_n_n_g_g_a_8h_source.html @@ -0,0 +1,133 @@ + + + + + + + +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 =
+
15 excDensityPositivityCheckTypes::MAKE_POSITIVE,
+
16 const double rhoTol = 1.0e-8);
+
17 ~NNGGA();
+
18 void
+
19 evaluateexc(const double * rho,
+
20 const double * sigma,
+
21 const unsigned int numPoints,
+
22 double * exc);
+
23 void
+
24 evaluatevxc(const double * rho,
+
25 const double * sigma,
+
26 const unsigned int numPoints,
+
27 double * exc,
+
28 double * dexc);
+
29
+
30 private:
+
31 std::string d_modelFileName;
+
32 torch::jit::script::Module * d_model;
+
33 const bool d_isSpinPolarized;
+
34 const double d_rhoTol;
+
35 const excDensityPositivityCheckTypes d_densityPositivityCheckType;
+
36 };
+
37} // namespace dftfe
+
38#endif
+
39#endif // NNGGA_H
+ +
Definition upfToxml.cc:37
+
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..031b0c11c --- /dev/null +++ b/_n_n_l_d_a_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..996a99dfb --- /dev/null +++ b/_n_n_l_d_a_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +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 =
+
15 excDensityPositivityCheckTypes::MAKE_POSITIVE,
+
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 upfToxml.cc:37
+
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..deb1a0985 --- /dev/null +++ b/_optimized_index_set_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..6547c8852 --- /dev/null +++ b/_optimized_index_set_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +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
+ +
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 upfToxml.cc:37
+
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..b5c7cb8b3 --- /dev/null +++ b/_periodic_table_8h.html @@ -0,0 +1,116 @@ + + + + + + + +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..1841ef387 --- /dev/null +++ b/_periodic_table_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +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
+
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 upfToxml.cc:37
+
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..ce67274b4 --- /dev/null +++ b/_quad_data_composite_write_8h.html @@ -0,0 +1,107 @@ + + + + + + + +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..e62344396 --- /dev/null +++ b/_quad_data_composite_write_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +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
+
21 getMPIDataType(MPI_Datatype *mpi_datatype) override;
+
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
+
Definition upfToxml.cc:37
+
+ + + + 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..b93f555a1 --- /dev/null +++ b/_r_e_a_d_m_e_8md.html @@ -0,0 +1,82 @@ + + + + + + + +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..b85ea14ab --- /dev/null +++ b/_type_config_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..fdd0968fb --- /dev/null +++ b/_type_config_8h_source.html @@ -0,0 +1,103 @@ + + + + + + + +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
+
Definition upfToxml.cc:37
+
unsigned long int global_size_type
Definition TypeConfig.h:7
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..517643c7c --- /dev/null +++ b/annotated.html @@ -0,0 +1,160 @@ + + + + + + + +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..c270a6305 --- /dev/null +++ b/cg_p_r_p_non_linear_solver_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..cfa29d9d2 --- /dev/null +++ b/cg_p_r_p_non_linear_solver_8h_source.html @@ -0,0 +1,427 @@ + + + + + + + +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 upfToxml.cc:37
+ +
+ + + + diff --git a/chebyshev_orthogonalized_subspace_iteration_solver_8h.html b/chebyshev_orthogonalized_subspace_iteration_solver_8h.html new file mode 100644 index 000000000..8185d33eb --- /dev/null +++ b/chebyshev_orthogonalized_subspace_iteration_solver_8h.html @@ -0,0 +1,107 @@ + + + + + + + +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..c8c35d6b5 --- /dev/null +++ b/chebyshev_orthogonalized_subspace_iteration_solver_8h_source.html @@ -0,0 +1,242 @@ + + + + + + + +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
+
67 solve(operatorDFTClass & operatorMatrix,
+
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 bool computeResidual,
+
77 const bool useMixedPrec = false,
+
78 const bool isFirstScf = false);
+
79
+
80 /**
+
81 * @brief Solve a generalized eigen problem.
+
82 */
+
83 void
+
84 solve(operatorDFTClass & operatorMatrix,
+
85 std::vector<distributedCPUVec<double>> &eigenVectors,
+
86 std::vector<double> & eigenValues,
+
87 std::vector<double> & residuals);
+
88
+
89 /**
+
90 * @brief reinit spectrum bounds
+
91 */
+
92 void
+
93 reinitSpectrumBounds(double lowerBoundWantedSpectrum,
+
94 double lowerBoundUnWantedSpectrum,
+
95 double upperBoundUnWantedSpectrum);
+
96
+
97 private:
+
98 const MPI_Comm d_mpiCommParent;
+
99 //
+
100 // stores lower bound of wanted spectrum
+
101 //
+ +
103
+
104 //
+
105 // stores lower bound of unwanted spectrum
+
106 //
+ +
108
+
109
+
110 //
+
111 // stores upper bound of unwanted spectrum
+
112 //
+ +
114
+
115
+ +
117
+
118 //
+
119 // variables for printing out and timing
+
120 //
+
121 dealii::ConditionalOStream pcout;
+
122 dealii::TimerOutput computing_timer;
+
123 };
+
+
124} // namespace dftfe
+
125#endif
+
Concrete class implementing Chebyshev filtered orthogonalized subspace iteration solver.
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:38
+
dealii::TimerOutput computing_timer
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:122
+
const dftParameters & d_dftParams
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:116
+
void reinitSpectrumBounds(double lowerBoundWantedSpectrum, double lowerBoundUnWantedSpectrum, double upperBoundUnWantedSpectrum)
reinit spectrum bounds
+
void solve(operatorDFTClass &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 bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)
Solve a generalized eigen problem.
+
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:98
+
double d_lowerBoundUnWantedSpectrum
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:107
+
dealii::ConditionalOStream pcout
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:121
+ +
double d_lowerBoundWantedSpectrum
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:102
+
void solve(operatorDFTClass &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)
Solve a generalized eigen problem.
+
double d_upperBoundUnWantedSpectrum
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:113
+
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:39
+ + + +
double number
Definition dftfeDataTypes.h:44
+
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+ +
+ + + + 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..dc2ddb2af --- /dev/null +++ b/chebyshev_orthogonalized_subspace_iteration_solver_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..847298d6e --- /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 "operatorDevice.h"
+
26# include "elpaScalaManager.h"
+
27# include "dftParameters.h"
+
28
+
29namespace dftfe
+
30{
+
31 /**
+
32 * @brief Concrete class implementing Chebyshev filtered orthogonalized subspace
+
33 * iteration solver.
+
34 * @author Sambit Das, Phani Motamarri
+
35 */
+
36 class chebyshevOrthogonalizedSubspaceIterationSolverDevice
+
37 {
+
38 public:
+
39 /**
+
40 * @brief Constructor.
+
41 *
+
42 * @param mpi_comm_parent parent mpi communicator
+
43 * @param mpi_comm_domain domain decomposition mpi communicator
+
44 * @param lowerBoundWantedSpectrum Lower Bound of the Wanted Spectrum.
+
45 * @param lowerBoundUnWantedSpectrum Lower Bound of the UnWanted Spectrum.
+
46 */
+
47 chebyshevOrthogonalizedSubspaceIterationSolverDevice(
+
48 const MPI_Comm & mpi_comm_parent,
+
49 const MPI_Comm & mpi_comm_domain,
+
50 double lowerBoundWantedSpectrum,
+
51 double lowerBoundUnWantedSpectrum,
+
52 double upperBoundUnWantedSpectrum,
+
53 const dftParameters &dftParams);
+
54
+
55
+
56
+
57 /**
+
58 * @brief Solve a generalized eigen problem.
+
59 */
+
60 double
+
61 solve(operatorDFTDeviceClass & operatorMatrix,
+
62 elpaScalaManager & elpaScala,
+
63 dataTypes::number * eigenVectorsFlattenedDevice,
+
64 dataTypes::number * eigenVectorsRotFracDensityFlattenedDevice,
+
65 const unsigned int flattenedSize,
+
66 const unsigned int totalNumberWaveFunctions,
+
67 std::vector<double> & eigenValues,
+
68 std::vector<double> & residuals,
+
69 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
70 const MPI_Comm & interBandGroupComm,
+
71 const bool isFirstFilteringCall,
+
72 const bool computeResidual,
+
73 const bool useMixedPrecOverall = false,
+
74 const bool isFirstScf = false);
+
75
+
76
+
77 /**
+
78 * @brief Used for XL-BOMD.
+
79 */
+
80 void
+
81 solveNoRR(operatorDFTDeviceClass & operatorMatrix,
+
82 elpaScalaManager & elpaScala,
+
83 dataTypes::number * eigenVectorsFlattenedDevice,
+
84 const unsigned int flattenedSize,
+
85 const unsigned int totalNumberWaveFunctions,
+
86 std::vector<double> & eigenValues,
+
87 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
88 const MPI_Comm & interBandGroupComm,
+
89 const unsigned int numberPasses,
+
90 const bool useMixedPrecOverall);
+
91
+
92
+
93 /**
+
94 * @brief Used for LRD preconditioner, also required for XL-BOMD
+
95 */
+
96 void
+ +
98 operatorDFTDeviceClass & operatorMatrix,
+
99 dataTypes::number * eigenVectorsFlattenedDevice,
+
100 const unsigned int flattenedSize,
+
101 const unsigned int totalNumberWaveFunctions,
+
102 const std::vector<double> &eigenValues,
+
103 const double fermiEnergy,
+
104 std::vector<double> & densityMatDerFermiEnergy,
+
105 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
106 const MPI_Comm & interBandGroupComm,
+
107 dftfe::elpaScalaManager & elpaScala);
+
108
+
109
+
110 /**
+
111 * @brief reinit spectrum bounds
+
112 */
+
113 void
+
114 reinitSpectrumBounds(double lowerBoundWantedSpectrum,
+
115 double lowerBoundUnWantedSpectrum,
+
116 double upperBoundUnWantedSpectrum);
+
117
+
118 private:
+
119 const MPI_Comm d_mpiCommParent;
+
120 //
+
121 // stores lower bound of wanted spectrum
+
122 //
+
123 double d_lowerBoundWantedSpectrum;
+
124
+
125 //
+
126 // stores lower bound of unwanted spectrum
+
127 //
+
128 double d_lowerBoundUnWantedSpectrum;
+
129
+
130 //
+
131 // stores upper bound of unwanted spectrum
+
132 //
+
133 double d_upperBoundUnWantedSpectrum;
+
134
+
135 const dftParameters &d_dftParams;
+
136
+
137 //
+
138 // temporary parallel vectors needed for Chebyshev filtering
+
139 //
+
140 distributedDeviceVec<dataTypes::number> d_YArray;
+
141
+
142 distributedDeviceVec<dataTypes::numberFP32>
+
143 d_deviceFlattenedFloatArrayBlock;
+
144
+
145 distributedDeviceVec<dataTypes::number> d_deviceFlattenedArrayBlock2;
+
146
+
147 distributedDeviceVec<dataTypes::number> d_YArray2;
+
148
+
149 distributedDeviceVec<dataTypes::number> d_projectorKetTimesVector2;
+
150
+
151 bool d_isTemporaryParallelVectorsCreated;
+
152
+
153 //
+
154 // variables for printing out and timing
+
155 //
+
156 dealii::ConditionalOStream pcout;
+
157 dealii::TimerOutput computing_timer;
+
158 };
+
159} // namespace dftfe
+
160# endif
+
161#endif
+
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
+ + + + +
void densityMatrixEigenBasisFirstOrderResponse(operatorDFTClass &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 upfToxml.cc:37
+ +
+ + + + 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..c814f7a9b --- /dev/null +++ b/classdftfe_1_1_b_f_g_s_non_linear_solver-members.html @@ -0,0 +1,145 @@ + + + + + + + +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..a408db118 --- /dev/null +++ b/classdftfe_1_1_b_f_g_s_non_linear_solver.html @@ -0,0 +1,1382 @@ + + + + + + + +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< double > d_gradient
 
std::vector< double > d_value
 
std::vector< double > d_gradientNew
 
std::vector< double > d_valueNew
 
std::vector< double > d_deltaX
 
std::vector< double > d_deltaXNew
 
std::vector< double > d_updateVector
 
unsigned int d_numberUnknowns
 
unsigned int d_iter
 storage for current bfgs iteration count
 
std::vector< double > d_Srfo
 
std::vector< double > d_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 (nonlinearSolverProblemproblem)
+
+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 (nonlinearSolverProblemproblem)
+
+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 (nonlinearSolverProblemproblem,
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,
nonlinearSolverProblemproblem 
)
+
+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..a17617ed6254149ec7a7f360ddd01b769078bb58 GIT binary patch literal 704 zcmeAS@N?(olHy`uVBq!ia0vp^Yk)X_gBeI}-k;Y2q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)929=i!8&o~{&n8}87{Wbi z&gw5S%YEPPzb!B+CX2JW$!_lFk8M%MT4m3g38@kJyYWJEgy36_P z>@NPdVH+m$G8}Mc6v)j0c?2lz3<^ zjcrj;+SJYz=5oZDQCsPeB6IbgWg*;xndd7dvn#iiK3)Dl_xaMKcOG-Iu5NGFecdO1 zm3P@Ajn~~BE1sX+S*kq$05H^|_nf)>`)#7`m&maC)t66wIDg``N=YDFSbJ~kuE~wM z&%W%vYTUM#vH0LMr{34vJbm+=)?X`smEeB2%`p3WZKOq%hjn(^HtsE!=_1Avvfq=_ zuWm2;k{z-2wceaFC+^K;Kc|_Pv7`Ixm;!KKbQB*j)T1UuU}5dHNH8O_tA5p-~2&-Ti75f_%Yx>S4YJQ-q}H3 cvtP)wpX<#M(|C6cnAR9PUHx3vIVCg!0E00{cK`qY 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..dc4a56481 --- /dev/null +++ b/classdftfe_1_1_l_b_f_g_s_non_linear_solver-members.html @@ -0,0 +1,145 @@ + + + + + + + +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..ff1e1de04 --- /dev/null +++ b/classdftfe_1_1_l_b_f_g_s_non_linear_solver.html @@ -0,0 +1,1382 @@ + + + + + + + +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< double > d_gradient
 
std::vector< double > d_value
 
std::vector< double > d_gradientNew
 
std::vector< double > d_valueNew
 
std::vector< double > d_deltaX
 
std::vector< double > d_deltaXNew
 
std::vector< double > d_updateVector
 
std::vector< double > d_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< double > d_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 (nonlinearSolverProblemproblem)
+
+private
+
+ +

Compute scaling factor for the step.

+ +
+
+ +

◆ computeUpdateStep()

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

Compute Update Vector.

+ +
+
+ +

◆ initializePreconditioner()

+ +
+
+ + + + + +
+ + + + + + + + +
void dftfe::LBFGSNonLinearSolver::initializePreconditioner (nonlinearSolverProblemproblem)
+
+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 (nonlinearSolverProblemproblem)
+
+private
+
+ +

Scale preconditioner.

+ +
+
+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
nonLinearSolver::ReturnValueType dftfe::LBFGSNonLinearSolver::solve (nonlinearSolverProblemproblem,
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,
nonlinearSolverProblemproblem 
)
+
+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..490aa45f63d9b6acbc3a7a3c3f80d81d0b7ad93c GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^n}IlhgBeJsN^N-yq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)3BSp~l$e&-y@`Lb0#Ic?IP zCHcm$FK<3^XVa?sWZ{*||HnQ%e%yJ!=Q6+KXH$cJ93UfQFvFESXN9PoutL9{=`NGODJJb2u z`t^Son5Wb!=CkirF22Ic@PnJxnBj-^48{ZT2YDF&aiuYQ2sdDE*xw|{@JI9v!-Mq+ zYz+12O5S>DE4q0_=7r1kMs}M)cCG6Q@XUSs9Ns!t$DSvzvaq5FKp}X zs0o?-Dl_MN%(c0CtLD${Tf8>j#U)mI_D$Dy2J_kE^Q$UX#Q$dAoN9mjRoU0roB#Xv zd~-Ed-S8`y=SnkA@y8YNYu9NO`!4I=X;!=Al|e`q*WL{K70GhEv!8A*eP~p&W!|@& zItkY^i_aybo%!YCQyW&UDnD=L)zjtoW}LXUfOY=$Pm%KvhNiv#xb@zIo%Y84KmWv- zXT>DPpX+6R_RSC)nm=`aU(UZ=eIa*p>0N_|-=i)}ySnt=w0*1dj^uCeI1#To!_@^C p8cIsQ@DUWO-#a7ND^ve3a}3{P@9?D;rvsB6gQu&X%Q~loCIAKjUFiS- 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..c8839c6bf --- /dev/null +++ b/classdftfe_1_1_mixing_scheme-members.html @@ -0,0 +1,109 @@ + + + + + + + +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 std::vector< double > &weightDotProducts, const bool performMPIReduce, const double mixingValue)dftfe::MixingScheme
addVariableToInHist(const mixingVariable mixingVariableName, const std::vector< double > &inputVariableToInHist)dftfe::MixingScheme
addVariableToOutHist(const mixingVariable mixingVariableName, const std::vector< double > &inputVariableToOutHist)dftfe::MixingScheme
clearHistory()dftfe::MixingScheme
computeAndersonMixingCoeff()dftfe::MixingScheme
computeMixingMatrices(const std::deque< std::vector< double > > &inHist, const std::deque< std::vector< double > > &outHist, const std::vector< double > &weightDotProducts, const bool isMPIAllReduce, std::vector< double > &A, std::vector< double > &c)dftfe::MixingSchemeprivate
d_Adftfe::MixingSchemeprivate
d_cdftfe::MixingSchemeprivate
d_cFinaldftfe::MixingSchemeprivate
d_mixingHistorydftfe::MixingSchemeprivate
d_mixingParameterdftfe::MixingSchemeprivate
d_mpi_comm_domaindftfe::MixingSchemeprivate
d_performMPIReducedftfe::MixingSchemeprivate
d_variableHistoryIndftfe::MixingSchemeprivate
d_variableHistoryOutdftfe::MixingSchemeprivate
d_vectorDotProductWeightsdftfe::MixingSchemeprivate
lengthOfHistory()dftfe::MixingScheme
MixingScheme(const MPI_Comm &mpi_comm_domain)dftfe::MixingScheme
mixVariable(const mixingVariable mixingVariableName, std::vector< double > &outputVariable)dftfe::MixingScheme
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..4e0352809 --- /dev/null +++ b/classdftfe_1_1_mixing_scheme.html @@ -0,0 +1,670 @@ + + + + + + + +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_domain)
 
unsigned int lengthOfHistory ()
 
void computeAndersonMixingCoeff ()
 Computes the mixing coefficients.
 
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 std::vector< double > &weightDotProducts, const bool performMPIReduce, const double mixingValue)
 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 std::vector< double > &inputVariableToInHist)
 Adds to the input history.
 
void addVariableToOutHist (const mixingVariable mixingVariableName, const std::vector< double > &inputVariableToOutHist)
 Adds to the output history.
 
double mixVariable (const mixingVariable mixingVariableName, std::vector< double > &outputVariable)
 Computes the input for the next iteration based on the anderson coefficients.
 
+ + + + +

+Private Member Functions

void computeMixingMatrices (const std::deque< std::vector< double > > &inHist, const std::deque< std::vector< double > > &outHist, const std::vector< double > &weightDotProducts, 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< double > d_A
 
std::vector< double > d_c
 
double d_cFinal
 
std::map< mixingVariable, std::deque< std::vector< double > > > d_variableHistoryIn
 
std::map< mixingVariable, std::deque< std::vector< double > > > d_variableHistoryOut
 
std::map< mixingVariable, std::vector< double > > d_vectorDotProductWeights
 
std::map< mixingVariable, bool > d_performMPIReduce
 
const MPI_Comm d_mpi_comm_domain
 
std::map< mixingVariable, double > d_mixingParameter
 
unsigned int d_mixingHistory
 
+

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_domain)
+
+ +
+
+

Member Function Documentation

+ +

◆ addMixingVariable()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::MixingScheme::addMixingVariable (const mixingVariable mixingVariableList,
const std::vector< double > & weightDotProducts,
const bool performMPIReduce,
const double mixingValue 
)
+
+ +

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 std::vector< double > & inputVariableToInHist 
)
+
+ +

Adds to the input history.

+ +
+
+ +

◆ addVariableToOutHist()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void dftfe::MixingScheme::addVariableToOutHist (const mixingVariable mixingVariableName,
const std::vector< double > & inputVariableToOutHist 
)
+
+ +

Adds to the output history.

+ +
+
+ +

◆ clearHistory()

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

Clears all the the history.

+ +
+
+ +

◆ computeAndersonMixingCoeff()

+ +
+
+ + + + + + + +
void dftfe::MixingScheme::computeAndersonMixingCoeff ()
+
+ +

Computes the mixing coefficients.

+ +
+
+ +

◆ computeMixingMatrices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::MixingScheme::computeMixingMatrices (const std::deque< std::vector< double > > & inHist,
const std::deque< std::vector< double > > & outHist,
const std::vector< double > & weightDotProducts,
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()

+ +
+
+ + + + + + + + + + + + + + + + + + +
double dftfe::MixingScheme::mixVariable (const mixingVariable mixingVariableName,
std::vector< double > & outputVariable 
)
+
+ +

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_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_performMPIReduce

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

◆ d_variableHistoryIn

+ +
+
+ + + + + +
+ + + + +
std::map<mixingVariable, std::deque<std::vector<double> > > dftfe::MixingScheme::d_variableHistoryIn
+
+private
+
+ +
+
+ +

◆ d_variableHistoryOut

+ +
+
+ + + + + +
+ + + + +
std::map<mixingVariable, std::deque<std::vector<double> > > dftfe::MixingScheme::d_variableHistoryOut
+
+private
+
+ +
+
+ +

◆ d_vectorDotProductWeights

+ +
+
+ + + + + +
+ + + + +
std::map<mixingVariable, std::vector<double> > dftfe::MixingScheme::d_vectorDotProductWeights
+
+private
+
+ +
+
+
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..c44ff4f93 --- /dev/null +++ b/classdftfe_1_1_process_grid-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::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..a10edca19 --- /dev/null +++ b/classdftfe_1_1_process_grid.html @@ -0,0 +1,725 @@ + + + + + + + +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
+

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..8f5772fff --- /dev/null +++ b/classdftfe_1_1_sca_l_a_p_a_c_k_matrix-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::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..fbb1bbc30 --- /dev/null +++ b/classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html @@ -0,0 +1,2246 @@ + + + + + + + +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
 
NumberType & local_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< double > eigenpairs_hermitian_by_index (const std::pair< unsigned int, unsigned int > &index_limits, const bool compute_eigenvectors)
 
std::vector< double > eigenpairs_hermitian_by_index_MRRR (const std::pair< unsigned int, unsigned int > &index_limits, const bool compute_eigenvectors)
 
+ + + + + +

+Private Member Functions

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()))
 
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()))
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< NumberType > values
 
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< NumberType > work
 
std::vector< int > iwork
 
std::vector< int > ipiv
 
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..2c1b026d3 --- /dev/null +++ b/classdftfe_1_1basis_1_1_f_e_basis_operations-members.html @@ -0,0 +1,162 @@ + + + + + + + +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.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
areAllCellsAffinedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
areAllCellsCartesiandftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
cellID(const unsigned int iElem) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
cellsTypeFlag() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
clearScratchMultiVectors() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
constraintInfoClass typedefdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
createMultiVector(const unsigned int blocksize, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
createScratchMultiVectors(const unsigned int vecBlockSize, const unsigned int numMultiVecs=1) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_cellDofIndexToProcessDofIndexMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_cellIndexToCellIdMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_cellsBlockSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_constraintInfodftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_constraintsVectordftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_dofHandlerIDdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_flattenedCellDofIndexToProcessDofIndexMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_inverseJacobianBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_inverseJacobianDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_JxWBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_JxWDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_locallyOwnedSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_localSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_matrixFreeDataPtrdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_nCellsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_nDofsPerCelldftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_nQuadsPerCelldftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_nVectorsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_quadratureIDdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_quadratureIDsVectordftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionBasisDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionGradientBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionGradientBasisDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionGradientDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionGradientDataInternalLayoutdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_shapeFunctionGradientDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
d_updateFlagsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
distribute(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
FEBasisOperationsBase(dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
getMultiVector(const unsigned int vecBlockSize, const unsigned int index=0) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
init(const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const UpdateFlags updateFlags=update_values)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
initializeConstraints()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
initializeFlattenedIndexMaps()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
initializeIndexMaps()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
initializeMPIPattern()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
initializeShapeFunctionAndJacobianBasisData()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
initializeShapeFunctionAndJacobianData()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
inverseJacobians() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
inverseJacobiansBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
inverseJacobiansBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
JxW() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
JxWBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
JxWBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
mpiPatternP2Pdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
nCells() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
nDofsPerCell() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
nOwnedDofs() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
nQuadsPerCell() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
nRelaventDofs() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
reinit(const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorage=true)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
resizeTempStorage()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
scratchMultiVectorsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >mutableprivate
shapeFunctionBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
shapeFunctionBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
shapeFunctionData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
shapeFunctionGradientBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
shapeFunctionGradientBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
shapeFunctionGradientData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
tempCellNodalDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >mutableprivate
tempQuadratureGradientsDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
tempQuadratureGradientsDataNonAffinedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
~FEBasisOperationsBase()=defaultdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >private
+ + + + 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..5b63fc23a --- /dev/null +++ b/classdftfe_1_1basis_1_1_f_e_basis_operations.html @@ -0,0 +1,294 @@ + + + + + + + +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>

+
+Inheritance diagram for dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >:
+
+
+ + +dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Private Types inherited from dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
using constraintInfoClass = dftUtils::constraintMatrixInfo
 
- Private Member Functions inherited from dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
 FEBasisOperationsBase (dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)
 Constructor, fills required data structures using deal.ii's MatrixFree and AffineConstraints objects.
 
 ~FEBasisOperationsBase ()=default
 Default Destructor.
 
void init (const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const UpdateFlags updateFlags=update_values)
 fills required data structures for the given dofHandlerID
 
void reinit (const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorage=true)
 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 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 resizeTempStorage ()
 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.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionBasisData (bool transpose=false) const
 Shape function values at quadrature points in ValueTypeBasisData.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionBasisData (bool transpose=false) const
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionGradientBasisData (bool transpose=false) const
 Shape function gradient values at quadrature points in ValueTypeBasisData.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionGradientBasisData (bool transpose=false) const
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseJacobiansBasisData () 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.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseJacobiansBasisData () const
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & JxWBasisData () const
 determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each quad point for each cell.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & JxWBasisData () const
 
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.
 
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) const
 Apply constraints on given multivector.
 
- Private Attributes inherited from dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
constraintInfoClass d_constraintInfo
 
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
 
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > d_flattenedCellDofIndexToProcessDofIndexMap
 
std::vector< dealii::CellId > d_cellIndexToCellIdMap
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_inverseJacobianData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_JxWData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataInternalLayout
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_inverseJacobianBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_JxWBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisDataTranspose
 
std::map< unsigned int, std::vector< dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > > > scratchMultiVectors
 
std::vector< unsigned int > d_quadratureIDsVector
 
unsigned int d_quadratureID
 
std::vector< unsigned int > d_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
 
UpdateFlags d_updateFlags
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempCellNodalData
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsData
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsDataNonAffine
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1basis_1_1_f_e_basis_operations.png b/classdftfe_1_1basis_1_1_f_e_basis_operations.png new file mode 100644 index 0000000000000000000000000000000000000000..16187852f02c175fae36fb72467780185147066e GIT binary patch literal 1814 zcma)-X;>2I7ROP`QgeA4x6Cbd#=&mbG~;r`rNth_afAU|)YMYT95XdsL9t04Q^!cm zObd}hz)VO@G?y}$tf3?qaz%1xT#y6}QG|dCGxOZ%e(=M6Kb-%0fA2Zx)A>JdAuPyG zU)Mqx008Ji{C(j7fToWshwao-#TU>&AE;z6EHL=EQmIs>iyy_Q*dB`eL12=3#hbCuCWjyEhACC-tTbalog~~pz!>Zv< z|4Wpz2;_|mnOLxPp3(7SrY8$|h$XuBM&wDz3&HJ%1UT@F>ul7byQP$4$a_bmxFF_J*~)3@DfsmUKPNkgy@9E? z5+j)8#ayu!OxB{X16>y}=oR8ybSw@df_KwNMq%7h*3kWRG19I2E}&Hed$_uuS-OaN zbswrP9O>$?ZnEy)i27dto>`SO~tHpn7Ip);M;i8Uw&-AJx*li47*)Q|V z$Z3fVl|SN~%-;2oBatdr753vFd-441?7=+yh$mK|hZA83rG}KpZe~_t@;n@aX6{DX zX~BM+_*qX`SU~-)9ce(Aj?7*tdO6(T;df5j7_SU*qoXr}3)&9M6SuEvi^ZZk<7#f? zZ2R&Og+=>^ALW7Y&0Bu)G1OdHJsbKcyz@oW!2GAv`^N=B{`SuH z=iU`ZflPa8CF#?irC8X;j0R^7DQgS)kXC4120Gc1QtTaSrRRQs^MhRdHY`Y5$h;na%p21=q6GSQPEB)$j)d;iRevT3LYV?zGi#hc2mT zTX*Cp=_+9N)e#a#6}Q=HNUV9@0G-2{Hvw72Yc^`)4|sN5YN#d-0Ir?aaH7)Dl)K=9Ot1^mf*<1kFNva zK58-9QmPjh-XHvd&s16%NM#%TO4dq4uPAME$9|8$qV>`C9)-$UeriI)awE?AJB5E!|t2 z;Z95v5QbyUPgDs)CY@YihbtC znhA4EM!~MNX7?*+)r?1>mhkkjfcCJgA3BOqqAHMc*{>RVm75v5 zjZdo-poMlgTi8U3pO`d0`hkdhDdqY8v`!69Zd=fu3WdJD?F%LwysvB;g1SUM?G#W~ z=h<|7i1iqY0>55M*W(WExe-%7D@g3Bshyil>rIv$^PQI4n%?JboC1^CtjPrS?`IvY zho5x$7^c(wPJq9-kuj9^_3N1$Sl@sB*wjKZFOJw&0``W#11k4?XUJMClhq5)lr*N$ z27~UP;+XTP&e$cR)_%`hF^RB9A40(Frrd-!MZ*-;4UjLRbAn{h&SjTUll4s-pte5eTz*|k8_X)2-1R_Seg_BOFR}(RpwOrBD zpi(L-}Rr9ty?~5+xgY zej7s$GMf_}19sXIMzINm2c1VQ$;>4E#y$6x$E1zReGH|}mRtD`R4m2*y~_dQxT?Wb Zo4TTLd=I_&jOqsiK#m9b(vF_J_8&&#riuUn literal 0 HcmV?d00001 diff --git a/classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_9a9280e7dd92d071ae27bd4af430a9d1.html b/classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_9a9280e7dd92d071ae27bd4af430a9d1.html new file mode 100644 index 000000000..092a532c1 --- /dev/null +++ b/classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_9a9280e7dd92d071ae27bd4af430a9d1.html @@ -0,0 +1,171 @@ + + + + + + + +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, dftfe::utils::MemorySpace::HOST > Member List
+
+
+ +

This is the complete list of members for dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accumulateFromCellNodalData(const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
accumulateFromCellNodalDataKernel(const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
areAllCellsAffinedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
areAllCellsCartesiandftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
cellID(const unsigned int iElem) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
cellsTypeFlag() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
clearScratchMultiVectors() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
constraintInfoClass typedefdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
createMultiVector(const unsigned int blocksize, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
createScratchMultiVectors(const unsigned int vecBlockSize, const unsigned int numMultiVecs=1) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_cellDofIndexToProcessDofIndexMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_cellIndexToCellIdMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_cellsBlockSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_constraintInfodftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_constraintsVectordftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_dofHandlerIDdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_flattenedCellDofIndexToProcessDofIndexMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_inverseJacobianBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_inverseJacobianDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_JxWBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_JxWDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_locallyOwnedSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_localSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_matrixFreeDataPtrdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_nCellsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_nDofsPerCelldftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_nQuadsPerCelldftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_nVectorsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_quadratureIDdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_quadratureIDsVectordftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionBasisDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionGradientBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionGradientBasisDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionGradientDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionGradientDataInternalLayoutdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_shapeFunctionGradientDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
d_updateFlagsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
distribute(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
extractToCellNodalData(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
extractToCellNodalDataKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
FEBasisOperationsBase(dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
getMultiVector(const unsigned int vecBlockSize, const unsigned int index=0) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
init(const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const UpdateFlags updateFlags=update_values)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
initializeConstraints()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
initializeFlattenedIndexMaps()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
initializeIndexMaps()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
initializeMPIPattern()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
initializeShapeFunctionAndJacobianBasisData()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
initializeShapeFunctionAndJacobianData()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
integrateWithBasis(ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
integrateWithBasisKernel(const ValueTypeBasisCoeff *quadratureValues, const ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
interpolate(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients=NULL) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
interpolateKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
interpolateKernel(const ValueTypeBasisCoeff *nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
inverseJacobians() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
inverseJacobiansBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
inverseJacobiansBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
JxW() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
JxWBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
JxWBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
mpiPatternP2Pdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
nCells() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
nDofsPerCell() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
nOwnedDofs() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
nQuadsPerCell() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
nRelaventDofs() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
reinit(const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorage=true)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
resizeTempStorage()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
scratchMultiVectorsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >mutable
shapeFunctionBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
shapeFunctionBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
shapeFunctionData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
shapeFunctionGradientBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
shapeFunctionGradientBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
shapeFunctionGradientData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
tempCellNodalDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >mutableprotected
tempQuadratureGradientsDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >protected
tempQuadratureGradientsDataNonAffinedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >protected
~FEBasisOperationsBase()=defaultdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
+ + + + diff --git a/classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html b/classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html new file mode 100644 index 000000000..716a144c8 --- /dev/null +++ b/classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html @@ -0,0 +1,740 @@ + + + + + + + +DFT-FE: dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST > Class Template Reference
+
+
+ +

#include <FEBasisOperations.h>

+
+Inheritance diagram for dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >:
+
+
+ + +dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void interpolate (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &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, dftfe::utils::MemorySpace::HOST > &nodalData) const
 Integrate cell level quadrature data times shape functions to process level nodal data.
 
void extractToCellNodalData (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr) const
 Get cell level nodal data from process level nodal data.
 
void accumulateFromCellNodalData (const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData) const
 Accumulate cell level nodal data into process level nodal data.
 
void interpolateKernel (const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &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, dftfe::utils::MemorySpace::HOST > &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, dftfe::utils::MemorySpace::HOST > &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, dftfe::utils::MemorySpace::HOST > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) const
 Accumulate cell level nodal data into process level nodal data.
 
- Public Member Functions inherited from dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
 FEBasisOperationsBase (dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)
 Constructor, fills required data structures using deal.ii's MatrixFree and AffineConstraints objects.
 
 ~FEBasisOperationsBase ()=default
 Default Destructor.
 
void init (const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const UpdateFlags updateFlags=update_values)
 fills required data structures for the given dofHandlerID
 
void reinit (const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorage=true)
 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 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 resizeTempStorage ()
 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, memorySpace > & shapeFunctionBasisData (bool transpose=false) const
 Shape function values at quadrature points in ValueTypeBasisData.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionBasisData (bool transpose=false) const
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionGradientBasisData (bool transpose=false) const
 Shape function gradient values at quadrature points in ValueTypeBasisData.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionGradientBasisData (bool transpose=false) const
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseJacobiansBasisData () 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 dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseJacobiansBasisData () const
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & JxWBasisData () const
 determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each quad point for each cell.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & JxWBasisData () const
 
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.
 
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) const
 Apply constraints on given multivector.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
using constraintInfoClass = dftUtils::constraintMatrixInfo
 
- Public Attributes inherited from dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
constraintInfoClass d_constraintInfo
 
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
 
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > d_flattenedCellDofIndexToProcessDofIndexMap
 
std::vector< dealii::CellId > d_cellIndexToCellIdMap
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_inverseJacobianData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_JxWData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataInternalLayout
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_inverseJacobianBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_JxWBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisDataTranspose
 
std::map< unsigned int, std::vector< dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > > > scratchMultiVectors
 
std::vector< unsigned int > d_quadratureIDsVector
 
unsigned int d_quadratureID
 
std::vector< unsigned int > d_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
 
UpdateFlags d_updateFlags
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P
 
- Protected Attributes inherited from dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempCellNodalData
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsData
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsDataNonAffine
 
+

Member Function Documentation

+ +

◆ accumulateFromCellNodalData()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::accumulateFromCellNodalData (const ValueTypeBasisCoeff * cellNodalDataPtr,
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > & nodalData 
) 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.
+
+
+ +
+
+ +

◆ accumulateFromCellNodalDataKernel()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::accumulateFromCellNodalDataKernel (const ValueTypeBasisCoeff * cellNodalDataPtr,
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > & 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.
+
+
+ +
+
+ +

◆ extractToCellNodalData()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::extractToCellNodalData (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > & nodalData,
ValueTypeBasisCoeff * cellNodalDataPtr 
) 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].
+
+
+ +
+
+ +

◆ extractToCellNodalDataKernel()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::extractToCellNodalDataKernel (const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > & 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.
+
+
+ +
+
+ +

◆ integrateWithBasis()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::integrateWithBasis (ValueTypeBasisCoeff * quadratureValues,
ValueTypeBasisCoeff * quadratureGradients,
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > & nodalData 
) 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.
+
+
+ +
+
+ +

◆ integrateWithBasisKernel()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::integrateWithBasisKernel (const ValueTypeBasisCoeff * quadratureValues,
const ValueTypeBasisCoeff * quadratureGradients,
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > & 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()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::interpolate (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > & nodalData,
ValueTypeBasisCoeff * quadratureValues,
ValueTypeBasisCoeff * quadratureGradients = NULL 
) 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].
+
+
+ +
+
+ +

◆ interpolateKernel() [1/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::interpolateKernel (const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > & 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]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::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.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.png b/classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.png new file mode 100644 index 0000000000000000000000000000000000000000..1125d315e24ce0d44c4cce39e01b5a271b922a30 GIT binary patch literal 2096 zcmd6o=UdZR8ipeX3Kbo00x1fL`3PmBWQw%$czILLX#5E zAs{G4q=>K-jRPXhNg^cyLYWJQX$)mU3z@jr&VJfIV9$qh-t*k&>;0UcJltI5WYuLs zAdnmaxQGUUBuL`fC1qJHz;I%Es0Q2M5Ku zCxO}^W-`fWH&2lG{_kZeQAq=VPV^!!I$pVXj7wZ1tTf4AtW5pnJs|oU6LmdX;caTF zK8z;paCVQBlhD;94a{`KxW+KL>bhbW-bxmPONGG?pwpgkB*Bmn;4Nc_s0R{#^+?e2 zzmJ5J;0a<_=5-<>y+Oks%7_=`_m`~M3tV49R-MdIl)PbmsP&n-N+|Ja6df72wYfud zGBMrg*)Ql`3=69qqtc}^2%9zu{UsCUbUqCcV7z5r>;g2NGqiVvHnjxIXuock<;N** zmN+f5Z131F->o4!op)uw8{Vg{1{86I=JRIA&rmS=v~au~lb*fupgm{*k93#*3|{rB z66IrP;7(q^z|I!q=tUmZ--6MbGy_YDMi0PLA}w)Vx=$KwN)!gX)@w=z99n{$)3;pWvY$jw_nY@5SJ5o(z(6@j*1rnhdxR4e0 zbz`Qi5Z65BqSXmItAhzix!jq4A)9vmeQHAsV=h`yJARVY#_4_!t#g7zYuAYW;7(lA ztY<2pg{8423Jcl3+Nn=al{p4@>4@)RQ}!;Lj9Ivcr*ktr9vU6MYArv(m(KMykcvj# z&VE4j7DT-;EqrP`;yZjxP_nH9<#b}kh8{C}9Db~fWNCf_ zKR-;OLXDMMt6MNE^g^#Q~^++fC*fDHlH~m zHF~5$p?1(Evv0dy&y;3CBUXx%k8S}d`Lm>gg67|~ZKthXrPX80<7_ax3|A~Sv=9|_ zDK(193uFo=f^JOh81)L;BoQ#b;fQZKFxc^zkokUxFeTbO_tzhL!t;GF;fYwn)D60c z?5!SAY@!#K+&^Tk@i>?|mz#K#DUT)`D(Bz|e=mp(w}9>`_YF*^^=uS5%2ik+a5bmU z%xqv2vR#meD*_J;g^LZSDU9ic?t%RVr3knECzeE>0K&{!?1jc(BK%KFc2p^1pJ-h% z{*jEX7{_A{vY>ucCP+sLWC;47o({4SLaZ3Jn5|4ZcJIU*PC};PZR`zi`*P1dV)Fj7HZLzx>4mYN&@WMEJSO zG(zj35#k~t6cb3|B0-{&gi`W0B@&{w8lX@6=!$#CNp_HXv?wOa6f`t0Sd|r zXw{2(Vwt`Nn_XvC-Nx`;0yf&)QLByYyVeNycuxxP<(Dp@By^5ilP3M8-I(`(6;5zX z>iN062l&>Titc>JeMQwnjt0f|v%cNbw8feq+A@|DZPi3KU$HSl>0tZGCsveGz=tba zM;f1-=h}&IbvoyH^=0lW9FCz)Y>OL(rqt#v&b%fD*CZ#;85?l7mwfm`PcaQt?j)q~ z7I9a$X|z16{4?Tvfda9|zJJWTUZEAgudtep{+oJB4-88;3hLkdY(lYs0Q zd7YVBOx(HF-JAR=(=ckBiiXOKAwj~`I zZXa}-X{XaBniP^tJ~^j6WMKi+MzrAb`QOGnt2z?R%pT|pi@`qJqpP3aR(Sy{(y85H{_r`*VYy?43&3n4)dP995uD7daa1~jKzeE|d(uHdQFF2FBwkV?Qckg|bm|(!*C$$>V z7SrjxW3nuZ{J1l_c1?X)(9&tTWjs>)wl;z0raIeEAM(nAd$fb)pRuUUI%r-o|Ei*{ z)%RcB47b#OIHGoo!OcHUJ)-3Z&}o+#&Oz=1Cdw`{XlB|fS27^_%z=kI-=9zwibqmf z*VpFMD)OONXFh+2XmS{=l^tq=sG(%4QW*Rn2)uP|HKD#LF8{ZCR|s~e8S#27)s8!0 z!gf~`S>y=li3MmB6EvaYpQq3WB!VJ#`AaBvxr9^ + + + + + + +DFT-FE: Member List + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
areAllCellsAffinedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
areAllCellsCartesiandftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellID(const unsigned int iElem) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellsTypeFlag() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
clearScratchMultiVectors() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
constraintInfoClass typedefdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
createMultiVector(const unsigned int blocksize, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
createScratchMultiVectors(const unsigned int vecBlockSize, const unsigned int numMultiVecs=1) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellDofIndexToProcessDofIndexMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellIndexToCellIdMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellsBlockSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_constraintInfodftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_constraintsVectordftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_dofHandlerIDdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_flattenedCellDofIndexToProcessDofIndexMapdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_inverseJacobianBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_inverseJacobianDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_JxWBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_JxWDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_locallyOwnedSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_localSizedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_matrixFreeDataPtrdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nCellsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nDofsPerCelldftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nQuadsPerCelldftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nVectorsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_quadratureIDdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_quadratureIDsVectordftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionBasisDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientBasisDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientBasisDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientDataInternalLayoutdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientDataTransposedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_updateFlagsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
distribute(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
FEBasisOperationsBase(dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
getMultiVector(const unsigned int vecBlockSize, const unsigned int index=0) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
init(const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const UpdateFlags updateFlags=update_values)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeConstraints()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeFlattenedIndexMaps()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeIndexMaps()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeMPIPattern()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeShapeFunctionAndJacobianBasisData()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeShapeFunctionAndJacobianData()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
inverseJacobians() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
inverseJacobiansBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
inverseJacobiansBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
JxW() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
JxWBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
JxWBasisData() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
mpiPatternP2Pdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nCells() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nDofsPerCell() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nOwnedDofs() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nQuadsPerCell() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nRelaventDofs() constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
reinit(const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorage=true)dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
resizeTempStorage()dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
scratchMultiVectorsdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >mutable
shapeFunctionBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
shapeFunctionBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
shapeFunctionData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
shapeFunctionGradientBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
shapeFunctionGradientBasisData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
shapeFunctionGradientData(bool transpose=false) constdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
tempCellNodalDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >mutableprotected
tempQuadratureGradientsDatadftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >protected
tempQuadratureGradientsDataNonAffinedftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >protected
~FEBasisOperationsBase()=defaultdftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
+ + + + diff --git a/classdftfe_1_1basis_1_1_f_e_basis_operations_base.html b/classdftfe_1_1basis_1_1_f_e_basis_operations_base.html new file mode 100644 index 000000000..1333f2faf --- /dev/null +++ b/classdftfe_1_1basis_1_1_f_e_basis_operations_base.html @@ -0,0 +1,1871 @@ + + + + + + + +DFT-FE: dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace > Class Template Reference
+
+
+ +

#include <FEBasisOperations.h>

+
+Inheritance diagram for dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >:
+
+
+ + +dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace > + +
+ + + + +

+Public Types

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

+Public Member Functions

 FEBasisOperationsBase (dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)
 Constructor, fills required data structures using deal.ii's MatrixFree and AffineConstraints objects.
 
 ~FEBasisOperationsBase ()=default
 Default Destructor.
 
void init (const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const UpdateFlags updateFlags=update_values)
 fills required data structures for the given dofHandlerID
 
void reinit (const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorage=true)
 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 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 resizeTempStorage ()
 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.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionBasisData (bool transpose=false) const
 Shape function values at quadrature points in ValueTypeBasisData.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionBasisData (bool transpose=false) const
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionGradientBasisData (bool transpose=false) const
 Shape function gradient values at quadrature points in ValueTypeBasisData.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & shapeFunctionGradientBasisData (bool transpose=false) const
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseJacobiansBasisData () 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.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseJacobiansBasisData () const
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & JxWBasisData () const
 determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each quad point for each cell.
 
template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & JxWBasisData () const
 
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.
 
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) const
 Apply constraints on given multivector.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

constraintInfoClass d_constraintInfo
 
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
 
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > d_flattenedCellDofIndexToProcessDofIndexMap
 
std::vector< dealii::CellId > d_cellIndexToCellIdMap
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_inverseJacobianData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_JxWData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataInternalLayout
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_inverseJacobianBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_JxWBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisData
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisDataTranspose
 
std::vector< dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisDataTranspose
 
std::map< unsigned int, std::vector< dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > > > scratchMultiVectors
 
std::vector< unsigned int > d_quadratureIDsVector
 
unsigned int d_quadratureID
 
std::vector< unsigned int > d_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
 
UpdateFlags d_updateFlags
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P
 
+ + + + + + + +

+Protected Attributes

dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempCellNodalData
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsData
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsDataNonAffine
 
+

Member Typedef Documentation

+ +

◆ constraintInfoClass

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::constraintInfoClass = dftUtils::constraintMatrixInfo
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ FEBasisOperationsBase()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + +
dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::FEBasisOperationsBase (dealii::MatrixFree< 3, ValueTypeBasisData > & matrixFreeData,
std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > & constraintsVector 
)
+
+ +

Constructor, fills required data structures using deal.ii's MatrixFree and AffineConstraints objects.

+
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.
+
+
+ +
+
+ +

◆ ~FEBasisOperationsBase()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::~FEBasisOperationsBase ()
+
+default
+
+ +

Default Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ cellID()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
dealii::CellId dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::cellID (const unsigned int iElem) const
+
+ +

returns the deal.ii cellID corresponing to given cell Index.

+
Parameters
+ + +
[in]iElemcell Index
+
+
+ +
+
+ +

◆ cellsTypeFlag()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::cellsTypeFlag () const
+
+ +

returns 2 if all cells on current processor are Cartesian, 1 if all cells on current processor are affine and 0 otherwise.

+ +
+
+ +

◆ clearScratchMultiVectors()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::clearScratchMultiVectors () const
+
+ +

Clears scratch multivectors.

+ +
+
+ +

◆ createMultiVector()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::createMultiVector (const unsigned int blocksize,
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & multiVector 
) const
+
+ +

Creates a multivector.

+
Parameters
+ + + +
[in]blocksizeNumber of vectors in the multivector.
[out]multiVectorthe created multivector.
+
+
+ +
+
+ +

◆ createScratchMultiVectors()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperationsBase< 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()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::distribute (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & multiVector) const
+
+ +

Apply constraints on given multivector.

+
Parameters
+ + +
[in,out]multiVectorthe given multivector.
+
+
+ +
+
+ +

◆ getMultiVector()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::getMultiVector (const unsigned int vecBlockSize,
const unsigned int index = 0 
) const
+
+ +

Gets scratch multivectors.

+
Parameters
+ + + +
[in]vecBlockSizeNumber of vectors in the multivector.
[out]numMultiVecsindex of the multivector among those with the same vecBlockSize.
+
+
+ +
+
+ +

◆ init()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::init (const unsigned int & dofHandlerID,
const std::vector< unsigned int > & quadratureID,
const UpdateFlags updateFlags = update_values 
)
+
+ +

fills required data structures for the given dofHandlerID

+
Parameters
+ + + +
[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()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::initializeConstraints ()
+
+ +

Initializes the constraintMatrixInfo object.

+ +
+
+ +

◆ initializeFlattenedIndexMaps()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::initializeFlattenedIndexMaps ()
+
+ +

Initializes indexset maps from process level indices to cell level indices for multivectors.

+ +
+
+ +

◆ initializeIndexMaps()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::initializeIndexMaps ()
+
+ +

Initializes indexset maps from process level indices to cell level indices for a single vector, also initializes cell index to cellid map.

+ +
+
+ +

◆ initializeMPIPattern()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::initializeMPIPattern ()
+
+ +

Constructs the MPIPatternP2P object.

+ +
+
+ +

◆ initializeShapeFunctionAndJacobianBasisData()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::initializeShapeFunctionAndJacobianBasisData ()
+
+ +

Fill the shape function data and jacobian data in the ValueTypeBasisData datatype.

+ +
+
+ +

◆ initializeShapeFunctionAndJacobianData()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::initializeShapeFunctionAndJacobianData ()
+
+ +

Fill the shape function data and jacobian data in the ValueTypeBasisCoeff datatype.

+ +
+
+ +

◆ inverseJacobians()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, 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.

+ +
+
+ +

◆ inverseJacobiansBasisData() [1/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+
+template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
+ + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::inverseJacobiansBasisData () 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.

+ +
+
+ +

◆ inverseJacobiansBasisData() [2/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+
+template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
+ + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::inverseJacobiansBasisData () const
+
+ +
+
+ +

◆ JxW()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::JxW () const
+
+ +

determinant of Jacobian times the quadrature weight at each quad point for each cell.

+ +
+
+ +

◆ JxWBasisData() [1/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+
+template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
+ + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::JxWBasisData () const
+
+ +

determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each quad point for each cell.

+ +
+
+ +

◆ JxWBasisData() [2/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+
+template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
+ + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::JxWBasisData () const
+
+ +
+
+ +

◆ nCells()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::nCells () const
+
+ +

Number of locally owned cells on the current processor.

+ +
+
+ +

◆ nDofsPerCell()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::nDofsPerCell () const
+
+ +

Number of DoFs per cell for the dofHandlerID set in init.

+ +
+
+ +

◆ nOwnedDofs()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::nOwnedDofs () const
+
+ +

Number of locally owned DoFs on the current processor.

+ +
+
+ +

◆ nQuadsPerCell()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::nQuadsPerCell () const
+
+ +

Number of quadrature points per cell for the quadratureID set in reinit.

+ +
+
+ +

◆ nRelaventDofs()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::nRelaventDofs () const
+
+ +

Number of DoFs on the current processor, locally owned + ghosts.

+ +
+
+ +

◆ reinit()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::reinit (const unsigned int & vecBlockSize,
const unsigned int & cellBlockSize,
const unsigned int & quadratureID,
const bool isResizeTempStorage = true 
)
+
+ +

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.
+
+
+ +
+
+ +

◆ resizeTempStorage()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::resizeTempStorage ()
+
+ +

Resizes the internal temp storage to be sufficient for the vector and cell block sizes provided in reinit.

+ +
+
+ +

◆ shapeFunctionBasisData() [1/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+
+template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
+ + + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::shapeFunctionBasisData (bool transpose = false) const
+
+ +

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].
+
+
+ +
+
+ +

◆ shapeFunctionBasisData() [2/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+
+template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
+ + + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::shapeFunctionBasisData (bool transpose = false) const
+
+ +
+
+ +

◆ shapeFunctionData()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::shapeFunctionData (bool transpose = false) const
+
+ +

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() [1/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+
+template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t< std::is_same< A, B >::value, int > = 0>
+ + + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::shapeFunctionGradientBasisData (bool transpose = false) const
+
+ +

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].
+
+
+ +
+
+ +

◆ shapeFunctionGradientBasisData() [2/2]

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+
+template<typename A = ValueTypeBasisCoeff, typename B = ValueTypeBasisData, typename std::enable_if_t<!std::is_same< A, B >::value, int > = 0>
+ + + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::shapeFunctionGradientBasisData (bool transpose = false) const
+
+ +
+
+ +

◆ shapeFunctionGradientData()

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::shapeFunctionGradientData (bool transpose = false) const
+
+ +

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].
+
+
+ +
+
+

Member Data Documentation

+ +

◆ areAllCellsAffine

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
bool dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::areAllCellsAffine
+
+ +
+
+ +

◆ areAllCellsCartesian

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
bool dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::areAllCellsCartesian
+
+ +
+
+ +

◆ d_cellDofIndexToProcessDofIndexMap

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
dftfe::utils::MemoryStorage<dftfe::global_size_type, dftfe::utils::MemorySpace::HOST> dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_cellDofIndexToProcessDofIndexMap
+
+ +
+
+ +

◆ d_cellIndexToCellIdMap

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dealii::CellId> dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_cellIndexToCellIdMap
+
+ +
+
+ +

◆ d_cellsBlockSize

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_cellsBlockSize
+
+ +
+
+ +

◆ d_constraintInfo

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
constraintInfoClass dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_constraintInfo
+
+ +
+
+ +

◆ d_constraintsVector

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<const dealii::AffineConstraints<ValueTypeBasisData> *>* dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_constraintsVector
+
+ +
+
+ +

◆ d_dofHandlerID

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_dofHandlerID
+
+ +
+
+ +

◆ d_flattenedCellDofIndexToProcessDofIndexMap

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
dftfe::utils::MemoryStorage<dftfe::global_size_type, memorySpace> dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_flattenedCellDofIndexToProcessDofIndexMap
+
+ +
+
+ +

◆ d_inverseJacobianBasisData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_inverseJacobianBasisData
+
+ +
+
+ +

◆ d_inverseJacobianData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_inverseJacobianData
+
+ +
+
+ +

◆ d_JxWBasisData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_JxWBasisData
+
+ +
+
+ +

◆ d_JxWData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_JxWData
+
+ +
+
+ +

◆ d_locallyOwnedSize

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_locallyOwnedSize
+
+ +
+
+ +

◆ d_localSize

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_localSize
+
+ +
+
+ +

◆ d_matrixFreeDataPtr

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
const dealii::MatrixFree<3, ValueTypeBasisData>* dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_matrixFreeDataPtr
+
+ +
+
+ +

◆ d_nCells

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_nCells
+
+ +
+
+ +

◆ d_nDofsPerCell

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_nDofsPerCell
+
+ +
+
+ +

◆ d_nQuadsPerCell

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<unsigned int> dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_nQuadsPerCell
+
+ +
+
+ +

◆ d_nVectors

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_nVectors
+
+ +
+
+ +

◆ d_quadratureID

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_quadratureID
+
+ +
+
+ +

◆ d_quadratureIDsVector

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<unsigned int> dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_quadratureIDsVector
+
+ +
+
+ +

◆ d_shapeFunctionBasisData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionBasisData
+
+ +
+
+ +

◆ d_shapeFunctionBasisDataTranspose

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionBasisDataTranspose
+
+ +
+
+ +

◆ d_shapeFunctionData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionData
+
+ +
+
+ +

◆ d_shapeFunctionDataTranspose

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionDataTranspose
+
+ +
+
+ +

◆ d_shapeFunctionGradientBasisData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionGradientBasisData
+
+ +
+
+ +

◆ d_shapeFunctionGradientBasisDataTranspose

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisData, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionGradientBasisDataTranspose
+
+ +
+
+ +

◆ d_shapeFunctionGradientData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionGradientData
+
+ +
+
+ +

◆ d_shapeFunctionGradientDataInternalLayout

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionGradientDataInternalLayout
+
+ +
+
+ +

◆ d_shapeFunctionGradientDataTranspose

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::vector<dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_shapeFunctionGradientDataTranspose
+
+ +
+
+ +

◆ d_updateFlags

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
UpdateFlags dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_updateFlags
+
+ +
+
+ +

◆ mpiPatternP2P

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + +
std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace> > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::mpiPatternP2P
+
+ +
+
+ +

◆ scratchMultiVectors

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map< unsigned int, std::vector< dftfe::linearAlgebra::MultiVector<ValueTypeBasisCoeff, memorySpace> > > dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::scratchMultiVectors
+
+mutable
+
+ +
+
+ +

◆ tempCellNodalData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::tempCellNodalData
+
+mutableprotected
+
+ +
+
+ +

◆ tempQuadratureGradientsData

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::tempQuadratureGradientsData
+
+protected
+
+ +
+
+ +

◆ tempQuadratureGradientsDataNonAffine

+ +
+
+
+template<typename ValueTypeBasisCoeff , typename ValueTypeBasisData , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<ValueTypeBasisCoeff, memorySpace> dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::tempQuadratureGradientsDataNonAffine
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1basis_1_1_f_e_basis_operations_base.png b/classdftfe_1_1basis_1_1_f_e_basis_operations_base.png new file mode 100644 index 0000000000000000000000000000000000000000..77d3a56aa8a64846ab75eea85f38c15d1a0c8666 GIT binary patch literal 1815 zcmb`IYgCeF9Kc_-I%&f^eJ?kqNn zlm7IgFe*#wY@;b&P&8e2_#++Ewt5-Ff*%R!C9FdCDOIFH-c_J_=Cyo&UhI+J9Pxs4 zMLTixb6RU)g`0G6gHgOf6I0mj-%NJu+S;4NpRw6h{O#8U^%q)ed=$Ny=+?z#x>}AB z>^jvjwzg?Mv(DzjE>$GCU)Vg=qk9l-Qa(NjBn! zSN0Y3&X_WnRq~j`B>e&XYKO&yu|r{e?9jDZf!msKl*uvui1{3;t4dDTc}A5=c01i( zvTDqq3)|Wh>{7KIOe7~m_jX%){h_ojylR=NBA?Bm<__VyK+Tr{=2Z+Y_ia2aNj^6V71BD{mp-74ynuk4+MghC%2 ziPX@{we_uG=k%n-xpWeW3nAIluepiD!+>$)86plaK5Tdk=);TFE)fk-ZtIrkj2nZC^vD}2$8DT=-{!9U zpW7PO6rW)-&M=E3n8g!lZ$^d(aU00-fR_;Pub}3$)c4Enz{U0Sx%xYZm0qPbn*6Rk zPo2}YGG>{PS#{x7>Xt~e@j!-jq@Up$?d)p?TB_@njM+~h3)n>S_Ej2)?nAtW60moRDN{$n0;?pR;sdIAB z2Q4=SYr)dIkNaMc7avxJ5_b4dc7lWAQGd?cDRaRnjKeL^hO0gOm!#apglFwQ%YE(A z;U{FMmj|;8hGcSSoVRlYH_(bm3Gx&LB_6L$rOhz+#-{)D4&hqQd4VIk38ht*` + + + + + + +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..329474433 --- /dev/null +++ b/classdftfe_1_1cg_p_r_p_non_linear_solver.html @@ -0,0 +1,1516 @@ + + + + + + + +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, double > computeDeltaD ()
 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< double > d_conjugateDirection
 storage for conjugate direction
 
std::vector< double > d_gradient
 storage for the gradient of the nonlinear problem in the current cg step
 
std::vector< double > d_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 int > d_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 (nonlinearSolverProblemproblem,
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 (nonlinearSolverProblemproblem,
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,
nonlinearSolverProblemproblem 
)
+
+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..e07bbe0488ddac2155a2a1bfdb506c1ba9d5190c GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^8-X~0gBeIBzE8OTq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)db&7|&7j$vjX#=P{o5kv z{iCghOZk*e&bueHJ~*=fbmq?O@!I?S#Cd{G>KotI>`<}ZrTotK`?s>U8zs}+<^Q|S zpP{1vMYAy0xcP|c{9Au#P5k=B-m|89_iMwGS62Aj1a#kj`cXWx&^cz`ztfNJbgZ71 zv+B0k4&Nrfztd0l)x|t@Sa)=9_=J@Bk5kk<DfPj0eIUc^LL_B{6&m6<}^y-z33MBYK44!D# z?fbvj|4y1~`;K+3#UXp={Izw6dAsG~(H@)duWOI*Ez0jWZ!PgTA}H&MdS2E?yZ-1a z%KiEs)|X>akMb7&d{q@w+IVNu>{Yg3yR?%oYrj%?ai#ulmCyebv+iEh-dFeR??>lP z&X0oYyf3|f72JO|*mY7}Y + + + + + + +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 &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 bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)dftfe::chebyshevOrthogonalizedSubspaceIterationSolver
solve(operatorDFTClass &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..305ae5bfa --- /dev/null +++ b/classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html @@ -0,0 +1,580 @@ + + + + + + + +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 &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 bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)
 Solve a generalized eigen problem.
 
void solve (operatorDFTClass &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 dftParametersdftParams 
)
+
+ +

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 (operatorDFTClassoperatorMatrix,
elpaScalaManagerelpaScala,
dataTypes::numbereigenVectorsFlattened,
dataTypes::numbereigenVectorsRotFracDensityFlattened,
const unsigned int totalNumberWaveFunctions,
const unsigned int localVectorSize,
std::vector< double > & eigenValues,
std::vector< double > & residuals,
const MPI_Comm & interBandGroupComm,
const bool computeResidual,
const bool useMixedPrec = false,
const bool isFirstScf = false 
)
+
+ +

Solve a generalized eigen problem.

+ +
+
+ +

◆ solve() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve (operatorDFTClassoperatorMatrix,
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..17549aa78b2ab5c7e3bebba7d33d68a31ce07b15 GIT binary patch literal 1091 zcmeAS@N?(olHy`uVBq!ia0y~yVDtpC12~w0vbCErOYESZy3 zlszV^NIK3^Imt0EeUr|VzwIj3$JTDI_q|YE7i7l)|Ic@{^Q$)Cm(HJ z_0QfT`Z&ng`{A0Uk59c>v21bHb+-6a_lWL$f7bfXycK`@thwhut@DOEeePXP`ThFV z?gM|{zdF=fxiIXz<pzjJ|IVMeW%-G+#O}g;3zskd zawdJwzF9tD|BhYlOU-l^Z}t2KPdwrB_hD_3 z^`x^8@60{CdGl@Eu*+3B^Zy;1_wu&)&*as!Rpg&Vy0dt)eM(aEkJj+q$G$#n@-r9p zlje_D!_7VSDWZ7)l8UF>hs;gaq9#XW?`31yVW6sH^`I^7`RlfeX7I@~#QJwbLy_J9d z`Zis6yp?D-r|8z-562eI{i2r7Jjeb+@Z{~+9$za5nsI*K;l1*nzh+gdsh<2;pnmqr zS_$$0r@eRVW&3Y*ZQ0t0yH^it9OA3lzrXbAp<7-O%OdRZJhFcnezJYF?)=Zv>C6SnzpuPjyTzGAmI@r&`R zv|1_G`zIqW+F2$SiChc)nv;^Z@4Ii^#DgX8eCNsMeKnVDi$9Y*Iqz)0+r?6&z>@Pz z?q=^^@ii>mblve<%d+BMeJ2-BR&IS?zG3@p-({yC%9ks@*=4o=eDLb4pF2(-OtV>S z`2W{kxo^pnmupG%B}KTDUvt@>dgtbecO{o1>k8)Y*}mrYmFCQ?N1utkym{^V?pqpn z;>1?g%H3DrpZjUc?VfY*YAffQ^Q#vtZ-0|uZ^>7;dBdBPm*pG&UCH_W&9V2~JLQ*l zUryf4J@+!%?c1BYSYNk?^K&n6eSKuclqK^&X<623&sM2*?KpW_)9>~smDoqNzHWQE zbKiOgapXr$p7dqEI!4sl`A!S+3i8st{)3;lnXls5<#=mgc4zQ(^>bP0l+XkKdL9qp 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..d3a16a575 --- /dev/null +++ b/classdftfe_1_1dealii_linear_solver-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::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..b911e595b --- /dev/null +++ b/classdftfe_1_1dealii_linear_solver.html @@ -0,0 +1,490 @@ + + + + + + + +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< double > gvec
 define some temporary vectors
 
distributedCPUVec< double > dvec
 
distributedCPUVec< double > hvec
 
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 (dealiiLinearSolverProblemproblem,
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..2034d7d036a64c2a1d1c8ccc40eae4ffc29928f6 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^lYlsYgBeI3ZM_4cqyv0HT>t<74`jZ0^R=}9&~gg{ z%>s$(XI>mQZ~!PCJn8ZZpd4pOkY6wZkPimtOtY^rFfgfjx;TbZFut98anc$E9+%nM zvR3{7-@V>Kt8>A}ytm9-r^;3pC?4|km=UgXdea$I9Tm&TLY*qgszRP_Rc>0LPhWU! z+xD+oQZX|+^8X(%m7h+Em)eXYjBX{*&Uf42yrp&duBg9vZMN0b8@_%bCv-b^zL@Uw zIi^Y{{l0sY3d%42cH`F1C+4~8Z{uF|czjyrzT~3Qb&Z{o`6VsS**aC+f9b2t-dH!g zY!malYd1sd*jJvfng7R(!M*CcN8q9V3e(^5>p5h_+xJ|mQ=GZ_q-ekMCeiYD?^j*8 z! z0quzl3PDPY4oh5^8az5#7$ypFGAOAEF}QfCFmz1uU=YwmR!}dsa!SxMp)QrPOI#)` z@#s|XoG24itMl}Q%E^_|QS9f;OeS23(p}bmG;gBWoY~@T9{CYHzQ#46V6pnNS7u*c zr2O|6wbTDeeFy~vuG^6b)? zUeS}={yq46sCvo#3G3L+9X9=}=-F2#@Ra4h3^Uf?0Ex)n7SSlni`s<$QXAIwR)`!IWTi|iYT6L0& qtCxyr*A$OQBAKpQOQ)>-!k_ZK!mL2KwH%m;7(8A5T-G@yGywoJ)+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..0003227d9 --- /dev/null +++ b/classdftfe_1_1dealii_linear_solver_problem-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::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..b64d64377 --- /dev/null +++ b/classdftfe_1_1dealii_linear_solver_problem.html @@ -0,0 +1,473 @@ + + + + + + + +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..8fc5f56a0fca7547e761020bdcc632c08886d8df GIT binary patch literal 1582 zcmchXdoJM7cokI1@X&c_cal}ZH1KFA|(*A-Y>n1vd$TgOBq z5pwR9+VupvTX})x;szk`mxWV%@CpDh6$JYO$1kBKGbh7_cNly}w!1gcr_`%0;pyym zEXlrZ9lg6M81L}opO5w~VV(kX)G4}d_SX`aV>bmD!vsMxb1doG&}0Zs zU(C!O*|ag2((|dixQ1iAkxD<}qjU*|=D7Uo3o<4%PApYR@=b?y&g!hE(H1L7xA&17 z(cn7vQ>;jdK}$Zm`b`U_TxYWMaQqaaUMxrcp_mUT-jZ+1hiBpnpNRE)Bch=}e5(x` zMXuMq#lwmm7j{bPQ*)&f>eNnQdB2h7FKl5zP(Q89s_K-pEGQl4YHx3gly|)050kht zQCMDb06ZrATmfs#y@`+bb8W$*J7Iw!%3*es)Le6fJqnFBCP0U3>poL+8Ceo5t}ibi z>7I#n-*nU+mW)(VH@L&h^lehL`0fO)2m zE>C9u1*4#v^7D1iA@0mcI8dE4Tp zii)nNB6eM;nqj=wX%MwabiEitEC;_>etL?HM?KS(=!*dF6@e=AHC4Jno%Emd&%X)b zNxxtr4C(^vIa^ZnDC^q|a`6ABdNkwm(#-3yd1*zLWk<~N&fnSGub{S6rCimcp?HA#g$?Iv`Z zf#A`hyJ^qc3zVQ)ECn?nnPbfpW$Vj>+B7Z;WBUUy_bB=Y$0_{fhtS~}Lg%fe%C)w| zK#2e1lQoLxCBgZO?O5Wj>C#4}LrY~-qI(}Q*|xYTSx4z;w4!WP=~>Qn#HamHGH>(5 zdDHh;BWbLGk5$Zx+bt6L5Z`GAt@W`I>Y&NON|q~HS(w)WCsP`zlngp#C+jVx-M_K- z>W69@BDkTS6X>DdvkXO;zhgZPc^$a;J0oJl-L%@onc5v(SAn?FJvrX>QQ7A1K?A(`t0wIN`VRy*an+EOz$Te5x05NTE8{#8O+4e{IwKSE zt=l3C`Xrrwp7WVr+fRxgDqBZt{bTsh&aU z1(vmRpRpvTsPXZcl7v!!U;2#Tl~MS;^90T|2Y2}Hg)&8hcra~9L;npHWcP=LHg{|6 zFU-4FYsvLBxD=J^uJQhWSMthIlTfcJO9Ez^K+l<^F($Kxcw1N+YbCY=8?mAZ>A+!- z9=`8IWOV!Jsi>cWbZQyBtJ6)(sh)EWMzi1&Qd_SRXcOCW=F;9!AwH;aJksynnxcKx zn6p61bhO{JTj9qg5zr!#QP9yCy%X`Ig{t8M|Nn60&%N;y1 Q^0NbkLoW732Ps$n2EpbSN&o-= 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..a2f78ef1d --- /dev/null +++ b/classdftfe_1_1dft_base-members.html @@ -0,0 +1,119 @@ + + + + + + + +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..488c26b3c --- /dev/null +++ b/classdftfe_1_1dft_base.html @@ -0,0 +1,1106 @@ + + + + + + + +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 > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ getCellVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double dftfe::dftBase::getCellVolume () const
+
+pure virtual
+
+ +

Gets the current cell volume.

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+ +

◆ 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 >.

+ +
+
+
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..c332880b42853bebf9c3784ccc87ad49c22e8220 GIT binary patch literal 747 zcmeAS@N?(olHy`uVBq!ia0y~yU}Ocd12~w0q3f*F8(FfeDDeT9L6sm#;GF{Fa=?cCRWEe0H| zFEfoE{+(YD{+2as`KvVdvlT)YBpc)Q1^v)gZ23?zb-}7%1*)t;3ami^q3X*6W-Q}S z+#eD;H|%rF`p{7SYnwIBSjWb#TIDDGnN`BhKhf^#%Z};iZ0Ze*ql%YKi23ySarPgR zR?G8u6R*$rytebgt{N-*a|gKI*{pQoo%#Ap6TBbXimCb3Yq2mTZVET^=JM+B zz|heD{_9tBzdsWnDLzeY!X=yBV$YJ_hW}5UoG*3k`WKGStGBf^CopMFXj)~Z2y|U* zn-hnkO{}Yn-nHo+Cmv4~QRC20QfTFAl<;W0I#I;s2p2?khXqJAYmk7T`Vt2&AX0kN zBI3~~;^F8r2V@+RW=DrGNWl*2R*B?2Vey8?D%N_jG_*r(V`5P6bDClDM4Z9G^x6II zZ!UghN=Pl56Z3g@%dbMl1y>(0RAp+I+*`U$taQd)oeWMSfo`BO%+Y3--v&Xh+x1Dq~i3@O%5k-U9#G+`qS7TAg&$ukjFV|brHQR5~wDA8MWw!VpPPz3$@b$9! z%rOh!KRxg+Alfmff5p<`#qJCTd`lMZWIka3npblU|HElJ85o{xfx{aZUP~ru9Fcf@ b`78V7s0Xk0QWk0glO= + + + + + + +DFT-FE: Member List + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftClass< FEOrder, FEOrderElectro > Member List
+
+
+ +

This is the complete list of members for dftfe::dftClass< FEOrder, FEOrderElectro >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
a0dftfe::dftClass< FEOrder, FEOrderElectro >private
addAtomicRhoQuadValuesGradients(std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isConsiderGradData=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
aposterioriMeshGenerate()dftfe::dftClass< FEOrder, FEOrderElectro >private
applyHomogeneousDirichletBC(const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix)dftfe::dftClass< FEOrder, FEOrderElectro >private
applyPeriodicBCHigherOrderNodes()dftfe::dftClass< FEOrder, FEOrderElectro >private
atomLocationsdftfe::dftClass< FEOrder, FEOrderElectro >private
atomLocationsFractionaldftfe::dftClass< FEOrder, FEOrderElectro >private
atomTypesdftfe::dftClass< FEOrder, FEOrderElectro >private
basisOperationsPtrHostdftfe::dftClass< FEOrder, FEOrderElectro >private
bLowdftfe::dftClass< FEOrder, FEOrderElectro >private
calculateNearestAtomDistances()dftfe::dftClass< FEOrder, FEOrderElectro >private
calculateSmearedChargeWidths()dftfe::dftClass< FEOrder, FEOrderElectro >private
clearRhoData()dftfe::dftClass< FEOrder, FEOrderElectro >private
compute_fermienergy(const std::vector< std::vector< double > > &eigenValuesInput, const double numElectronsInput)dftfe::dftClass< FEOrder, FEOrderElectro >private
compute_fermienergy_constraintMagnetization(const std::vector< std::vector< double > > &eigenValuesInput)dftfe::dftClass< FEOrder, FEOrderElectro >private
compute_ldos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)dftfe::dftClass< FEOrder, FEOrderElectro >private
compute_localizationLength(const std::string &locLengthFileName)dftfe::dftClass< FEOrder, FEOrderElectro >private
compute_pdos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)dftfe::dftClass< FEOrder, FEOrderElectro >private
compute_rhoOut(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, const bool isConsiderSpectrumSplitting, const bool isGroundState=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
compute_tdos(const std::vector< std::vector< double > > &eigenValuesInput, const unsigned int highestStateOfInterest, const std::string &fileName)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeElectrostaticEnergyHRefined()dftfe::dftClass< FEOrder, FEOrderElectro >private
computeElementalOVProjectorKets()dftfe::dftClass< FEOrder, FEOrderElectro >private
computeJxWForRho(std::vector< double > &vecJxW)dftfe::dftClass< FEOrder, FEOrderElectro >
computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeNodalRhoFromQuadData()dftfe::dftClass< FEOrder, FEOrderElectro >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 >
computeRhoInitialGuessFromPSI(std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeRhoNodalFromPSI(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, bool isConsiderSpectrumSplitting)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeSparseStructureNonLocalProjectors_OV()dftfe::dftClass< FEOrder, FEOrderElectro >private
computeStress()dftfe::dftClass< FEOrder, FEOrderElectro >virtual
computeTotalDensityFromSpinPolarised(const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoSpinValues, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues)dftfe::dftClass< FEOrder, FEOrderElectro >
computeTotalGradDensityFromSpinPolarised(const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoSpinValues, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues)dftfe::dftClass< FEOrder, FEOrderElectro >
computeTraceXtHX(unsigned int numberWaveFunctionsEstimate)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeTraceXtKX(unsigned int numberWaveFunctionsEstimate)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeVolume(const dealii::DoFHandler< 3 > &_dofHandler)dftfe::dftClass< FEOrder, FEOrderElectro >private
computeVselfFieldGateauxDerFD()dftfe::dftClass< FEOrder, FEOrderElectro >private
computing_timerdftfe::dftClass< FEOrder, FEOrderElectro >private
computingTimerStandarddftfe::dftClass< FEOrder, FEOrderElectro >private
constraintsNonedftfe::dftClass< FEOrder, FEOrderElectro >private
constraintsNoneDataInfodftfe::dftClass< FEOrder, FEOrderElectro >private
constraintsNoneEigendftfe::dftClass< FEOrder, FEOrderElectro >private
constraintsNoneEigenDataInfodftfe::dftClass< FEOrder, FEOrderElectro >private
copyDensityFromVector(const std::vector< double > &rhoValuesVector, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues)dftfe::dftClass< FEOrder, FEOrderElectro >
copyDensityToVector(const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues, std::vector< double > &rhoValuesVector)dftfe::dftClass< FEOrder, FEOrderElectro >
copyGradDensityFromVector(const std::vector< double > &gradRhoValuesVector, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues)dftfe::dftClass< FEOrder, FEOrderElectro >
copyGradDensityToVector(const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues, std::vector< double > &gradRhoValuesVector)dftfe::dftClass< FEOrder, FEOrderElectro >
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 >private
createpRefinedDofHandler(dealii::parallel::distributed::Triangulation< 3 > &triangulation)dftfe::dftClass< FEOrder, FEOrderElectro >private
d_affineTransformMeshdftfe::dftClass< FEOrder, FEOrderElectro >private
d_atomicRhoScalingFacdftfe::dftClass< FEOrder, FEOrderElectro >private
d_atomIdToNonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuadsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_atomLocationsAutoMeshdftfe::dftClass< FEOrder, FEOrderElectro >private
d_atomNodeIdToChargeMapdftfe::dftClass< FEOrder, FEOrderElectro >private
d_atomsDisplacementsGaussianReaddftfe::dftClass< FEOrder, FEOrderElectro >private
d_atomTypeAtributesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_autoMeshdftfe::dftClass< FEOrder, FEOrderElectro >private
d_autoMeshMaxJacobianRatiodftfe::dftClass< FEOrder, FEOrderElectro >private
d_baseDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_bCellNonTrivialAtomIdsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_bCellNonTrivialAtomIdsBinsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_bCellNonTrivialAtomImageIdsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_bCellNonTrivialAtomImageIdsBinsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_binsStartDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_bQuadAtomIdsAllAtomsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_bQuadAtomIdsAllAtomsImagesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_bQuadValuesAllAtomsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_cellIdToNonlocalAtomIdsLocalCompactSupportMapdftfe::dftClass< FEOrder, FEOrderElectro >private
d_closestTriaVertexToAtomsLocationdftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsForHelmholtzRhoNodaldftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsForTotalPotentialElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsPRefineddftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsPRefinedOnlyHangingdftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsRhoNodaldftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsRhoNodalInfodftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsRhoNodalOnlyHangingdftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsVectordftfe::dftClass< FEOrder, FEOrderElectro >private
d_constraintsVectorElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_controlPointLocationsCurrentMovedftfe::dftClass< FEOrder, FEOrderElectro >private
d_deltaVlIdToFunctionIdDetailsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_deltaVlSplinesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_densityDofHandlerIndexdftfe::dftClass< FEOrder, FEOrderElectro >private
d_densityDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_densityMatDerFermiEnergydftfe::dftClass< FEOrder, FEOrderElectro >private
d_densityQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro >private
d_densityQuadratureIdElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_dftfeScratchFolderNamedftfe::dftClass< FEOrder, FEOrderElectro >private
d_dftParamsPtrdftfe::dftClass< FEOrder, FEOrderElectro >private
d_dispClosestTriaVerticesToAtomsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_dispersionCorrdftfe::dftClass< FEOrder, FEOrderElectro >private
d_dofHandlerPRefineddftfe::dftClass< FEOrder, FEOrderElectro >private
d_dofHandlerRhoNodaldftfe::dftClass< FEOrder, FEOrderElectro >private
d_domainBoundingVectorsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_domainVolumedftfe::dftClass< FEOrder, FEOrderElectro >private
d_eigenDofHandlerIndexdftfe::dftClass< FEOrder, FEOrderElectro >private
d_eigenVectorsDensityMatrixPrimeHostdftfe::dftClass< FEOrder, FEOrderElectro >private
d_eigenVectorsFlattenedHostdftfe::dftClass< FEOrder, FEOrderElectro >private
d_eigenVectorsRotFracDensityFlattenedHostdftfe::dftClass< FEOrder, FEOrderElectro >private
d_elementIdsInAtomCompactSupportdftfe::dftClass< FEOrder, FEOrderElectro >private
d_elementIteratorsInAtomCompactSupportdftfe::dftClass< FEOrder, FEOrderElectro >private
d_elementOneFieldIteratorsInAtomCompactSupportdftfe::dftClass< FEOrder, FEOrderElectro >private
d_elpaScaladftfe::dftClass< FEOrder, FEOrderElectro >private
d_entropicEnergydftfe::dftClass< FEOrder, FEOrderElectro >private
d_excManagerPtrdftfe::dftClass< FEOrder, FEOrderElectro >private
d_flatTopWidthsAutoMeshMovedftfe::dftClass< FEOrder, FEOrderElectro >private
d_forceDofHandlerIndexdftfe::dftClass< FEOrder, FEOrderElectro >private
d_forceDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_freeEnergydftfe::dftClass< FEOrder, FEOrderElectro >private
d_freeEnergyInitialdftfe::dftClass< FEOrder, FEOrderElectro >private
d_fvcontainerValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_fvSpin0containerValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_fvSpin1containerValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_gaussianConstantsAutoMeshdftfe::dftClass< FEOrder, FEOrderElectro >private
d_gaussianConstantsForcedftfe::dftClass< FEOrder, FEOrderElectro >private
d_gaussianMovementAtomsNetDisplacementsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_gaussianMovePardftfe::dftClass< FEOrder, FEOrderElectro >private
d_generatorFlatTopWidthsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_ghostProjectorIdsCurrentProcessdftfe::dftClass< FEOrder, FEOrderElectro >private
d_gllQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro >private
d_globalChargeIdToImageIdMapdftfe::dftClass< FEOrder, FEOrderElectro >private
d_globalChargeIdToImageIdMapTruncdftfe::dftClass< FEOrder, FEOrderElectro >private
d_globalTimerdftfe::dftClass< FEOrder, FEOrderElectro >private
d_gradbQuadValuesAllAtomsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_gradRhoAtomsValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_gradRhoAtomsValuesSeparatedftfe::dftClass< FEOrder, FEOrderElectro >private
d_gradRhoCoredftfe::dftClass< FEOrder, FEOrderElectro >private
d_gradRhoCoreAtomsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_gradRhoInValuesLpspQuaddftfe::dftClass< FEOrder, FEOrderElectro >private
d_gradRhoOutValuesLpspQuaddftfe::dftClass< FEOrder, FEOrderElectro >private
d_groundStateDensityHistorydftfe::dftClass< FEOrder, FEOrderElectro >private
d_groundStateEnergydftfe::dftClass< FEOrder, FEOrderElectro >private
d_helmholtzDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_hessianRhoAtomsValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_hessianRhoAtomsValuesSeparatedftfe::dftClass< FEOrder, FEOrderElectro >private
d_hessianRhoCoredftfe::dftClass< FEOrder, FEOrderElectro >private
d_hessianRhoCoreAtomsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_imageChargesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_imageChargesTruncdftfe::dftClass< FEOrder, FEOrderElectro >private
d_imageIdsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_imageIdsTruncdftfe::dftClass< FEOrder, FEOrderElectro >private
d_imagePositionsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_imagePositionsAutoMeshdftfe::dftClass< FEOrder, FEOrderElectro >private
d_imagePositionsTruncdftfe::dftClass< FEOrder, FEOrderElectro >private
d_isAtomsGaussianDisplacementsReadFromFiledftfe::dftClass< FEOrder, FEOrderElectro >private
d_isFirstFilteringCalldftfe::dftClass< FEOrder, FEOrderElectro >private
d_isRestartGroundStateCalcFromChkdftfe::dftClass< FEOrder, FEOrderElectro >private
d_kohnShamDFTOperatorPtrdftfe::dftClass< FEOrder, FEOrderElectro >private
d_kohnShamDFTOperatorsInitializeddftfe::dftClass< FEOrder, FEOrderElectro >private
d_kPointCoordinatesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_kPointWeightsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_locallyOwnedProjectorIdsCurrentProcessdftfe::dftClass< FEOrder, FEOrderElectro >private
d_locallyRelevantDofsPRefineddftfe::dftClass< FEOrder, FEOrderElectro >private
d_locallyRelevantDofsRhoNodaldftfe::dftClass< FEOrder, FEOrderElectro >private
d_localVselfsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_lpspQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro >private
d_lpspQuadratureIdElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_matrixFreeDataPRefineddftfe::dftClass< FEOrder, FEOrderElectro >private
d_meshdftfe::dftClass< FEOrder, FEOrderElectro >private
d_minDistdftfe::dftClass< FEOrder, FEOrderElectro >private
d_mixingSchemedftfe::dftClass< FEOrder, FEOrderElectro >private
d_mpiCommParentdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nearestAtomDistancesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nearestAtomIdsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_netFloatingDispSinceLastBinsUpdatedftfe::dftClass< FEOrder, FEOrderElectro >private
d_netFloatingDispSinceLastCheckForSmearedChargeOverlapsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nlPSPCutOffdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nlpspQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro >private
d_noConstraintsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonAtomicWaveFunctionsdftfe::dftClass< FEOrder, FEOrderElectro >
d_nonLocalAtomGlobalChargeIdsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonLocalAtomIdsInCurrentProcessdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonLocalAtomIdsInElementdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonLocalProjectorElementMatricesConjugatedftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonLocalProjectorElementMatricesTransposedftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonLocalPseudoPotentialConstantsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonLocalPSP_ZetalmDeltaVldftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonLocalPSP_zetalmDeltaVlProductDistImageAtomsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonPeriodicDensityDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonTrivialAllCellsPseudoWfcIdToElemIdMapdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuadsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_nonTrivialPseudoWfcsPerCellZetaDeltaVQuadsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_numberPseudoAtomicWaveFunctionsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_numberPseudoPotentialsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_numEigenValuesdftfe::dftClass< FEOrder, FEOrderElectro >
d_numEigenValuesRRdftfe::dftClass< FEOrder, FEOrderElectro >
d_outerMostPointPseudoPotDatadftfe::dftClass< FEOrder, FEOrderElectro >private
d_outerMostPointPseudoProjectorDatadftfe::dftClass< FEOrder, FEOrderElectro >private
d_outerMostPointPseudoWaveFunctionsDatadftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiExtdftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiExtDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiInValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiOutValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiTotalSolverProblemdftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiTotAXQuadratureIdElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiTotDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiTotRhoIndftfe::dftClass< FEOrder, FEOrderElectro >private
d_phiTotRhoOutdftfe::dftClass< FEOrder, FEOrderElectro >private
d_preCondResidualVectordftfe::dftClass< FEOrder, FEOrderElectro >private
d_projecterKetTimesFlattenedVectorLocalIdsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_projectorIdsNumberingMapCurrentProcessdftfe::dftClass< FEOrder, FEOrderElectro >private
d_projectorKetTimesVectorLocalIdsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_projectorKetTimesVectorPardftfe::dftClass< FEOrder, FEOrderElectro >private
d_projectorKetTimesVectorParFlatteneddftfe::dftClass< FEOrder, FEOrderElectro >private
d_pseudoVLocdftfe::dftClass< FEOrder, FEOrderElectro >private
d_pseudoVLocAtomsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_pseudoWaveFunctionIdToFunctionIdDetailsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_pseudoWaveFunctionSplinesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_pspCutOffdftfe::dftClass< FEOrder, FEOrderElectro >private
d_pspCutOffTruncdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rankCurrentLRDdftfe::dftClass< FEOrder, FEOrderElectro >private
d_reciprocalLatticeVectorsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_relativeErrorJacInvApproxPrevScfLRDdftfe::dftClass< FEOrder, FEOrderElectro >private
d_residualNormPredicteddftfe::dftClass< FEOrder, FEOrderElectro >private
d_residualPredicteddftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoAtomsValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoAtomsValuesSeparatedftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoCoredftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInNodalValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInNodalValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInNodalValuesReaddftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInSpin0NodalValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInSpin0NodalValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInSpin0NodalValuesReaddftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInSpin1NodalValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInSpin1NodalValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInSpin1NodalValuesReaddftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoInValuesLpspQuaddftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoNodalFielddftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoNodalFieldRefineddftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoNodalFieldSpin0dftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoNodalFieldSpin1dftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutNodalValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutNodalValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutNodalValuesDistributeddftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutNodalValuesSplitdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutSpin0NodalValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutSpin0NodalValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutSpin1NodalValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutSpin1NodalValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_rhoOutValuesLpspQuaddftfe::dftClass< FEOrder, FEOrderElectro >private
d_smearedChargeQuadratureIdElectrodftfe::dftClass< FEOrder, FEOrderElectro >private
d_smearedChargeScalingdftfe::dftClass< FEOrder, FEOrderElectro >private
d_smearedChargeWidthMindftfe::dftClass< FEOrder, FEOrderElectro >private
d_smearedChargeWidthsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_sparsityPatterndftfe::dftClass< FEOrder, FEOrderElectro >private
d_subspaceIterationSolverdftfe::dftClass< FEOrder, FEOrderElectro >private
d_sumNonTrivialPseudoWfcsOverAllCellsZetaDeltaVQuadsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_supportPointsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_supportPointsEigendftfe::dftClass< FEOrder, FEOrderElectro >private
d_supportPointsPRefineddftfe::dftClass< FEOrder, FEOrderElectro >private
d_tempEigenVecdftfe::dftClass< FEOrder, FEOrderElectro >private
d_tolReacheddftfe::dftClass< FEOrder, FEOrderElectro >private
d_upperBoundUnwantedSpectrumValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
d_vcontainerValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_vselfBinsManagerdftfe::dftClass< FEOrder, FEOrderElectro >private
d_vselfFieldGateauxDerStrainFDBinsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_vSpin0containerValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_vSpin1containerValsdftfe::dftClass< FEOrder, FEOrderElectro >private
d_wfcInitTruncationdftfe::dftClass< FEOrder, FEOrderElectro >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 >privatevirtual
determineOrbitalFilling()dftfe::dftClass< FEOrder, FEOrderElectro >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 >
dipole(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues, bool centerofCharge)dftfe::dftClass< FEOrder, FEOrderElectro >private
dofHandlerdftfe::dftClass< FEOrder, FEOrderElectro >private
dofHandlerEigendftfe::dftClass< FEOrder, FEOrderElectro >private
eigenValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
eigenValuesRRSplitdftfe::dftClass< FEOrder, FEOrderElectro >private
FEdftfe::dftClass< FEOrder, FEOrderElectro >private
FEEigendftfe::dftClass< FEOrder, FEOrderElectro >private
fermiEnergydftfe::dftClass< FEOrder, FEOrderElectro >private
fermiEnergyDowndftfe::dftClass< FEOrder, FEOrderElectro >private
fermiEnergyUpdftfe::dftClass< FEOrder, FEOrderElectro >private
fieldGradl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &field)dftfe::dftClass< FEOrder, FEOrderElectro >private
finalizeKohnShamDFTOperator()dftfe::dftClass< FEOrder, FEOrderElectro >
forceClass< FEOrder, FEOrderElectro >dftfe::dftClass< FEOrder, FEOrderElectro >friend
forcePtrdftfe::dftClass< FEOrder, FEOrderElectro >private
generateImageCharges(const double pspCutOff, std::vector< int > &imageIds, std::vector< double > &imageCharges, std::vector< std::vector< double > > &imagePositions)dftfe::dftClass< FEOrder, FEOrderElectro >private
generateMPGrid()dftfe::dftClass< FEOrder, FEOrderElectro >private
getAtomLocationsCart() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getAtomLocationsFrac() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getAtomTypes() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getCell() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getCellStress() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getCellVolume() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getEntropicEnergy() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getForceonAtoms() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getFreeEnergy() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getInternalEnergy() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getLocalDofIndicesImag() constdftfe::dftClass< FEOrder, FEOrderElectro >
getLocalDofIndicesReal() constdftfe::dftClass< FEOrder, FEOrderElectro >
getLocalProcDofIndicesImag() constdftfe::dftClass< FEOrder, FEOrderElectro >
getLocalProcDofIndicesReal() constdftfe::dftClass< FEOrder, FEOrderElectro >
getMatrixFreeData() constdftfe::dftClass< FEOrder, FEOrderElectro >
getParametersObject() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getRhoNodalOut() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getRhoNodalSplitOut() constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
getTotalChargeforRhoSplit()dftfe::dftClass< FEOrder, FEOrderElectro >virtual
gradRhoInValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
gradRhoInValuesSpinPolarizeddftfe::dftClass< FEOrder, FEOrderElectro >private
gradRhoOutValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
gradRhoOutValuesSpinPolarizeddftfe::dftClass< FEOrder, FEOrderElectro >private
init()dftfe::dftClass< FEOrder, FEOrderElectro >virtual
initAtomicRho()dftfe::dftClass< FEOrder, FEOrderElectro >private
initBoundaryConditions(const bool meshOnlyDeformed=false, const bool vselfPerturbationUpdateForStress=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
initCoreRho()dftfe::dftClass< FEOrder, FEOrderElectro >private
initElectronicFields()dftfe::dftClass< FEOrder, FEOrderElectro >private
initializeKohnShamDFTOperator(const bool initializeCublas=true)dftfe::dftClass< FEOrder, FEOrderElectro >
initImageChargesUpdateKPoints(bool flag=true)dftfe::dftClass< FEOrder, FEOrderElectro >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 >private
initNonLocalPseudoPotential_OV()dftfe::dftClass< FEOrder, FEOrderElectro >private
initNoRemesh(const bool updateImagesAndKPointsAndVselfBins=true, const bool checkSmearedChargeWidthsForOverlap=true, const bool useSingleAtomSolutionOverride=false, const bool isMeshDeformed=false)dftfe::dftClass< FEOrder, FEOrderElectro >
initnscf(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, poissonSolverProblem< FEOrder, FEOrderElectro > &phiTotalSolverProblem, dealiiLinearSolver &CGSolver)dftfe::dftClass< FEOrder, FEOrderElectro >private
initpRefinedObjects(const bool meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
initPseudoPotentialAll(const bool updateNonlocalSparsity=true)dftfe::dftClass< FEOrder, FEOrderElectro >private
initRho()dftfe::dftClass< FEOrder, FEOrderElectro >private
initUnmovedTriangulation(dealii::parallel::distributed::Triangulation< 3 > &triangulation)dftfe::dftClass< FEOrder, FEOrderElectro >private
interBandGroupCommdftfe::dftClass< FEOrder, FEOrderElectro >private
interpolateElectroNodalDataToQuadratureDataGeneral(dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isEvaluateGradData=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
interpolateRhoNodalDataToQuadratureDataGeneral(dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, std::map< dealii::CellId, std::vector< double > > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
interpolateRhoNodalDataToQuadratureDataLpsp(dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isEvaluateGradData)dftfe::dftClass< FEOrder, FEOrderElectro >private
interpolateRhoSpinNodalDataToQuadratureDataGeneral(dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalFieldSpin0, const distributedCPUVec< double > &nodalFieldSpin1, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, std::map< dealii::CellId, std::vector< double > > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
interpoolcommdftfe::dftClass< FEOrder, FEOrderElectro >private
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >dftfe::dftClass< FEOrder, FEOrderElectro >friend
kohnShamEigenSpaceCompute(const unsigned int s, const unsigned int kPointIndex, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &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 >private
kohnShamEigenSpaceComputeNSCF(const unsigned int spinType, const unsigned int kPointIndex, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, unsigned int ipass)dftfe::dftClass< FEOrder, FEOrderElectro >private
kohnShamEigenSpaceFirstOrderDensityMatResponse(const unsigned int s, const unsigned int kPointIndex, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala)dftfe::dftClass< FEOrder, FEOrderElectro >private
kPointReducedCoordinatesdftfe::dftClass< FEOrder, FEOrderElectro >private
l2ProjectionQuadDensityMinusAtomicDensity(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const std::map< dealii::CellId, std::vector< double > > &quadratureValueData, distributedCPUVec< double > &nodalField)dftfe::dftClass< FEOrder, FEOrderElectro >private
l2ProjectionQuadToNodal(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const std::map< dealii::CellId, std::vector< double > > &quadratureValueData, distributedCPUVec< double > &nodalField)dftfe::dftClass< FEOrder, FEOrderElectro >private
loadPSIFiles(unsigned int Z, unsigned int n, unsigned int l, unsigned int &flag)dftfe::dftClass< FEOrder, FEOrderElectro >private
loadTriaInfoAndRhoNodalData()dftfe::dftClass< FEOrder, FEOrderElectro >private
local_dof_indicesImagdftfe::dftClass< FEOrder, FEOrderElectro >private
local_dof_indicesRealdftfe::dftClass< FEOrder, FEOrderElectro >private
locally_owned_dofsdftfe::dftClass< FEOrder, FEOrderElectro >private
locally_owned_dofsEigendftfe::dftClass< FEOrder, FEOrderElectro >private
locally_relevant_dofsdftfe::dftClass< FEOrder, FEOrderElectro >private
locally_relevant_dofsEigendftfe::dftClass< FEOrder, FEOrderElectro >private
localProc_dof_indicesImagdftfe::dftClass< FEOrder, FEOrderElectro >private
localProc_dof_indicesRealdftfe::dftClass< FEOrder, FEOrderElectro >private
locateAtomCoreNodes(const dealii::DoFHandler< 3 > &_dofHandler, std::map< dealii::types::global_dof_index, double > &atomNodeIdToChargeValueMap)dftfe::dftClass< FEOrder, FEOrderElectro >private
locatePeriodicPinnedNodes(const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &constraintMatrixBase, dealii::AffineConstraints< double > &constraintMatrix)dftfe::dftClass< FEOrder, FEOrderElectro >private
lowerBoundKindexdftfe::dftClass< FEOrder, FEOrderElectro >private
lowrankApproxScfDielectricMatrixInv(const unsigned int scfIter)dftfe::dftClass< FEOrder, FEOrderElectro >private
lowrankApproxScfDielectricMatrixInvSpinPolarized(const unsigned int scfIter)dftfe::dftClass< FEOrder, FEOrderElectro >private
matrix_free_datadftfe::dftClass< FEOrder, FEOrderElectro >private
mixing_simple()dftfe::dftClass< FEOrder, FEOrderElectro >private
mixing_simple_spinPolarized()dftfe::dftClass< FEOrder, FEOrderElectro >private
moveMeshToAtoms(dealii::Triangulation< 3, 3 > &triangulationMove, dealii::Triangulation< 3, 3 > &triangulationSerial, bool reuseFlag=false, bool moveSubdivided=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
mpi_communicatordftfe::dftClass< FEOrder, FEOrderElectro >private
n_mpi_processesdftfe::dftClass< FEOrder, FEOrderElectro >private
nodalDensity_mixing_anderson_kerker(kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver)dftfe::dftClass< FEOrder, FEOrderElectro >private
nodalDensity_mixing_simple_kerker(kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver)dftfe::dftClass< FEOrder, FEOrderElectro >private
noRemeshRhoDataInit()dftfe::dftClass< FEOrder, FEOrderElectro >private
normalizeAtomicRhoQuadValues()dftfe::dftClass< FEOrder, FEOrderElectro >private
normalizeRhoInQuadValues()dftfe::dftClass< FEOrder, FEOrderElectro >private
normalizeRhoOutQuadValues()dftfe::dftClass< FEOrder, FEOrderElectro >private
nscf(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver)dftfe::dftClass< FEOrder, FEOrderElectro >private
numElectronsdftfe::dftClass< FEOrder, FEOrderElectro >private
numElectronsDowndftfe::dftClass< FEOrder, FEOrderElectro >private
numElectronsUpdftfe::dftClass< FEOrder, FEOrderElectro >private
numLevelsdftfe::dftClass< FEOrder, FEOrderElectro >private
outerValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
outputDensity()dftfe::dftClass< FEOrder, FEOrderElectro >private
outputWfc()dftfe::dftClass< FEOrder, FEOrderElectro >private
pcoutdftfe::dftClass< FEOrder, FEOrderElectro >private
popOutRhoInRhoOutVals()dftfe::dftClass< FEOrder, FEOrderElectro >private
projectPreviousGroundStateRho()dftfe::dftClass< FEOrder, FEOrderElectro >private
radValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
readkPointData()dftfe::dftClass< FEOrder, FEOrderElectro >
readPSI()dftfe::dftClass< FEOrder, FEOrderElectro >private
readPSIRadialValues()dftfe::dftClass< FEOrder, FEOrderElectro >private
recomputeKPointCoordinates()dftfe::dftClass< FEOrder, FEOrderElectro >private
reInitializeKohnShamDFTOperator()dftfe::dftClass< FEOrder, FEOrderElectro >
resetRhoNodalIn(distributedCPUVec< double > &OutDensity)dftfe::dftClass< FEOrder, FEOrderElectro >virtual
resetRhoNodalSplitIn(distributedCPUVec< double > &OutDensity)dftfe::dftClass< FEOrder, FEOrderElectro >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 >private
rhofieldl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField, const unsigned int dofHandlerId, const unsigned int quadratureId)dftfe::dftClass< FEOrder, FEOrderElectro >private
rhoInValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
rhoInValuesSpinPolarizeddftfe::dftClass< FEOrder, FEOrderElectro >private
rhoOutValuesdftfe::dftClass< FEOrder, FEOrderElectro >private
rhoOutValuesSpinPolarizeddftfe::dftClass< FEOrder, FEOrderElectro >private
run()dftfe::dftClass< FEOrder, FEOrderElectro >virtual
saveTriaInfoAndRhoNodalData()dftfe::dftClass< FEOrder, FEOrderElectro >private
scfConvergeddftfe::dftClass< FEOrder, FEOrderElectro >private
selectedDofsHangingdftfe::dftClass< FEOrder, FEOrderElectro >private
set()dftfe::dftClass< FEOrder, FEOrderElectro >virtual
solve(const bool computeForces=true, const bool computestress=true, const bool restartGroundStateCalcFromChk=false)dftfe::dftClass< FEOrder, FEOrderElectro >virtual
solveNoSCF()dftfe::dftClass< FEOrder, FEOrderElectro >
subtractAtomicRhoQuadValuesGradients(std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isConsiderGradData=false)dftfe::dftClass< FEOrder, FEOrderElectro >private
symmetryClass< FEOrder, FEOrderElectro >dftfe::dftClass< FEOrder, FEOrderElectro >friend
symmetryPtrdftfe::dftClass< FEOrder, FEOrderElectro >private
this_mpi_processdftfe::dftClass< FEOrder, FEOrderElectro >private
totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField, std::map< dealii::CellId, std::vector< double > > &rhoQuadValues)dftfe::dftClass< FEOrder, FEOrderElectro >private
totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)dftfe::dftClass< FEOrder, FEOrderElectro >private
totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)dftfe::dftClass< FEOrder, FEOrderElectro >private
totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)dftfe::dftClass< FEOrder, FEOrderElectro >private
totalMagnetization(const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)dftfe::dftClass< FEOrder, FEOrderElectro >private
trivialSolveForStress()dftfe::dftClass< FEOrder, FEOrderElectro >virtual
updateAtomPositionsAndMoveMesh(const std::vector< dealii::Tensor< 1, 3, double > > &globalAtomsDisplacements, const double maxJacobianRatioFactor=1.25, const bool useSingleAtomSolutionsOverride=false)dftfe::dftClass< FEOrder, FEOrderElectro >virtual
waveFunctionsVectordftfe::dftClass< FEOrder, FEOrderElectro >private
writeBands()dftfe::dftClass< FEOrder, FEOrderElectro >private
writeDomainAndAtomCoordinates()dftfe::dftClass< FEOrder, FEOrderElectro >virtual
writeDomainAndAtomCoordinates(const std::string Path) constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
writeGSElectronDensity(const std::string Path) constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
writeMesh()dftfe::dftClass< FEOrder, FEOrderElectro >virtual
writeMesh(std::string meshFileName)dftfe::dftClass< FEOrder, FEOrderElectro >private
writeStructureEnergyForcesDataPostProcess(const std::string Path) constdftfe::dftClass< FEOrder, FEOrderElectro >virtual
~dftBase()dftfe::dftBaseinlinevirtual
~dftClass()dftfe::dftClass< FEOrder, FEOrderElectro >
+ + + + diff --git a/classdftfe_1_1dft_class.html b/classdftfe_1_1dft_class.html new file mode 100644 index 000000000..f00cd5cea --- /dev/null +++ b/classdftfe_1_1dft_class.html @@ -0,0 +1,12716 @@ + + + + + + + +DFT-FE: dftfe::dftClass< FEOrder, FEOrderElectro > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftClass< FEOrder, FEOrderElectro > 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 >:
+
+
+ + +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)
 
void copyDensityToVector (const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues, std::vector< double > &rhoValuesVector)
 Copies the density stored in std::map<dealii:cellId, std::vector<double>> into a flattened std::vector<double> format.
 
void copyDensityFromVector (const std::vector< double > &rhoValuesVector, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues)
 Copies the density stored in a flattened std::vector<double> format to std::map<dealii:cellId, std::vector<double>>
 
void copyGradDensityToVector (const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues, std::vector< double > &gradRhoValuesVector)
 Copies the gradient of density stored in a std::map<dealii:cellId, std::vector<double>> into a flattened std::vector<double> format.
 
void copyGradDensityFromVector (const std::vector< double > &gradRhoValuesVector, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues)
 Copies the gradient of density stored in a flattened std::vector<double> format to std::map<dealii:cellId, std::vector<double>>
 
void computeTotalDensityFromSpinPolarised (const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoSpinValues, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues)
 Computes the total density from the spin polarised densities.
 
void computeTotalGradDensityFromSpinPolarised (const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoSpinValues, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues)
 Computes the total gradient of density from the spin polarised densities.
 
void computeJxWForRho (std::vector< double > &vecJxW)
 Computes the JxW values used in the \int \rho.
 
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 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 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 meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false)
 
void interpolateRhoNodalDataToQuadratureDataGeneral (dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, std::map< dealii::CellId, std::vector< double > > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)
 interpolate rho nodal data to quadrature data using FEEvaluation
 
void interpolateRhoSpinNodalDataToQuadratureDataGeneral (dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalFieldSpin0, const distributedCPUVec< double > &nodalFieldSpin1, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, std::map< dealii::CellId, std::vector< double > > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)
 interpolate spin rho nodal data to quadrature data using FEEvaluation
 
void interpolateElectroNodalDataToQuadratureDataGeneral (dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isEvaluateGradData=false)
 interpolate nodal data to quadrature data using FEEvaluation
 
void interpolateRhoNodalDataToQuadratureDataLpsp (dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isEvaluateGradData)
 interpolate nodal data to quadrature data using FEEvaluation
 
void addAtomicRhoQuadValuesGradients (std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isConsiderGradData=false)
 add atomic densities at quadrature points
 
void subtractAtomicRhoQuadValuesGradients (std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isConsiderGradData=false)
 subtract 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 computeNodalRhoFromQuadData ()
 computes nodal electron-density from cell quadrature data using project function of dealii
 
void computeRhoNodalFromPSI (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, bool isConsiderSpectrumSplitting)
 computes density nodal data from wavefunctions
 
void computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, 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 initNonLocalPseudoPotential_OV ()
 
void computeSparseStructureNonLocalProjectors_OV ()
 
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).
 
void computeElementalOVProjectorKets ()
 
double totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField, std::map< dealii::CellId, std::vector< double > > &rhoQuadValues)
 Computes total charge by integrating the electron-density.
 
double totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)
 
double totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)
 
double totalCharge (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)
 
void dipole (const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues, bool centerofCharge)
 
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 dealii::MatrixFree< 3, double > &matrixFreeDataObject, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const std::map< dealii::CellId, std::vector< double > > &quadratureValueData, distributedCPUVec< double > &nodalField)
 l2 projection
 
void l2ProjectionQuadDensityMinusAtomicDensity (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const std::map< dealii::CellId, std::vector< double > > &quadratureValueData, distributedCPUVec< double > &nodalField)
 l2 projection
 
double totalMagnetization (const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)
 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 (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, const bool isConsiderSpectrumSplitting, const bool isGroundState=false)
 Computes output electron-density from wavefunctions.
 
void popOutRhoInRhoOutVals ()
 
double mixing_simple ()
 Mixing schemes for mixing electron-density.
 
double mixing_simple_spinPolarized ()
 
double nodalDensity_mixing_simple_kerker (kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver)
 
double nodalDensity_mixing_anderson_kerker (kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver)
 
double lowrankApproxScfDielectricMatrixInv (const unsigned int scfIter)
 
double lowrankApproxScfDielectricMatrixInvSpinPolarized (const unsigned int scfIter)
 
void computeElectrostaticEnergyHRefined ()
 
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 (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver)
 
void initnscf (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &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, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &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, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala)
 
void kohnShamEigenSpaceComputeNSCF (const unsigned int spinType, const unsigned int kPointIndex, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, unsigned int ipass)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

double d_atomicRhoScalingFac
 
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_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_lpspQuadratureIdElectro
 
unsigned int d_gllQuadratureId
 
unsigned int d_phiTotDofHandlerIndexElectro
 
unsigned int d_phiTotAXQuadratureIdElectro
 
unsigned int d_helmholtzDofHandlerIndexElectro
 
unsigned int d_binsStartDofHandlerIndexElectro
 
unsigned int d_densityQuadratureId
 
unsigned int d_densityQuadratureIdElectro
 
dealii::MatrixFree< 3, doublematrix_free_data
 
dealii::MatrixFree< 3, doubled_matrixFreeDataPRefined
 
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost
 
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 > * forcePtr
 
symmetryClass< FEOrder, FEOrderElectro > * symmetryPtr
 
elpaScalaManagerd_elpaScala
 
poissonSolverProblem< FEOrder, FEOrderElectrod_phiTotalSolverProblem
 
bool d_kohnShamDFTOperatorsInitialized
 
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > * 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_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::shared_ptr< std::map< dealii::CellId, std::vector< double > > > rhoInValues
 
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > rhoOutValues
 
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > rhoInValuesSpinPolarized
 
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > rhoOutValuesSpinPolarized
 
std::map< dealii::CellId, std::vector< double > > d_phiInValues
 
std::map< dealii::CellId, std::vector< double > > d_phiOutValues
 
MixingScheme d_mixingScheme
 
distributedCPUVec< doubled_rhoInNodalValuesRead
 
distributedCPUVec< doubled_rhoInNodalValues
 
distributedCPUVec< doubled_rhoOutNodalValues
 
distributedCPUVec< doubled_rhoOutNodalValuesSplit
 
distributedCPUVec< doubled_preCondResidualVector
 
distributedCPUVec< doubled_rhoNodalFieldRefined
 
distributedCPUVec< doubled_rhoOutNodalValuesDistributed
 
std::deque< distributedCPUVec< double > > d_rhoInNodalVals
 
std::deque< distributedCPUVec< double > > d_rhoOutNodalVals
 
distributedCPUVec< doubled_rhoInSpin0NodalValues
 
distributedCPUVec< doubled_rhoInSpin1NodalValues
 
distributedCPUVec< doubled_rhoInSpin0NodalValuesRead
 
distributedCPUVec< doubled_rhoInSpin1NodalValuesRead
 
distributedCPUVec< doubled_rhoOutSpin0NodalValues
 
distributedCPUVec< doubled_rhoOutSpin1NodalValues
 
std::deque< distributedCPUVec< double > > d_rhoInSpin0NodalVals
 
std::deque< distributedCPUVec< double > > d_rhoOutSpin0NodalVals
 
std::deque< distributedCPUVec< double > > d_rhoInSpin1NodalVals
 
std::deque< distributedCPUVec< double > > d_rhoOutSpin1NodalVals
 
std::map< dealii::CellId, std::vector< double > > d_rhoOutValuesLpspQuad
 
std::map< dealii::CellId, std::vector< double > > d_rhoInValuesLpspQuad
 
std::map< dealii::CellId, std::vector< double > > d_gradRhoOutValuesLpspQuad
 
std::map< dealii::CellId, std::vector< double > > d_gradRhoInValuesLpspQuad
 
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::shared_ptr< std::map< dealii::CellId, std::vector< double > > > gradRhoInValues
 
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > gradRhoInValuesSpinPolarized
 
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > gradRhoOutValues
 
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > gradRhoOutValuesSpinPolarized
 
distributedCPUVec< doubled_phiTotRhoIn
 
distributedCPUVec< doubled_phiTotRhoOut
 
distributedCPUVec< doubled_phiExt
 
distributedCPUVec< doubled_rhoNodalField
 
distributedCPUVec< doubled_rhoNodalFieldSpin0
 
distributedCPUVec< doubled_rhoNodalFieldSpin1
 
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::vector< std::vector< int > > d_pseudoWaveFunctionIdToFunctionIdDetails
 
std::vector< std::vector< int > > d_deltaVlIdToFunctionIdDetails
 
std::vector< intd_numberPseudoAtomicWaveFunctions
 
std::vector< intd_numberPseudoPotentials
 
std::vector< intd_nonLocalAtomGlobalChargeIds
 
std::map< unsigned int, std::vector< int > > d_sparsityPattern
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_elementIteratorsInAtomCompactSupport
 
std::vector< std::vector< unsigned int > > d_elementIdsInAtomCompactSupport
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_elementOneFieldIteratorsInAtomCompactSupport
 
std::vector< std::vector< int > > d_nonLocalAtomIdsInElement
 
std::vector< unsigned intd_nonLocalAtomIdsInCurrentProcess
 
dealii::IndexSet d_locallyOwnedProjectorIdsCurrentProcess
 
dealii::IndexSet d_ghostProjectorIdsCurrentProcess
 
std::map< std::pair< unsigned int, unsigned int >, unsigned intd_projectorIdsNumberingMapCurrentProcess
 
std::vector< std::vector< std::vector< double > > > d_nonLocalProjectorElementMatricesConjugate
 
std::vector< std::vector< std::vector< double > > > d_nonLocalProjectorElementMatricesTranspose
 
std::vector< distributedCPUVec< double > > d_projectorKetTimesVectorPar
 
distributedCPUMultiVec< doubled_projectorKetTimesVectorParFlattened
 
std::vector< std::vector< double > > d_nonLocalPseudoPotentialConstants
 
std::vector< alglib::spline1dinterpolant > d_pseudoWaveFunctionSplines
 
std::vector< alglib::spline1dinterpolant > d_deltaVlSplines
 
std::vector< dataTypes::numberd_nonLocalPSP_ZetalmDeltaVl
 
std::vector< dataTypes::numberd_nonLocalPSP_zetalmDeltaVlProductDistImageAtoms
 
std::map< unsigned int, std::vector< unsigned int > > d_cellIdToNonlocalAtomIdsLocalCompactSupportMap
 map from cell number to set of non local atom ids (local numbering)
 
std::vector< unsigned intd_nonTrivialPseudoWfcsPerCellZetaDeltaVQuads
 vector of size num physical cells
 
std::vector< unsigned intd_nonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads
 
std::vector< unsigned intd_nonTrivialAllCellsPseudoWfcIdToElemIdMap
 
std::map< unsigned int, std::vector< unsigned int > > d_atomIdToNonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads
 map from local nonlocal atomid to vector over cells
 
unsigned int d_sumNonTrivialPseudoWfcsOverAllCellsZetaDeltaVQuads
 
std::vector< unsigned intd_projecterKetTimesFlattenedVectorLocalIds
 
std::vector< std::vector< unsigned int > > d_projectorKetTimesVectorLocalIds
 
std::vector< doubled_outerMostPointPseudoWaveFunctionsData
 
std::vector< doubled_outerMostPointPseudoPotData
 
std::vector< doubled_outerMostPointPseudoProjectorData
 
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 kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
 
class forceClass< FEOrder, FEOrderElectro >
 
class symmetryClass< FEOrder, FEOrderElectro >
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro>
+class dftfe::dftClass< FEOrder, FEOrderElectro >

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::dftClass< FEOrder, FEOrderElectro >::dftClass (const MPI_CommmpiCommParent,
const MPI_Commmpi_comm_domain,
const MPI_Comminterpoolcomm,
const MPI_ComminterBandGroupComm,
const std::string & scratchFolderName,
dftParametersdftParams 
)
+
+ +

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::dftClass< FEOrder, FEOrderElectro >::~dftClass ()
+
+ +

dftClass destructor

+ +
+
+

Member Function Documentation

+ +

◆ addAtomicRhoQuadValuesGradients()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::addAtomicRhoQuadValuesGradients (std::map< dealii::CellId, std::vector< double > > & quadratureValueData,
std::map< dealii::CellId, std::vector< double > > & quadratureGradValueData,
const bool isConsiderGradData = false 
)
+
+private
+
+ +

add atomic densities at quadrature points

+ +
+
+ +

◆ aposterioriMeshGenerate()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::aposterioriMeshGenerate ()
+
+private
+
+ +
+
+ +

◆ applyHomogeneousDirichletBC()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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
+
+
+ +
+
+ +

◆ applyPeriodicBCHigherOrderNodes()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::calculateNearestAtomDistances ()
+
+private
+
+ +

a

+ +
+
+ +

◆ calculateSmearedChargeWidths()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::calculateSmearedChargeWidths ()
+
+private
+
+ +

a

+ +
+
+ +

◆ clearRhoData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::clearRhoData ()
+
+private
+
+ +
+
+ +

◆ compute_fermienergy()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::compute_ldos (const std::vector< std::vector< double > > & eigenValuesInput,
const std::string & fileName 
)
+
+private
+
+ +
+
+ +

◆ compute_localizationLength()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::compute_localizationLength (const std::string & locLengthFileName)
+
+private
+
+ +

compute localization length

+ +
+
+ +

◆ compute_pdos()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::compute_pdos (const std::vector< std::vector< double > > & eigenValuesInput,
const std::string & fileName 
)
+
+private
+
+ +
+
+ +

◆ compute_rhoOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::compute_rhoOut (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperatorCPU,
const bool isConsiderSpectrumSplitting,
const bool isGroundState = false 
)
+
+private
+
+ +

Computes output electron-density from wavefunctions.

+ +
+
+ +

◆ compute_tdos()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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

+ +
+
+ +

◆ computeElectrostaticEnergyHRefined()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeElectrostaticEnergyHRefined ()
+
+private
+
+

Re solves the all electrostatics on a h refined mesh, and computes the corresponding energy. This function is called after reaching the ground state electron density. Currently the h refinement is hardcoded to a one subdivison of carser mesh FIXME: The function is not yet extened to the case when point group symmetry is used. However, it works for time reversal symmetry.

+ +
+
+ +

◆ computeElementalOVProjectorKets()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeElementalOVProjectorKets ()
+
+private
+
+ +
+
+ +

◆ computeJxWForRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeJxWForRho (std::vector< double > & vecJxW)
+
+ +

Computes the JxW values used in the \int \rho.

+ +
+
+ +

◆ computeMaximumHighestOccupiedStateResidualNorm() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::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

+ +
+
+ +

◆ computeNodalRhoFromQuadData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeNodalRhoFromQuadData ()
+
+private
+
+ +

computes nodal electron-density from cell quadrature data using project function of dealii

+ +
+
+ +

◆ computeOutputDensityDirectionalDerivative()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeOutputDensityDirectionalDerivative (const distributedCPUVec< double > & v,
const distributedCPUVec< double > & vSpin0,
const distributedCPUVec< double > & vSpin1,
distributedCPUVec< double > & fv,
distributedCPUVec< double > & fvSpin0,
distributedCPUVec< double > & fvSpin1 
)
+
+ +
+
+ +

◆ computeRhoInitialGuessFromPSI()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeRhoInitialGuessFromPSI (std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)
+
+private
+
+ +
+
+ +

◆ computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperatorCPU,
distributedCPUVec< double > & fv,
distributedCPUVec< double > & fvSpin0,
distributedCPUVec< double > & fvSpin1 
)
+
+private
+
+ +
+
+ +

◆ computeRhoNodalFromPSI()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeRhoNodalFromPSI (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperatorCPU,
bool isConsiderSpectrumSplitting 
)
+
+private
+
+ +

computes density nodal data from wavefunctions

+ +
+
+ +

◆ computeSparseStructureNonLocalProjectors_OV()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeSparseStructureNonLocalProjectors_OV ()
+
+private
+
+ +
+
+ +

◆ computeStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeStress ()
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ computeTotalDensityFromSpinPolarised()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeTotalDensityFromSpinPolarised (const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > & rhoSpinValues,
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > & rhoValues 
)
+
+ +

Computes the total density from the spin polarised densities.

+ +
+
+ +

◆ computeTotalGradDensityFromSpinPolarised()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeTotalGradDensityFromSpinPolarised (const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > & gradRhoSpinValues,
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > & gradRhoValues 
)
+
+ +

Computes the total gradient of density from the spin polarised densities.

+ +
+
+ +

◆ computeTraceXtHX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
dataTypes::number dftfe::dftClass< FEOrder, FEOrderElectro >::computeTraceXtHX (unsigned int numberWaveFunctionsEstimate)
+
+private
+
+ +
+
+ +

◆ computeTraceXtKX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::computeTraceXtKX (unsigned int numberWaveFunctionsEstimate)
+
+private
+
+ +
+
+ +

◆ computeVolume()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::computeVolume (const dealii::DoFHandler< 3 > & _dofHandler)
+
+private
+
+ +

Computes the volume of the domain.

+ +
+
+ +

◆ computeVselfFieldGateauxDerFD()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::computeVselfFieldGateauxDerFD ()
+
+private
+
+

Compute Gateaux derivative of vself field in bins with respect to affine strain tensor components

+ +
+
+ +

◆ copyDensityFromVector()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::copyDensityFromVector (const std::vector< double > & rhoValuesVector,
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > & rhoValues 
)
+
+ +

Copies the density stored in a flattened std::vector<double> format to std::map<dealii:cellId, std::vector<double>>

+ +
+
+ +

◆ copyDensityToVector()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::copyDensityToVector (const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > & rhoValues,
std::vector< double > & rhoValuesVector 
)
+
+ +

Copies the density stored in std::map<dealii:cellId, std::vector<double>> into a flattened std::vector<double> format.

+ +
+
+ +

◆ copyGradDensityFromVector()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::copyGradDensityFromVector (const std::vector< double > & gradRhoValuesVector,
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > & gradRhoValues 
)
+
+ +

Copies the gradient of density stored in a flattened std::vector<double> format to std::map<dealii:cellId, std::vector<double>>

+ +
+
+ +

◆ copyGradDensityToVector()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::copyGradDensityToVector (const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > & gradRhoValues,
std::vector< double > & gradRhoValuesVector 
)
+
+ +

Copies the gradient of density stored in a std::map<dealii:cellId, std::vector<double>> into a flattened std::vector<double> format.

+ +
+
+ +

◆ createMasterChargeIdToImageIdMaps()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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.

+ +
+
+ +

◆ determineOrbitalFilling()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::determineOrbitalFilling ()
+
+private
+
+ +
+
+ +

◆ dipole()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::dipole (const dealii::DoFHandler< 3 > & dofHandlerOfField,
const std::map< dealii::CellId, std::vector< double > > * rhoQuadValues,
bool centerofCharge 
)
+
+private
+
+ +
+
+ +

◆ fieldGradl2Norm()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::fieldGradl2Norm (const dealii::MatrixFree< 3, double > & matrixFreeDataObject,
const distributedCPUVec< double > & field 
)
+
+private
+
+ +
+
+ +

◆ finalizeKohnShamDFTOperator()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::finalizeKohnShamDFTOperator ()
+
+ +
+
+ +

◆ generateImageCharges()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::generateMPGrid ()
+
+private
+
+ +
+
+ +

◆ getAtomLocationsCart()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + +
std::set< unsigned int > dftfe::dftClass< FEOrder, FEOrderElectro >::getAtomTypes () const
+
+virtual
+
+ +

Gets the current atom types from dftClass.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getCell()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + +
dealii::Tensor< 2, 3, double > dftfe::dftClass< FEOrder, FEOrderElectro >::getCellStress () const
+
+virtual
+
+ +

Gets the current cell stress from dftClass.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getCellVolume()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::getCellVolume () const
+
+virtual
+
+ +

Gets the current cell volume.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getEntropicEnergy()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::getEntropicEnergy () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getForceonAtoms()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
std::vector< double > dftfe::dftClass< FEOrder, FEOrderElectro >::getForceonAtoms () const
+
+virtual
+
+ +

Gets the current atomic forces from dftClass.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getFreeEnergy()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::getFreeEnergy () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getInternalEnergy()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::getInternalEnergy () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getLocalDofIndicesImag()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::dftClass< FEOrder, FEOrderElectro >::getLocalDofIndicesImag () const
+
+ +

Get local dofs global indices imag.

+ +
+
+ +

◆ getLocalDofIndicesReal()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::dftClass< FEOrder, FEOrderElectro >::getLocalDofIndicesReal () const
+
+ +

Get local dofs global indices real.

+ +
+
+ +

◆ getLocalProcDofIndicesImag()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::dftClass< FEOrder, FEOrderElectro >::getLocalProcDofIndicesImag () const
+
+ +

Get local dofs local proc indices imag.

+ +
+
+ +

◆ getLocalProcDofIndicesReal()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::dftClass< FEOrder, FEOrderElectro >::getLocalProcDofIndicesReal () const
+
+ +

Get local dofs local proc indices real.

+ +
+
+ +

◆ getMatrixFreeData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const dealii::MatrixFree< 3, double > & dftfe::dftClass< FEOrder, FEOrderElectro >::getMatrixFreeData () const
+
+ +

Get matrix free data object.

+ +
+
+ +

◆ getParametersObject()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
dftParameters & dftfe::dftClass< FEOrder, FEOrderElectro >::getParametersObject () const
+
+virtual
+
+ +

Get reference to dftParameters object.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getRhoNodalOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
distributedCPUVec< double > dftfe::dftClass< FEOrder, FEOrderElectro >::getRhoNodalOut () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getRhoNodalSplitOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
distributedCPUVec< double > dftfe::dftClass< FEOrder, FEOrderElectro >::getRhoNodalSplitOut () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getTotalChargeforRhoSplit()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::getTotalChargeforRhoSplit ()
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ init()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::init ()
+
+virtual
+
+ +

Does KSDFT problem pre-processing steps including mesh generation calls.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ initAtomicRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initAtomicRho ()
+
+private
+
+ +
+
+ +

◆ initBoundaryConditions()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initBoundaryConditions (const bool meshOnlyDeformed = false,
const bool vselfPerturbationUpdateForStress = false 
)
+
+private
+
+ +
+
+ +

◆ initCoreRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initCoreRho ()
+
+private
+
+ +
+
+ +

◆ initElectronicFields()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initElectronicFields ()
+
+private
+
+ +
+
+ +

◆ initializeKohnShamDFTOperator()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initializeKohnShamDFTOperator (const bool initializeCublas = true)
+
+ +
+
+ +

◆ initImageChargesUpdateKPoints()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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
+
+ +
+
+ +

◆ initNonLocalPseudoPotential_OV()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initNonLocalPseudoPotential_OV ()
+
+private
+
+ +
+
+ +

◆ initNoRemesh()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initnscf (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
poissonSolverProblem< FEOrder, FEOrderElectro > & phiTotalSolverProblem,
dealiiLinearSolverCGSolver 
)
+
+private
+
+ +
+
+ +

◆ initpRefinedObjects()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initpRefinedObjects (const bool meshOnlyDeformed,
const bool vselfPerturbationUpdateForStress = false 
)
+
+private
+
+ +
+
+ +

◆ initPseudoPotentialAll()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initPseudoPotentialAll (const bool updateNonlocalSparsity = true)
+
+private
+
+ +
+
+ +

◆ initRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::initRho ()
+
+private
+
+ +
+
+ +

◆ initUnmovedTriangulation()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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

+ +
+
+ +

◆ interpolateElectroNodalDataToQuadratureDataGeneral()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::interpolateElectroNodalDataToQuadratureDataGeneral (dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const distributedCPUVec< double > & nodalField,
std::map< dealii::CellId, std::vector< double > > & quadratureValueData,
std::map< dealii::CellId, std::vector< double > > & 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
+
+
+ +
+
+ +

◆ interpolateRhoNodalDataToQuadratureDataGeneral()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::interpolateRhoNodalDataToQuadratureDataGeneral (dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const distributedCPUVec< double > & nodalField,
std::map< dealii::CellId, std::vector< double > > & quadratureValueData,
std::map< dealii::CellId, std::vector< double > > & quadratureGradValueData,
std::map< dealii::CellId, std::vector< double > > & quadratureHessianValueData,
const bool isEvaluateGradData = false,
const bool isEvaluateHessianData = false 
)
+
+private
+
+ +

interpolate rho 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
+
+
+ +
+
+ +

◆ interpolateRhoNodalDataToQuadratureDataLpsp()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::interpolateRhoNodalDataToQuadratureDataLpsp (dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const distributedCPUVec< double > & nodalField,
std::map< dealii::CellId, std::vector< double > > & quadratureValueData,
std::map< dealii::CellId, std::vector< double > > & quadratureGradValueData,
const bool isEvaluateGradData 
)
+
+private
+
+ +

interpolate nodal data to quadrature data using FEEvaluation

+
Parameters
+ + + + + + + + +
[in]matrixFreeDatamatrix free data object
[in]nodalFieldnodal data to be interpolated
[in]matrixfree dofHandler id
[in]matrixfree quadrature id
[out]quadratureValueDatato be computed at quadrature points
[out]quadratureGradValueDatato be computed at quadrature points
[in]isEvaluateGradDatadenotes a flag to evaluate gradients or not
+
+
+ +
+
+ +

◆ interpolateRhoSpinNodalDataToQuadratureDataGeneral()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::interpolateRhoSpinNodalDataToQuadratureDataGeneral (dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const distributedCPUVec< double > & nodalFieldSpin0,
const distributedCPUVec< double > & nodalFieldSpin1,
std::map< dealii::CellId, std::vector< double > > & quadratureValueData,
std::map< dealii::CellId, std::vector< double > > & quadratureGradValueData,
std::map< dealii::CellId, std::vector< double > > & quadratureHessianValueData,
const bool isEvaluateGradData = false,
const bool isEvaluateHessianData = false 
)
+
+private
+
+ +

interpolate spin rho nodal data to quadrature data using FEEvaluation

+ +
+
+ +

◆ kohnShamEigenSpaceCompute()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::kohnShamEigenSpaceCompute (const unsigned int s,
const unsigned int kPointIndex,
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
elpaScalaManagerelpaScala,
chebyshevOrthogonalizedSubspaceIterationSolversubspaceIterationSolver,
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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::kohnShamEigenSpaceComputeNSCF (const unsigned int spinType,
const unsigned int kPointIndex,
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
chebyshevOrthogonalizedSubspaceIterationSolversubspaceIterationSolver,
std::vector< double > & residualNormWaveFunctions,
unsigned int ipass 
)
+
+private
+
+ +
+
+ +

◆ kohnShamEigenSpaceFirstOrderDensityMatResponse()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::kohnShamEigenSpaceFirstOrderDensityMatResponse (const unsigned int s,
const unsigned int kPointIndex,
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
elpaScalaManagerelpaScala 
)
+
+private
+
+ +
+
+ +

◆ l2ProjectionQuadDensityMinusAtomicDensity()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::l2ProjectionQuadDensityMinusAtomicDensity (const dealii::MatrixFree< 3, double > & matrixFreeDataObject,
const dealii::AffineConstraints< double > & constraintMatrix,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const std::map< dealii::CellId, std::vector< double > > & quadratureValueData,
distributedCPUVec< double > & nodalField 
)
+
+private
+
+ +

l2 projection

+ +
+
+ +

◆ l2ProjectionQuadToNodal()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::l2ProjectionQuadToNodal (const dealii::MatrixFree< 3, double > & matrixFreeDataObject,
const dealii::AffineConstraints< double > & constraintMatrix,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const std::map< dealii::CellId, std::vector< double > > & quadratureValueData,
distributedCPUVec< double > & nodalField 
)
+
+private
+
+ +

l2 projection

+ +
+
+ +

◆ loadPSIFiles()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::loadPSIFiles (unsigned int Z,
unsigned int n,
unsigned int l,
unsigned intflag 
)
+
+private
+
+ +
+
+ +

◆ loadTriaInfoAndRhoNodalData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::loadTriaInfoAndRhoNodalData ()
+
+private
+
+ +

load triangulation information rho quadrature data from checkpoint file for restarted run

+ +
+
+ +

◆ locateAtomCoreNodes()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::lowrankApproxScfDielectricMatrixInv (const unsigned int scfIter)
+
+private
+
+ +
+
+ +

◆ lowrankApproxScfDielectricMatrixInvSpinPolarized()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::lowrankApproxScfDielectricMatrixInvSpinPolarized (const unsigned int scfIter)
+
+private
+
+ +
+
+ +

◆ mixing_simple()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::mixing_simple ()
+
+private
+
+ +

Mixing schemes for mixing electron-density.

+ +
+
+ +

◆ mixing_simple_spinPolarized()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::mixing_simple_spinPolarized ()
+
+private
+
+ +
+
+ +

◆ moveMeshToAtoms()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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

+ +
+
+ +

◆ nodalDensity_mixing_anderson_kerker()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::nodalDensity_mixing_anderson_kerker (kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> & kerkerPreconditionedResidualSolverProblem,
dealiiLinearSolverCGSolver 
)
+
+private
+
+ +
+
+ +

◆ nodalDensity_mixing_simple_kerker()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::nodalDensity_mixing_simple_kerker (kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> & kerkerPreconditionedResidualSolverProblem,
dealiiLinearSolverCGSolver 
)
+
+private
+
+ +
+
+ +

◆ noRemeshRhoDataInit()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::noRemeshRhoDataInit ()
+
+private
+
+ +
+
+ +

◆ normalizeAtomicRhoQuadValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::normalizeAtomicRhoQuadValues ()
+
+private
+
+ +

normalize the electron density

+ +
+
+ +

◆ normalizeRhoInQuadValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::normalizeRhoInQuadValues ()
+
+private
+
+ +

normalize the input electron density

+ +
+
+ +

◆ normalizeRhoOutQuadValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::normalizeRhoOutQuadValues ()
+
+private
+
+ +

normalize the output electron density in each scf

+ +
+
+ +

◆ nscf()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::nscf (kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
chebyshevOrthogonalizedSubspaceIterationSolversubspaceIterationSolver 
)
+
+private
+
+ +
+
+ +

◆ outputDensity()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::outputDensity ()
+
+private
+
+ +

write electron density solution fields

+ +
+
+ +

◆ outputWfc()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::outputWfc ()
+
+private
+
+ +

write wavefunction solution fields

+ +
+
+ +

◆ popOutRhoInRhoOutVals()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::popOutRhoInRhoOutVals ()
+
+private
+
+ +
+
+ +

◆ projectPreviousGroundStateRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::readkPointData ()
+
+ +
+
+ +

◆ readPSI()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::readPSI ()
+
+private
+
+ +
+
+ +

◆ readPSIRadialValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::readPSIRadialValues ()
+
+private
+
+ +
+
+ +

◆ recomputeKPointCoordinates()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::reInitializeKohnShamDFTOperator ()
+
+ +
+
+ +

◆ resetRhoNodalIn()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::resetRhoNodalIn (distributedCPUVec< double > & OutDensity)
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ resetRhoNodalSplitIn()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
virtual void dftfe::dftClass< FEOrder, FEOrderElectro >::resetRhoNodalSplitIn (distributedCPUVec< double > & OutDensity)
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ rhofieldInnerProduct()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::run ()
+
+virtual
+
+ +

FIXME: legacy call, move to main.cc.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ saveTriaInfoAndRhoNodalData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::saveTriaInfoAndRhoNodalData ()
+
+private
+
+ +

save triangulation information and rho quadrature data to checkpoint file for restarts

+ +
+
+ +

◆ set()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::tuple< bool, double > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::solveNoSCF ()
+
+ +

compute approximation to ground-state without solving the SCF iteration

+ +
+
+ +

◆ subtractAtomicRhoQuadValuesGradients()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::subtractAtomicRhoQuadValuesGradients (std::map< dealii::CellId, std::vector< double > > & quadratureValueData,
std::map< dealii::CellId, std::vector< double > > & quadratureGradValueData,
const bool isConsiderGradData = false 
)
+
+private
+
+ +

subtract atomic densities at quadrature points

+ +
+
+ +

◆ totalCharge() [1/4]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::totalCharge (const dealii::DoFHandler< 3 > & dofHandlerOfField,
const distributedCPUVec< double > & rhoNodalField 
)
+
+private
+
+ +
+
+ +

◆ totalCharge() [2/4]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::totalCharge (const dealii::DoFHandler< 3 > & dofHandlerOfField,
const distributedCPUVec< double > & rhoNodalField,
std::map< dealii::CellId, std::vector< double > > & rhoQuadValues 
)
+
+private
+
+ +

Computes total charge by integrating the electron-density.

+ +
+
+ +

◆ totalCharge() [3/4]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::totalCharge (const dealii::MatrixFree< 3, double > & matrixFreeDataObject,
const distributedCPUVec< double > & rhoNodalField 
)
+
+private
+
+ +
+
+ +

◆ totalMagnetization()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::totalMagnetization (const std::map< dealii::CellId, std::vector< double > > * rhoQuadValues)
+
+private
+
+ +

Computes net magnetization from the difference of local spin densities.

+ +
+
+ +

◆ trivialSolveForStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::trivialSolveForStress ()
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ updateAtomPositionsAndMoveMesh()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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.

+ +
+
+ +

◆ writeBands()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::writeBands ()
+
+private
+
+ +

write the KS eigen values for given BZ sampling/path

+ +
+
+ +

◆ writeDomainAndAtomCoordinates() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + +
virtual void dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::writeMesh ()
+
+virtual
+
+ +

Writes inital density and mesh to file.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ writeMesh() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::writeMesh (std::string meshFileName)
+
+private
+
+ +
+
+ +

◆ writeStructureEnergyForcesDataPostProcess()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro >::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 >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
friend class forceClass< FEOrder, FEOrderElectro >
+
+friend
+
+ +
+
+ +

◆ kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
friend class kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
+
+friend
+
+ +
+
+ +

◆ symmetryClass< FEOrder, FEOrderElectro >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
friend class symmetryClass< FEOrder, FEOrderElectro >
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ a0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::a0
+
+private
+
+ +
+
+ +

◆ atomLocations

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::atomLocations
+
+private
+
+ +

FIXME: remove atom type atributes from atomLocations.

+ +
+
+ +

◆ atomLocationsFractional

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::atomLocationsFractional
+
+private
+
+ +
+
+ +

◆ atomTypes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::set<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::atomTypes
+
+private
+
+ +
+
+ +

◆ basisOperationsPtrHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis::FEBasisOperations<dataTypes::number, double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro >::basisOperationsPtrHost
+
+private
+
+ +
+
+ +

◆ bLow

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::bLow
+
+private
+
+ +
+
+ +

◆ computing_timer

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::dftClass< FEOrder, FEOrderElectro >::computing_timer
+
+private
+
+ +

compute-time logger

+ +
+
+ +

◆ computingTimerStandard

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::dftClass< FEOrder, FEOrderElectro >::computingTimerStandard
+
+private
+
+ +
+
+ +

◆ constraintsNone

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::constraintsNone
+
+private
+
+ +
+
+ +

◆ constraintsNoneDataInfo

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::constraintsNoneEigen
+
+private
+
+ +
+
+ +

◆ constraintsNoneEigenDataInfo

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
meshMovementAffineTransform dftfe::dftClass< FEOrder, FEOrderElectro >::d_affineTransformMesh
+
+private
+
+ +

affine transformation object

+ +
+
+ +

◆ d_atomicRhoScalingFac

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_atomicRhoScalingFac
+
+private
+
+ +
+
+ +

◆ d_atomIdToNonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<unsigned int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_atomIdToNonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads
+
+private
+
+ +

map from local nonlocal atomid to vector over cells

+ +
+
+ +

◆ d_atomLocationsAutoMesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_atomLocationsAutoMesh
+
+private
+
+ +
+
+ +

◆ d_atomNodeIdToChargeMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::types::global_dof_index, double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_atomNodeIdToChargeMap
+
+private
+
+ +

map of atom node number and atomic weight

+ +
+
+ +

◆ d_atomsDisplacementsGaussianRead

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::Tensor<1, 3, double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_atomsDisplacementsGaussianRead
+
+private
+
+ +

Gaussian displacements of atoms read from file.

+ +
+
+ +

◆ d_atomTypeAtributes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_autoMesh
+
+private
+
+ +
+
+ +

◆ d_autoMeshMaxJacobianRatio

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_autoMeshMaxJacobianRatio
+
+private
+
+ +
+
+ +

◆ d_baseDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_baseDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_bCellNonTrivialAtomIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<unsigned int> > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::CellId, std::vector<unsigned int> > > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<unsigned int> > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::CellId, std::vector<unsigned int> > > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_binsStartDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_bQuadAtomIdsAllAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_bQuadAtomIdsAllAtoms
+
+private
+
+ +

non-intersecting smeared charges atom ids of all atoms at quad points

+ +
+
+ +

◆ d_bQuadAtomIdsAllAtomsImages

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_bQuadValuesAllAtoms
+
+private
+
+ +

non-intersecting smeared charges of all atoms at quad points

+ +
+
+ +

◆ d_cellIdToNonlocalAtomIdsLocalCompactSupportMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<unsigned int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_cellIdToNonlocalAtomIdsLocalCompactSupportMap
+
+private
+
+ +

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

+ +
+
+ +

◆ d_closestTriaVertexToAtomsLocation

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_closestTriaVertexToAtomsLocation
+
+private
+
+ +

closest tria vertex

+ +
+
+ +

◆ d_constraintsForHelmholtzRhoNodal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsForHelmholtzRhoNodal
+
+private
+
+ +
+
+ +

◆ d_constraintsForTotalPotentialElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsForTotalPotentialElectro
+
+private
+
+ +
+
+ +

◆ d_constraintsPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsPRefined
+
+private
+
+ +
+
+ +

◆ d_constraintsPRefinedOnlyHanging

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsPRefinedOnlyHanging
+
+private
+
+ +
+
+ +

◆ d_constraintsRhoNodal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsRhoNodal
+
+private
+
+ +
+
+ +

◆ d_constraintsRhoNodalInfo

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsRhoNodalInfo
+
+private
+
+ +
+
+ +

◆ d_constraintsRhoNodalOnlyHanging

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsRhoNodalOnlyHanging
+
+private
+
+ +
+
+ +

◆ d_constraintsVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<const dealii::AffineConstraints<double> *> dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsVector
+
+private
+
+ +
+
+ +

◆ d_constraintsVectorElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<const dealii::AffineConstraints<double> *> dftfe::dftClass< FEOrder, FEOrderElectro >::d_constraintsVectorElectro
+
+private
+
+ +
+
+ +

◆ d_controlPointLocationsCurrentMove

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_controlPointLocationsCurrentMove
+
+private
+
+ +
+
+ +

◆ d_deltaVlIdToFunctionIdDetails

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_deltaVlIdToFunctionIdDetails
+
+private
+
+ +
+
+ +

◆ d_deltaVlSplines

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<alglib::spline1dinterpolant> dftfe::dftClass< FEOrder, FEOrderElectro >::d_deltaVlSplines
+
+private
+
+ +
+
+ +

◆ d_densityDofHandlerIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_densityDofHandlerIndex
+
+private
+
+ +
+
+ +

◆ d_densityDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_densityDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_densityMatDerFermiEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_densityMatDerFermiEnergy
+
+private
+
+ +
+
+ +

◆ d_densityQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_densityQuadratureId
+
+private
+
+ +
+
+ +

◆ d_densityQuadratureIdElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_densityQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_dftfeScratchFolderName

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const std::string dftfe::dftClass< FEOrder, FEOrderElectro >::d_dftfeScratchFolderName
+
+private
+
+ +
+
+ +

◆ d_dftParamsPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftParameters* dftfe::dftClass< FEOrder, FEOrderElectro >::d_dftParamsPtr
+
+private
+
+ +

dftParameters object

+ +
+
+ +

◆ d_dispClosestTriaVerticesToAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::Tensor<1, 3, double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_dispClosestTriaVerticesToAtoms
+
+private
+
+ +
+
+ +

◆ d_dispersionCorr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dispersionCorrection dftfe::dftClass< FEOrder, FEOrderElectro >::d_dispersionCorr
+
+private
+
+ +
+
+ +

◆ d_dofHandlerPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::dftClass< FEOrder, FEOrderElectro >::d_dofHandlerPRefined
+
+private
+
+ +
+
+ +

◆ d_dofHandlerRhoNodal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::dftClass< FEOrder, FEOrderElectro >::d_dofHandlerRhoNodal
+
+private
+
+ +
+
+ +

◆ d_domainBoundingVectors

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_domainBoundingVectors
+
+private
+
+ +
+
+ +

◆ d_domainVolume

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_domainVolume
+
+private
+
+ +

volume of the domain

+ +
+
+ +

◆ d_eigenDofHandlerIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_eigenDofHandlerIndex
+
+private
+
+ +
+
+ +

◆ d_eigenVectorsDensityMatrixPrimeHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro >::d_eigenVectorsDensityMatrixPrimeHost
+
+private
+
+ +
+
+ +

◆ d_eigenVectorsFlattenedHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro >::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::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro >::d_eigenVectorsRotFracDensityFlattenedHost
+
+private
+
+ +
+
+ +

◆ d_elementIdsInAtomCompactSupport

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<unsigned int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_elementIdsInAtomCompactSupport
+
+private
+
+ +
+
+ +

◆ d_elementIteratorsInAtomCompactSupport

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_elementIteratorsInAtomCompactSupport
+
+private
+
+ +
+
+ +

◆ d_elementOneFieldIteratorsInAtomCompactSupport

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_elementOneFieldIteratorsInAtomCompactSupport
+
+private
+
+ +
+
+ +

◆ d_elpaScala

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
elpaScalaManager* dftfe::dftClass< FEOrder, FEOrderElectro >::d_elpaScala
+
+private
+
+ +
+
+ +

◆ d_entropicEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_entropicEnergy
+
+private
+
+ +

entropic energy

+ +
+
+ +

◆ d_excManagerPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
excManager* dftfe::dftClass< FEOrder, FEOrderElectro >::d_excManagerPtr
+
+private
+
+ +
+
+ +

◆ d_flatTopWidthsAutoMeshMove

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_forceDofHandlerIndex
+
+private
+
+ +
+
+ +

◆ d_forceDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_forceDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_freeEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_freeEnergy
+
+private
+
+ +
+
+ +

◆ d_freeEnergyInitial

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_freeEnergyInitial
+
+private
+
+ +
+
+ +

◆ d_fvcontainerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_fvcontainerVals
+
+private
+
+ +
+
+ +

◆ d_fvSpin0containerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_fvSpin0containerVals
+
+private
+
+ +
+
+ +

◆ d_fvSpin1containerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_fvSpin1containerVals
+
+private
+
+ +
+
+ +

◆ d_gaussianConstantsAutoMesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_gaussianConstantsAutoMesh
+
+private
+
+

Gaussian constants for automesh mesh movement stored for all domain atoms

+ +
+
+ +

◆ d_gaussianConstantsForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<dealii::Tensor<1, 3, double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_gaussianMovementAtomsNetDisplacements
+
+private
+
+ +
+
+ +

◆ d_gaussianMovePar

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
meshMovementGaussianClass dftfe::dftClass< FEOrder, FEOrderElectro >::d_gaussianMovePar
+
+private
+
+ +

meshMovementGaussianClass object

+ +
+
+ +

◆ d_generatorFlatTopWidths

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_generatorFlatTopWidths
+
+private
+
+ +

composite generator flat top widths for all domain atoms

+ +
+
+ +

◆ d_ghostProjectorIdsCurrentProcess

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro >::d_ghostProjectorIdsCurrentProcess
+
+private
+
+ +
+
+ +

◆ d_gllQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_gllQuadratureId
+
+private
+
+ +
+
+ +

◆ d_globalChargeIdToImageIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_globalChargeIdToImageIdMap
+
+private
+
+ +

globalChargeId to ImageChargeId Map

+ +
+
+ +

◆ d_globalChargeIdToImageIdMapTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_globalChargeIdToImageIdMapTrunc
+
+private
+
+ +

globalChargeId to ImageChargeId Map generated with a truncated pspCutOff

+ +
+
+ +

◆ d_globalTimer

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::Timer dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_gradbQuadValuesAllAtoms
+
+private
+
+ +

non-intersecting smeared charge gradients of all atoms at quad points

+ +
+
+ +

◆ d_gradRhoAtomsValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_gradRhoAtomsValues
+
+private
+
+ +
+
+ +

◆ d_gradRhoAtomsValuesSeparate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::d_gradRhoAtomsValuesSeparate
+
+private
+
+ +
+
+ +

◆ d_gradRhoCore

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_gradRhoCore
+
+private
+
+ +
+
+ +

◆ d_gradRhoCoreAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::d_gradRhoCoreAtoms
+
+private
+
+ +
+
+ +

◆ d_gradRhoInValuesLpspQuad

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_gradRhoInValuesLpspQuad
+
+private
+
+ +
+
+ +

◆ d_gradRhoOutValuesLpspQuad

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_gradRhoOutValuesLpspQuad
+
+private
+
+ +
+
+ +

◆ d_groundStateDensityHistory

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_groundStateDensityHistory
+
+private
+
+ +
+
+ +

◆ d_groundStateEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_groundStateEnergy
+
+private
+
+ +
+
+ +

◆ d_helmholtzDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_helmholtzDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_hessianRhoAtomsValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_hessianRhoAtomsValues
+
+private
+
+ +
+
+ +

◆ d_hessianRhoAtomsValuesSeparate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::d_hessianRhoAtomsValuesSeparate
+
+private
+
+ +
+
+ +

◆ d_hessianRhoCore

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_hessianRhoCore
+
+private
+
+ +
+
+ +

◆ d_hessianRhoCoreAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::d_hessianRhoCoreAtoms
+
+private
+
+ +
+
+ +

◆ d_imageCharges

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_imageCharges
+
+private
+
+

vector of length number of periodic image charges with corresponding charge values

+ +
+
+ +

◆ d_imageChargesTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_imageIds
+
+private
+
+

vector of lendth number of periodic image charges with corresponding master chargeIds

+ +
+
+ +

◆ d_imageIdsTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_imagePositionsAutoMesh
+
+private
+
+ +
+
+ +

◆ d_imagePositionsTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro >::d_isAtomsGaussianDisplacementsReadFromFile = false
+
+private
+
+ +
+
+ +

◆ d_isFirstFilteringCall

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<bool> dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro >::d_isRestartGroundStateCalcFromChk
+
+private
+
+ +
+
+ +

◆ d_kohnShamDFTOperatorPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
kohnShamDFTOperatorClass<FEOrder, FEOrderElectro>* dftfe::dftClass< FEOrder, FEOrderElectro >::d_kohnShamDFTOperatorPtr
+
+private
+
+ +
+
+ +

◆ d_kohnShamDFTOperatorsInitialized

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro >::d_kohnShamDFTOperatorsInitialized
+
+private
+
+ +
+
+ +

◆ d_kPointCoordinates

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_kPointCoordinates
+
+private
+
+ +

kPoint cartesian coordinates

+ +
+
+ +

◆ d_kPointWeights

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_kPointWeights
+
+private
+
+ +

k point weights

+ +
+
+ +

◆ d_locallyOwnedProjectorIdsCurrentProcess

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro >::d_locallyOwnedProjectorIdsCurrentProcess
+
+private
+
+ +
+
+ +

◆ d_locallyRelevantDofsPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro >::d_locallyRelevantDofsPRefined
+
+private
+
+ +
+
+ +

◆ d_locallyRelevantDofsRhoNodal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro >::d_locallyRelevantDofsRhoNodal
+
+private
+
+ +
+
+ +

◆ d_localVselfs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_localVselfs
+
+private
+
+ +
+
+ +

◆ d_lpspQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_lpspQuadratureId
+
+private
+
+ +
+
+ +

◆ d_lpspQuadratureIdElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_lpspQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_matrixFreeDataPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::MatrixFree<3, double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_matrixFreeDataPRefined
+
+private
+
+ +
+
+ +

◆ d_mesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
triangulationManager dftfe::dftClass< FEOrder, FEOrderElectro >::d_mesh
+
+private
+
+

meshGenerator based object

+ +
+
+ +

◆ d_minDist

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_minDist
+
+private
+
+ +
+
+ +

◆ d_mixingScheme

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
MixingScheme dftfe::dftClass< FEOrder, FEOrderElectro >::d_mixingScheme
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dftClass< FEOrder, FEOrderElectro >::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_nearestAtomDistances

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nearestAtomDistances
+
+private
+
+ +

nearest atom distances for all domain atoms

+ +
+
+ +

◆ d_nearestAtomIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nearestAtomIds
+
+private
+
+ +

nearest atom ids for all domain atoms

+ +
+
+ +

◆ d_netFloatingDispSinceLastBinsUpdate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_netFloatingDispSinceLastBinsUpdate
+
+private
+
+ +
+
+ +

◆ d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps
+
+private
+
+ +
+
+ +

◆ d_nlPSPCutOff

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_nlpspQuadratureId
+
+private
+
+ +
+
+ +

◆ d_noConstraints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_noConstraints
+
+private
+
+ +
+
+ +

◆ d_nonAtomicWaveFunctions

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonAtomicWaveFunctions
+
+ +

Number of random wavefunctions.

+ +
+
+ +

◆ d_nonLocalAtomGlobalChargeIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonLocalAtomGlobalChargeIds
+
+private
+
+ +
+
+ +

◆ d_nonLocalAtomIdsInCurrentProcess

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonLocalAtomIdsInCurrentProcess
+
+private
+
+ +
+
+ +

◆ d_nonLocalAtomIdsInElement

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonLocalAtomIdsInElement
+
+private
+
+ +
+
+ +

◆ d_nonLocalProjectorElementMatricesConjugate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonLocalProjectorElementMatricesConjugate
+
+private
+
+ +
+
+ +

◆ d_nonLocalProjectorElementMatricesTranspose

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonLocalProjectorElementMatricesTranspose
+
+private
+
+ +
+
+ +

◆ d_nonLocalPseudoPotentialConstants

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonLocalPseudoPotentialConstants
+
+private
+
+ +
+
+ +

◆ d_nonLocalPSP_ZetalmDeltaVl

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dataTypes::number> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonLocalPSP_ZetalmDeltaVl
+
+private
+
+ +
+
+ +

◆ d_nonLocalPSP_zetalmDeltaVlProductDistImageAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dataTypes::number> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonLocalPSP_zetalmDeltaVlProductDistImageAtoms
+
+private
+
+ +
+
+ +

◆ d_nonPeriodicDensityDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonPeriodicDensityDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_nonTrivialAllCellsPseudoWfcIdToElemIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonTrivialAllCellsPseudoWfcIdToElemIdMap
+
+private
+
+ +
+
+ +

◆ d_nonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads
+
+private
+
+

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

+ +
+
+ +

◆ d_nonTrivialPseudoWfcsPerCellZetaDeltaVQuads

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_nonTrivialPseudoWfcsPerCellZetaDeltaVQuads
+
+private
+
+ +

vector of size num physical cells

+ +
+
+ +

◆ d_numberPseudoAtomicWaveFunctions

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_numberPseudoAtomicWaveFunctions
+
+private
+
+ +
+
+ +

◆ d_numberPseudoPotentials

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_numberPseudoPotentials
+
+private
+
+ +
+
+ +

◆ d_numEigenValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_numEigenValues
+
+ +

Number of Kohn-Sham eigen values to be computed.

+ +
+
+ +

◆ d_numEigenValuesRR

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_numEigenValuesRR
+
+ +

Number of Kohn-Sham eigen values to be computed in the Rayleigh-Ritz step after spectrum splitting.

+ +
+
+ +

◆ d_outerMostPointPseudoPotData

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_outerMostPointPseudoPotData
+
+private
+
+ +
+
+ +

◆ d_outerMostPointPseudoProjectorData

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_outerMostPointPseudoProjectorData
+
+private
+
+ +
+
+ +

◆ d_outerMostPointPseudoWaveFunctionsData

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_outerMostPointPseudoWaveFunctionsData
+
+private
+
+ +
+
+ +

◆ d_phiExt

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiExt
+
+private
+
+ +
+
+ +

◆ d_phiExtDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiExtDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_phiInValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiInValues
+
+private
+
+ +
+
+ +

◆ d_phiOutValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiOutValues
+
+private
+
+ +
+
+ +

◆ d_phiTotalSolverProblem

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
poissonSolverProblem<FEOrder, FEOrderElectro> dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiTotalSolverProblem
+
+private
+
+ +
+
+ +

◆ d_phiTotAXQuadratureIdElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiTotAXQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_phiTotDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiTotDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_phiTotRhoIn

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiTotRhoIn
+
+private
+
+ +
+
+ +

◆ d_phiTotRhoOut

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_phiTotRhoOut
+
+private
+
+ +
+
+ +

◆ d_preCondResidualVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_preCondResidualVector
+
+private
+
+ +
+
+ +

◆ d_projecterKetTimesFlattenedVectorLocalIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_projecterKetTimesFlattenedVectorLocalIds
+
+private
+
+ +
+
+ +

◆ d_projectorIdsNumberingMapCurrentProcess

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro >::d_projectorIdsNumberingMapCurrentProcess
+
+private
+
+ +
+
+ +

◆ d_projectorKetTimesVectorLocalIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<unsigned int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_projectorKetTimesVectorLocalIds
+
+private
+
+ +
+
+ +

◆ d_projectorKetTimesVectorPar

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_projectorKetTimesVectorPar
+
+private
+
+ +
+
+ +

◆ d_projectorKetTimesVectorParFlattened

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUMultiVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_projectorKetTimesVectorParFlattened
+
+private
+
+

parallel vector used in nonLocalHamiltionian times wavefunction vector computation pre-initialization of the parallel layout is more efficient than creating the parallel layout for every nonLocalHamiltionan times wavefunction computation

+ +
+
+ +

◆ d_pseudoVLoc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_pseudoVLoc
+
+private
+
+ +
+
+ +

◆ d_pseudoVLocAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::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_pseudoWaveFunctionIdToFunctionIdDetails

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_pseudoWaveFunctionIdToFunctionIdDetails
+
+private
+
+ +
+
+ +

◆ d_pseudoWaveFunctionSplines

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<alglib::spline1dinterpolant> dftfe::dftClass< FEOrder, FEOrderElectro >::d_pseudoWaveFunctionSplines
+
+private
+
+ +
+
+ +

◆ d_pspCutOff

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
const double dftfe::dftClass< FEOrder, FEOrderElectro >::d_pspCutOffTrunc = 15.0
+
+private
+
+ +

distance from the domain till which periodic images will be considered

+ +
+
+ +

◆ d_rankCurrentLRD

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_rankCurrentLRD
+
+private
+
+ +
+
+ +

◆ d_reciprocalLatticeVectors

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_reciprocalLatticeVectors
+
+private
+
+ +
+
+ +

◆ d_relativeErrorJacInvApproxPrevScfLRD

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_relativeErrorJacInvApproxPrevScfLRD
+
+private
+
+ +
+
+ +

◆ d_residualNormPredicted

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_residualNormPredicted
+
+private
+
+ +
+
+ +

◆ d_residualPredicted

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_residualPredicted
+
+private
+
+ +
+
+ +

◆ d_rhoAtomsValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoAtomsValues
+
+private
+
+ +

for xl-bomd

+ +
+
+ +

◆ d_rhoAtomsValuesSeparate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoAtomsValuesSeparate
+
+private
+
+ +
+
+ +

◆ d_rhoCore

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoCore
+
+private
+
+ +
+
+ +

◆ d_rhoInNodalVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInNodalVals
+
+private
+
+ +
+
+ +

◆ d_rhoInNodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInNodalValues
+
+private
+
+ +
+
+ +

◆ d_rhoInNodalValuesRead

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInNodalValuesRead
+
+private
+
+ +
+
+ +

◆ d_rhoInSpin0NodalVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInSpin0NodalVals
+
+private
+
+ +
+
+ +

◆ d_rhoInSpin0NodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInSpin0NodalValues
+
+private
+
+ +
+
+ +

◆ d_rhoInSpin0NodalValuesRead

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInSpin0NodalValuesRead
+
+private
+
+ +
+
+ +

◆ d_rhoInSpin1NodalVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInSpin1NodalVals
+
+private
+
+ +
+
+ +

◆ d_rhoInSpin1NodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInSpin1NodalValues
+
+private
+
+ +
+
+ +

◆ d_rhoInSpin1NodalValuesRead

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInSpin1NodalValuesRead
+
+private
+
+ +
+
+ +

◆ d_rhoInValuesLpspQuad

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoInValuesLpspQuad
+
+private
+
+ +
+
+ +

◆ d_rhoNodalField

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoNodalField
+
+private
+
+ +
+
+ +

◆ d_rhoNodalFieldRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoNodalFieldRefined
+
+private
+
+ +
+
+ +

◆ d_rhoNodalFieldSpin0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoNodalFieldSpin0
+
+private
+
+ +
+
+ +

◆ d_rhoNodalFieldSpin1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoNodalFieldSpin1
+
+private
+
+ +
+
+ +

◆ d_rhoOutNodalVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutNodalVals
+
+private
+
+ +
+
+ +

◆ d_rhoOutNodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutNodalValues
+
+private
+
+ +
+
+ +

◆ d_rhoOutNodalValuesDistributed

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutNodalValuesDistributed
+
+private
+
+ +
+
+ +

◆ d_rhoOutNodalValuesSplit

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutNodalValuesSplit
+
+private
+
+ +
+
+ +

◆ d_rhoOutSpin0NodalVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutSpin0NodalVals
+
+private
+
+ +
+
+ +

◆ d_rhoOutSpin0NodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutSpin0NodalValues
+
+private
+
+ +
+
+ +

◆ d_rhoOutSpin1NodalVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutSpin1NodalVals
+
+private
+
+ +
+
+ +

◆ d_rhoOutSpin1NodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutSpin1NodalValues
+
+private
+
+ +
+
+ +

◆ d_rhoOutValuesLpspQuad

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_rhoOutValuesLpspQuad
+
+private
+
+ +
+
+ +

◆ d_smearedChargeQuadratureIdElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_smearedChargeQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_smearedChargeScaling

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_smearedChargeScaling
+
+private
+
+ +

smeared charge normalization scaling for all domain atoms

+ +
+
+ +

◆ d_smearedChargeWidthMin

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const double dftfe::dftClass< FEOrder, FEOrderElectro >::d_smearedChargeWidthMin = 0.4
+
+private
+
+ +

minimum smeared charge width

+ +
+
+ +

◆ d_smearedChargeWidths

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_smearedChargeWidths
+
+private
+
+ +

smeared charge widths for all domain atoms

+ +
+
+ +

◆ d_sparsityPattern

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_sparsityPattern
+
+private
+
+ +
+
+ +

◆ d_subspaceIterationSolver

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
chebyshevOrthogonalizedSubspaceIterationSolver dftfe::dftClass< FEOrder, FEOrderElectro >::d_subspaceIterationSolver
+
+private
+
+

chebyshev subspace iteration solver objects

+ +
+
+ +

◆ d_sumNonTrivialPseudoWfcsOverAllCellsZetaDeltaVQuads

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::d_sumNonTrivialPseudoWfcsOverAllCellsZetaDeltaVQuads
+
+private
+
+ +
+
+ +

◆ d_supportPoints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::types::global_dof_index, dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_supportPoints
+
+private
+
+ +
+
+ +

◆ d_supportPointsEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::types::global_dof_index, dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_supportPointsEigen
+
+private
+
+ +
+
+ +

◆ d_supportPointsPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::types::global_dof_index, dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_supportPointsPRefined
+
+private
+
+ +
+
+ +

◆ d_tempEigenVec

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_tempEigenVec
+
+private
+
+ +
+
+ +

◆ d_tolReached

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro >::d_tolReached
+
+private
+
+ +
+
+ +

◆ d_upperBoundUnwantedSpectrumValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::d_upperBoundUnwantedSpectrumValues
+
+private
+
+ +
+
+ +

◆ d_vcontainerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_vcontainerVals
+
+private
+
+ +

for low rank jacobian inverse approximation

+ +
+
+ +

◆ d_vselfBinsManager

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
vselfBinsManager<FEOrder, FEOrderElectro> dftfe::dftClass< FEOrder, FEOrderElectro >::d_vselfBinsManager
+
+private
+
+ +

vselfBinsManager object

+ +
+
+ +

◆ d_vselfFieldGateauxDerStrainFDBins

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_vSpin0containerVals
+
+private
+
+ +
+
+ +

◆ d_vSpin1containerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::d_vSpin1containerVals
+
+private
+
+ +
+
+ +

◆ d_wfcInitTruncation

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::d_wfcInitTruncation = 5.0
+
+private
+
+ +

init wfc trunctation radius

+ +
+
+ +

◆ dofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::dftClass< FEOrder, FEOrderElectro >::dofHandler
+
+private
+
+ +
+
+ +

◆ dofHandlerEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::dftClass< FEOrder, FEOrderElectro >::dofHandlerEigen
+
+private
+
+ +
+
+ +

◆ eigenValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::eigenValues
+
+private
+
+

data storage for Kohn-Sham wavefunctions

+ +
+
+ +

◆ eigenValuesRRSplit

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro >::eigenValuesRRSplit
+
+private
+
+ +

Spectrum split higher eigenvalues computed in Rayleigh-Ritz step.

+ +
+
+ +

◆ FE

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::FESystem<3> dftfe::dftClass< FEOrder, FEOrderElectro >::FE
+
+private
+
+

dealii based FE data structres

+ +
+
+ +

◆ FEEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::FESystem<3> dftfe::dftClass< FEOrder, FEOrderElectro >::FEEigen
+
+private
+
+ +
+
+ +

◆ fermiEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::fermiEnergy
+
+private
+
+ +

fermi energy

+ +
+
+ +

◆ fermiEnergyDown

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::fermiEnergyDown
+
+private
+
+ +
+
+ +

◆ fermiEnergyUp

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro >::fermiEnergyUp
+
+private
+
+ +
+
+ +

◆ forcePtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
forceClass<FEOrder, FEOrderElectro>* dftfe::dftClass< FEOrder, FEOrderElectro >::forcePtr
+
+private
+
+ +
+
+ +

◆ gradRhoInValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr<std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::gradRhoInValues
+
+private
+
+ +
+
+ +

◆ gradRhoInValuesSpinPolarized

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr<std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::gradRhoInValuesSpinPolarized
+
+private
+
+ +
+
+ +

◆ gradRhoOutValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr<std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::gradRhoOutValues
+
+private
+
+ +
+
+ +

◆ gradRhoOutValuesSpinPolarized

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr<std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::gradRhoOutValuesSpinPolarized
+
+private
+
+ +
+
+ +

◆ interBandGroupComm

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dftClass< FEOrder, FEOrderElectro >::interBandGroupComm
+
+private
+
+ +
+
+ +

◆ interpoolcomm

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dftClass< FEOrder, FEOrderElectro >::interpoolcomm
+
+private
+
+ +
+
+ +

◆ kPointReducedCoordinates

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro >::kPointReducedCoordinates
+
+private
+
+ +

k point crystal coordinates

+ +
+
+ +

◆ local_dof_indicesImag

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftClass< FEOrder, FEOrderElectro >::local_dof_indicesImag
+
+private
+
+ +
+
+ +

◆ local_dof_indicesReal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftClass< FEOrder, FEOrderElectro >::local_dof_indicesReal
+
+private
+
+ +
+
+ +

◆ locally_owned_dofs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro >::locally_owned_dofs
+
+private
+
+ +
+
+ +

◆ locally_owned_dofsEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro >::locally_owned_dofsEigen
+
+private
+
+ +
+
+ +

◆ locally_relevant_dofs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro >::locally_relevant_dofs
+
+private
+
+ +
+
+ +

◆ locally_relevant_dofsEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro >::locally_relevant_dofsEigen
+
+private
+
+ +
+
+ +

◆ localProc_dof_indicesImag

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftClass< FEOrder, FEOrderElectro >::localProc_dof_indicesImag
+
+private
+
+ +
+
+ +

◆ localProc_dof_indicesReal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftClass< FEOrder, FEOrderElectro >::localProc_dof_indicesReal
+
+private
+
+ +
+
+ +

◆ lowerBoundKindex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
dealii::MatrixFree<3, double> dftfe::dftClass< FEOrder, FEOrderElectro >::matrix_free_data
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dftClass< FEOrder, FEOrderElectro >::mpi_communicator
+
+private
+
+

parallel objects

+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ numElectrons

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::numElectrons
+
+private
+
+

stores required data for Kohn-Sham problem

+ +
+
+ +

◆ numElectronsDown

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::numElectronsDown
+
+private
+
+ +
+
+ +

◆ numElectronsUp

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::numElectronsUp
+
+private
+
+ +
+
+ +

◆ numLevels

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::numLevels
+
+private
+
+ +
+
+ +

◆ outerValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<unsigned int, std::map<unsigned int, double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::outerValues
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::dftClass< FEOrder, FEOrderElectro >::pcout
+
+private
+
+ +

device eigenvectors

+

parallel message stream

+ +
+
+ +

◆ radValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<unsigned int, std::map<unsigned int, alglib::spline1dinterpolant> > > dftfe::dftClass< FEOrder, FEOrderElectro >::radValues
+
+private
+
+ +
+
+ +

◆ rhoInValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr<std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::rhoInValues
+
+private
+
+ +
+
+ +

◆ rhoInValuesSpinPolarized

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr<std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::rhoInValuesSpinPolarized
+
+private
+
+ +
+
+ +

◆ rhoOutValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr<std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::rhoOutValues
+
+private
+
+ +
+
+ +

◆ rhoOutValuesSpinPolarized

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr<std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro >::rhoOutValuesSpinPolarized
+
+private
+
+ +
+
+ +

◆ scfConverged

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro >::scfConverged
+
+private
+
+

@ nscf variables

+ +
+
+ +

◆ selectedDofsHanging

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<bool> dftfe::dftClass< FEOrder, FEOrderElectro >::selectedDofsHanging
+
+private
+
+ +
+
+ +

◆ symmetryPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
symmetryClass<FEOrder, FEOrderElectro>* dftfe::dftClass< FEOrder, FEOrderElectro >::symmetryPtr
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::dftClass< FEOrder, FEOrderElectro >::this_mpi_process
+
+private
+
+ +
+
+ +

◆ waveFunctionsVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<orbital> dftfe::dftClass< FEOrder, FEOrderElectro >::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..cc7fc6797bac0747b3017179da6ac24bbe0af284 GIT binary patch literal 732 zcmeAS@N?(olHy`uVBq!ia0y~yU}Ocd12~w0q3f*F8(FfeDDeT9L6Dc#e>F{Fa=?cCc%M-({P z1k=kZ{;TH+`zQ2t&V6R^`hMdKy@W5!AE)j4URR}h{*2AeCMJyrCJlql6QebDxW-D& znAt0~Ir`s>nfcdtYpk*6Wj5Y?@zfuNw%3|#BIAPgs98OU%?+8&-TGqEyzu6oa}Gs4 zSG)Pt^wc)7tm&&?Kjz~KJvlozH0`SRr=LHAxOTDToxQ0(w?jJWne)~QhSA&i_MJNO zr~X$={0-y!)Oe2R4mzKAoDF#K>-d*xUG{Mj@x|^2#{1(O8ATizMP}UO0J$tg1nAT< zRi&y3dl#3>+8R0nb_W=^IGGF@n06^^2uu_UU|GYcS9S8R< zkgD~2cCS-{@9p>2TPrV$Cmrvdsq^;gzZt@7PaDkQd)M)H>3k-i#rancybQSO_(e7_ z>iI!gMWs(dd+S~GmwY(TbT5KiN$I;5C?*=3IwTldJq}tvPrEMvFyThmKg)&;U^-;* MboFyt=akR{057^kUH||9 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..6fb683278 --- /dev/null +++ b/classdftfe_1_1dft_parameters-members.html @@ -0,0 +1,271 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftParameters Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
absLinearSolverTolerancedftfe::dftParameters
absLinearSolverToleranceHelmholtzdftfe::dftParameters
absPoissonSolverToleranceLRDdftfe::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
deviceMemOptModedftfe::dftParameters
dftParameters()dftfe::dftParameters
diracDeltaKernelScalingConstantdftfe::dftParameters
domainBoundingVectorsFiledftfe::dftParameters
electrostaticsHRefinementdftfe::dftParameters
estimateJacCondNoFinalSCFIterdftfe::dftParameters
extrapolateDensitydftfe::dftParameters
finiteElementPolynomialOrderdftfe::dftParameters
finiteElementPolynomialOrderElectrostaticsdftfe::dftParameters
floatingNuclearChargesdftfe::dftParameters
forceRelaxToldftfe::dftParameters
gaussianConstantForcedftfe::dftParameters
gaussianOrderForcedftfe::dftParameters
gaussianOrderMoveMeshToAtomsdftfe::dftParameters
highestStateOfInterestForChebFilteringdftfe::dftParameters
HXOptimFlagdftfe::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
meshAdaptiondftfe::dftParameters
meshSizeInnerBalldftfe::dftParameters
meshSizeOuterBalldftfe::dftParameters
meshSizeOuterDomaindftfe::dftParameters
methodSubTypeLRDdftfe::dftParameters
mixingHistorydftfe::dftParameters
mixingMethoddftfe::dftParameters
mixingParameterdftfe::dftParameters
modelXCInputFiledftfe::dftParameters
mpiAllReduceMessageBlockSizeMBdftfe::dftParameters
n_refinement_stepsdftfe::dftParameters
natomsdftfe::dftParameters
natomTypesdftfe::dftParameters
nbandGrpsdftfe::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)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
restartFolderdftfe::dftParameters
restartSpinFromNoSpindftfe::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
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
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
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..7a5b1fce5 --- /dev/null +++ b/classdftfe_1_1dft_parameters.html @@ -0,0 +1,3076 @@ + + + + + + + +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)
 
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
 
std::string modelXCInputFile
 
double radiusAtomBall
 
double mixingParameter
 
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 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
 
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 electrostaticsHRefinement
 
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 HXOptimFlag
 
bool floatingNuclearCharges
 
bool nonLinearCoreCorrection
 
unsigned int maxLineSearchIterCGPRP
 
std::string atomicMassesFile
 
bool useDeviceDirectAllReduce
 
double pspCutoffImageCharges
 
bool reuseLanczosUpperBoundFromFirstCall
 
bool allowMultipleFilteringPassesAfterFirstScf
 
unsigned int highestStateOfInterestForChebFiltering
 
bool useELPADeviceKernel
 
bool deviceMemOptMode
 
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 
)
+
+

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
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ deviceMemOptMode

+ +
+
+ + + + +
bool dftfe::dftParameters::deviceMemOptMode
+
+ +
+
+ +

◆ diracDeltaKernelScalingConstant

+ +
+
+ + + + +
double dftfe::dftParameters::diracDeltaKernelScalingConstant
+
+ +
+
+ +

◆ domainBoundingVectorsFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::domainBoundingVectorsFile
+
+ +
+
+ +

◆ electrostaticsHRefinement

+ +
+
+ + + + +
bool dftfe::dftParameters::electrostaticsHRefinement
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ HXOptimFlag

+ +
+
+ + + + +
bool dftfe::dftParameters::HXOptimFlag
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ restartFolder

+ +
+
+ + + + +
std::string dftfe::dftParameters::restartFolder
+
+ +
+
+ +

◆ restartSpinFromNoSpin

+ +
+
+ + + + +
bool dftfe::dftParameters::restartSpinFromNoSpin
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ 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
+
+ +
+
+ +

◆ 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..6f89c809c --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_composite_data-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::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..83f8eb2e6 --- /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..88fae1476ee1aed780e74290ece798700194cc07 GIT binary patch literal 888 zcmeAS@N?(olHy`uVBq!ia0vp^&wx09gBeI#ssDTkq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)$>l;uQT1AE%BVYxAS7>&b1LO+WX(Fl{~9( z^{h&z&4P|uZyk%)dh{iE#0UH~yxVq^Z)>EZ>*~cfA6O=Siha6vujFO17Va}?m+FrB zcuGH(5x%0f_M_9JbzfFz)EQ`NnEPLE)?~f>>CEoQ+iK0vpW*s+R`kr|)3t@>t2cd! zH#{r;QDdpvTCZX+)$mMy|Nf{~6QZV?tqqTv9C3K^QuYVz_kBHg1#bUkXsG(KyNY9( z%H3t1nx2a@Kw(jp+$M1715-o(YgUHGuO(-!zpiXCzwzg?8m8yY2I)wyPf852Z& zeHbKMg@qa1E*@cN2qa1G~@S!XKCkZcs@5zo~knU%pJC8 z?VTzwOZy^qCmU|JSi5|uYF;QQCx_y$E(aZ_EKij|l_V0IuvhIXyp1Wty zj6504T#%5r*LBCI*Y{>!c({MA9>TAUVd+zzC4uA^v{;&vlk=J+}d3Ay!Z_N z#hg3sn|`xwF64PPCx&D7N!uCQ6k-y7Eh+UoBJyd*vfmZ25BPXyzmAkPW{z>${P1_= zQr$UQzQ1xd(3|v)WirpQsje$dJ-i3>LfV4-eFu%Prb5t$&HY%yDL?mJ<%<{7q$A5obl}$Z@s)H)rbC_A2cZ^ zGilP3`xl%IJU^AsnxSIZ1rAB`XPb0RfB40|Ab$TADU(m?z&yg>>FVdQ&MBb@0JeUw A`v3p{ 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..fcd531373 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file-members.html @@ -0,0 +1,90 @@ + + + + + + + +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..e87afd5f3 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html @@ -0,0 +1,143 @@ + + + + + + + +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..c7c13bda8 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_pool-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::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..477aa338f --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_pool.html @@ -0,0 +1,235 @@ + + + + + + + +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_Comm & get_interpool_comm ()
 get the communicator across the processor groups
 
MPI_Comm & get_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..87902347d --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_quad_data_composite_write-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::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..f9ab69cd7 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html @@ -0,0 +1,274 @@ + + + + + + + +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< double > d_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..7cddc9dc498a6d626bd3cde81ce83f6d73bfce3d GIT binary patch literal 883 zcmV-(1C0EMP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|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 JPDHLkV1fvSx8DE& 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..7c43165f7 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1constraint_matrix_info-members.html @@ -0,0 +1,108 @@ + + + + + + + +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, const unsigned int blockSize) constdftfe::dftUtils::constraintMatrixInfo
distribute_slave_to_master(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) constdftfe::dftUtils::constraintMatrixInfo
distribute_slave_to_master(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) constdftfe::dftUtils::constraintMatrixInfo
initialize(const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const dealii::AffineConstraints< double > &constraintMatrixData)dftfe::dftUtils::constraintMatrixInfo
set_zero(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) constdftfe::dftUtils::constraintMatrixInfo
set_zero(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) 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..546f1339b --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1constraint_matrix_info.html @@ -0,0 +1,659 @@ + + + + + + + +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 unsigned int blockSize) 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 unsigned int blockSize) const
 
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 unsigned int blockSize) 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< double > d_columnValues
 
std::vector< double > d_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 unsigned int blockSize 
) 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 unsigned int blockSize 
) 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
+
+
+ +
+
+ +

◆ set_zero() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::set_zero (distributedCPUMultiVec< T > & fieldVector,
const unsigned int blockSize 
) 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..52c9998c3 --- /dev/null +++ b/classdftfe_1_1dftfe_wrapper-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::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)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 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)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)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 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..4cfcc6d46 --- /dev/null +++ b/classdftfe_1_1dftfe_wrapper.html @@ -0,0 +1,1386 @@ + + + + + + + +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)
 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 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)
 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 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, 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 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< bool > getPBC () const
 Gets the boundary conditions for each cell vector direction.
 
std::vector< int > getAtomicNumbers () const
 Gets the atomic numbers vector.
 
std::vector< int > getValenceElectronNumbers () 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)
 
+ + + + + + + + + + + +

+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 
)
+
+ +

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 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 >{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

+
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)
+
+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 >{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 
)
+
+ +
+
+ +

◆ 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 
)
+
+ +

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 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..0903aece1 --- /dev/null +++ b/classdftfe_1_1dispersion_correction-members.html @@ -0,0 +1,108 @@ + + + + + + + +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..f806b9227 --- /dev/null +++ b/classdftfe_1_1dispersion_correction.html @@ -0,0 +1,636 @@ + + + + + + + +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< double > d_forceDispersion
 
std::array< double, 9 > d_stressDispersion
 
std::vector< double > d_atomCoordinates
 
std::vector< int > d_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 dftParametersdftParams 
)
+
+ +

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..89e929676 --- /dev/null +++ b/classdftfe_1_1eigen_solver_class-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::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 &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..dc16ed003 --- /dev/null +++ b/classdftfe_1_1eigen_solver_class.html @@ -0,0 +1,272 @@ + + + + + + + +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 &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 (operatorDFTClassoperatorMatrix,
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..f6b7a75648eb9a23520bd5d804108b713754c88d GIT binary patch literal 1099 zcmeAS@N?(olHy`uVBq!ia0y~yVDtpC12~w0 zv-gNT4lxdXcxLJ2Q#q@bt<8GQ7M~iu{aW=$bNke+`aJXdlfEq8bL@#pW&Gr~>$Bfm zt*d`76Kk%2<<&j*df$zEPCfBB@bBA>$B#bUNRdCY?(_7war;v*%~Lwvs(Wl}qVUDv zn;pNcPrd8-@6ju{X}31?+$!1dVY~dWxP^XJ*g5le=)z7s)-*zO#g5 zC)stF$K0LtrE!U;XP1JnR}c#pT*L^ zuudshm0^yWFOvh$OF;%;05S+T0>wFi%3LO>F)B2fa54xk@nq;w04ib06rz@rA3T${ zUi-w==X2=^nz;Mf2n7Dy*KV!-5bb1`$tv1*BUpuBedzW1nz5Z>Q z{Nev+F5kH|?ZfBmdfnfC`I;@e{b!G9W%rY1dCM;9y^HO=T{W5g?wbeA8)|nPU2PnB z;+v({;`xE*uVcmjDpb3kezN9d;P!Q^`i+V|@6G?@$YQ+1d}sZRtM?P7>J0mRcbVFs zS|t6%;iB#2vh{C^X6BcMK6Z=k@pBCf+yOxw1vS&QF&+ce?r=RbBoQz!4fn^sb`{&aGA*{{tztW(&3pDg<@yEWB+?mvbv%hPsm zS2MNRy?sIUEB5s5mdm$G-rT&Kw{${l{Wjn0>x7dhsqF8*&EfG$+U3ZPl^H5OI|L># zzkDzEv`S^yc@xPAUw3`;G-}~r>pAJqd(X)#l8&=fP688;r`rTjbgn)bmF)|RVwwL8 X7mrI8d#tSjl@1J^u6{1-oD!M`A6 literal 0 HcmV?d00001 diff --git a/classdftfe_1_1elpa_scala_manager-members.html b/classdftfe_1_1elpa_scala_manager-members.html new file mode 100644 index 000000000..b1f5e68b1 --- /dev/null +++ b/classdftfe_1_1elpa_scala_manager-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::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..1889f1807 --- /dev/null +++ b/classdftfe_1_1elpa_scala_manager.html @@ -0,0 +1,513 @@ + + + + + + + +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_t & getElpaHandle ()
 
elpa_t & getElpaHandlePartialEigenVec ()
 
elpa_autotune_t & getElpaAutoTuneHandle ()
 
const MPI_Comm & getMPICommunicator () 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 dftParametersdftParams)
+
+ +
+
+ +

◆ 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 dftParametersdftParams 
)
+
+ +
+
+

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..6dfc54b79 --- /dev/null +++ b/classdftfe_1_1energy_calculator-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::energyCalculator Member List
+
+
+ +

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

+ + + + + + + + + + + +
computeEnergy(const dealii::DoFHandler< 3 > &dofHandlerElectrostatic, const dealii::DoFHandler< 3 > &dofHandlerElectronic, const dealii::Quadrature< 3 > &quadratureElectrostatic, const dealii::Quadrature< 3 > &quadratureElectronic, const dealii::Quadrature< 3 > &quadratureSmearedCharge, const dealii::Quadrature< 3 > &quadratureLpsp, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const excManager *excManagerPtr, const dispersionCorrection &dispersionCorr, const std::map< dealii::CellId, std::vector< double > > &phiTotRhoInValues, const distributedCPUVec< double > &phiTotRhoOut, const std::map< dealii::CellId, std::vector< double > > &rhoInValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostatic, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostaticLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, 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 > > &pseudoValuesElectronic, const std::map< dealii::CellId, std::vector< double > > &pseudoValuesElectrostatic, 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) constdftfe::energyCalculator
computeEnergySpinPolarized(const dealii::DoFHandler< 3 > &dofHandlerElectrostatic, const dealii::DoFHandler< 3 > &dofHandlerElectronic, const dealii::Quadrature< 3 > &quadratureElectrostatic, const dealii::Quadrature< 3 > &quadratureElectronic, const dealii::Quadrature< 3 > &quadratureSmearedCharge, const dealii::Quadrature< 3 > &quadratureLpsp, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const excManager *excManagerPtr, const dispersionCorrection &dispersionCorr, const std::map< dealii::CellId, std::vector< double > > &phiTotRhoInValues, const distributedCPUVec< double > &phiTotRhoOut, const std::map< dealii::CellId, std::vector< double > > &rhoInValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostatic, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostaticLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoInValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesSpinPolarized, 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 > > &pseudoValuesElectronic, const std::map< dealii::CellId, std::vector< double > > &pseudoValuesElectrostatic, 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) constdftfe::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
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..51ebab371 --- /dev/null +++ b/classdftfe_1_1energy_calculator.html @@ -0,0 +1,916 @@ + + + + + + + +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 dealii::DoFHandler< 3 > &dofHandlerElectrostatic, const dealii::DoFHandler< 3 > &dofHandlerElectronic, const dealii::Quadrature< 3 > &quadratureElectrostatic, const dealii::Quadrature< 3 > &quadratureElectronic, const dealii::Quadrature< 3 > &quadratureSmearedCharge, const dealii::Quadrature< 3 > &quadratureLpsp, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const excManager *excManagerPtr, const dispersionCorrection &dispersionCorr, const std::map< dealii::CellId, std::vector< double > > &phiTotRhoInValues, const distributedCPUVec< double > &phiTotRhoOut, const std::map< dealii::CellId, std::vector< double > > &rhoInValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostatic, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostaticLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, 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 > > &pseudoValuesElectronic, const std::map< dealii::CellId, std::vector< double > > &pseudoValuesElectrostatic, 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) const
 
double computeEnergySpinPolarized (const dealii::DoFHandler< 3 > &dofHandlerElectrostatic, const dealii::DoFHandler< 3 > &dofHandlerElectronic, const dealii::Quadrature< 3 > &quadratureElectrostatic, const dealii::Quadrature< 3 > &quadratureElectronic, const dealii::Quadrature< 3 > &quadratureSmearedCharge, const dealii::Quadrature< 3 > &quadratureLpsp, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const excManager *excManagerPtr, const dispersionCorrection &dispersionCorr, const std::map< dealii::CellId, std::vector< double > > &phiTotRhoInValues, const distributedCPUVec< double > &phiTotRhoOut, const std::map< dealii::CellId, std::vector< double > > &rhoInValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostatic, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostaticLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoInValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesSpinPolarized, 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 > > &pseudoValuesElectronic, const std::map< dealii::CellId, std::vector< double > > &pseudoValuesElectrostatic, 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) const
 
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 dftParametersdftParams 
)
+
+ +

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 dealii::DoFHandler< 3 > & dofHandlerElectrostatic,
const dealii::DoFHandler< 3 > & dofHandlerElectronic,
const dealii::Quadrature< 3 > & quadratureElectrostatic,
const dealii::Quadrature< 3 > & quadratureElectronic,
const dealii::Quadrature< 3 > & quadratureSmearedCharge,
const dealii::Quadrature< 3 > & quadratureLpsp,
const std::vector< std::vector< double > > & eigenValues,
const std::vector< double > & kPointWeights,
const double fermiEnergy,
const excManagerexcManagerPtr,
const dispersionCorrectiondispersionCorr,
const std::map< dealii::CellId, std::vector< double > > & phiTotRhoInValues,
const distributedCPUVec< double > & phiTotRhoOut,
const std::map< dealii::CellId, std::vector< double > > & rhoInValues,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectrostatic,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectrostaticLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoInValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValues,
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 > > & pseudoValuesElectronic,
const std::map< dealii::CellId, std::vector< double > > & pseudoValuesElectrostatic,
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 
) const
+
+

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
+ +
+
+ +

◆ computeEnergySpinPolarized()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::energyCalculator::computeEnergySpinPolarized (const dealii::DoFHandler< 3 > & dofHandlerElectrostatic,
const dealii::DoFHandler< 3 > & dofHandlerElectronic,
const dealii::Quadrature< 3 > & quadratureElectrostatic,
const dealii::Quadrature< 3 > & quadratureElectronic,
const dealii::Quadrature< 3 > & quadratureSmearedCharge,
const dealii::Quadrature< 3 > & quadratureLpsp,
const std::vector< std::vector< double > > & eigenValues,
const std::vector< double > & kPointWeights,
const double fermiEnergy,
const double fermiEnergyUp,
const double fermiEnergyDown,
const excManagerexcManagerPtr,
const dispersionCorrectiondispersionCorr,
const std::map< dealii::CellId, std::vector< double > > & phiTotRhoInValues,
const distributedCPUVec< double > & phiTotRhoOut,
const std::map< dealii::CellId, std::vector< double > > & rhoInValues,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectrostatic,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectrostaticLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoInValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & rhoInValuesSpinPolarized,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesSpinPolarized,
const std::map< dealii::CellId, std::vector< double > > & gradRhoInValuesSpinPolarized,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesSpinPolarized,
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 > > & pseudoValuesElectronic,
const std::map< dealii::CellId, std::vector< double > > & pseudoValuesElectrostatic,
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 
) const
+
+

Computes total energy of the spin polarized 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
fermiEnergyUp
fermiEnergyDown
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.
rhoInValuesSpinPolarizedcell quadrature data of input spin polarized electron density to an eigensolve. This data must correspond to quadratureElectronic.
rhoOutValuesSpinPolarizedcell quadrature data of output spin polarized electron density of an eigensolve. This data must correspond to quadratureElectronic.
gradRhoInValuesSpinPolarizedcell quadrature data of input gradient spin polarized electron density to an eigensolve. This data must correspond to quadratureElectronic.
gradRhoOutValuesSpinPolarizedcell quadrature data of output gradient spin polarized 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
+
+ +
+
+

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..d57ccf627 --- /dev/null +++ b/classdftfe_1_1exc_density_base_class-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::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..8901aeb34 --- /dev/null +++ b/classdftfe_1_1exc_density_base_class.html @@ -0,0 +1,358 @@ + + + + + + + +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..e88e7a3cf454cd865f864bd934be50e4009b4972 GIT binary patch literal 1060 zcmeAS@N?(olHy`uVBq!ia0y~yU<6`@01jp#S+j*V2}nr?_=LFr|NkGzeDUUMY5$?+ z76zIH64TGTIB?(qP&|0j60o@2U)L|EpfwpMEnxK8bmUKxpRodACJYNxm@qmNsGk-c#!&-&cR} zGJjj|yV5>5%kV~URsNf;=3%erWcOR0%KuYk@vpIW|Kz2A124Zj{w^c`)oZKH@LS(A zCT+|w_h;Q9aQ|x1`s}dHmL+oGhhmrJ{@QhHf2j9+^?#cRZwpu2cJCIhU(56LO`chu z=(aC1`=?ENS`lCVd)wbz()Z82;Za)Vzx1M8aORGSpuq6fGBxH_ojPk~>m;wUXPi8j zrll>6@q1~&bGV)PLwqr_2g4$dr3@4AM8m=MAxaB}*^5-tIEEmjV-R;HFoUW`C3 z3=5Y8H3S4{I%upEQJ4Z$fPj9Gw58&$Ag|7+ zVP2XGV{~pQdCu<**Yce2t2K2AFj`fBu2$8Y5~Ag~(8Q~KV&cz9OPt$2`cDEz>4)6x z>sD!*^WMwYd}zFM`A{rV3G+Puvc)Cu{=2jkFK?c=F7s{F@jJ0sto1c*)noQQ^Pb?( z{(6evYuj}Pw^)2%`aS4acd6U<5Li^FPv~B-@y@=*)rbpknyx6Ix$f3euwe-m$Sv^HE<8C;z9 zxh1cuS;yA)PX1Iou5SS=^`DoPzdc%!|K|Q;&dvM@b2r@f{<^{P&X0VK??)5%pT0D= zYwzZ+cU8Ne{r393G5WV&)AG$GCU?Y}YZp!X^?Y~G+g1O+{rx3z+jqx2nXiJsML$f9 zk`m0TfAnAD#=j%+ag~10_6EJ^yHL8i^y$T`|4nV|GozdCEQ^wwZ~M`ot9&KT=>~b$ z*HgSMahm)NoD`SfzfxtcgTsz=?OualZc7b03$i9Cy4_!HqQQ9Xp4X%=-uHHVRDC&p zNsuR(>Qt{Fjg=vjfJtDI$f@a + + + + + + +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..97f74ae7a --- /dev/null +++ b/classdftfe_1_1exc_density_g_g_a_class.html @@ -0,0 +1,488 @@ + + + + + + + +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

NNGGA * d_NNGGAPtr
 
xc_func_type * d_funcXPtr
 
xc_func_type * d_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..5ad158a26d93c2b85a869f19136a91ffdeadfbda GIT binary patch literal 784 zcmeAS@N?(olHy`uVBq!ia0vp^OMp0lgBeIJ$k3|+QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nsld%8G=R4~4sd;8pC1D+Q3 z=8&I%=T~sI{FpFBX>DX+ZrI%Ytk&nm8Ux9ql!_@@66C(Z{R`Dy22%li=}`dU!Y`gggluz81;D2Ocn)dlZ=(amn+YT4;8%eew2tAm3 zY3aR3ktbd}6cT%z_50pru?2b8dJjMElXChcBK>&#yfxxWc50RWx^<`ZW!~Qf#jj4S z&mG^VV`| zDot7lA{5zo{?mE-LrBo_s#%4SlJZ{OYu92*&nB+R_cQC6aP@CcmHG0`H<-g?H>*3} zk7>FSv_mdy|EzDyyFz9(JbUwMr{3C$-`b-@m>=x;t9Z8W+xq4^+sbBMng6cVXM3fd z(%Bo*T>38v$4h^DW=@Ou%T}+w;lK|7ZJ0F&Ixv>-oj(=5b#$m*wuB_?IWE z9A~W#ntgohl$m+eKY4#$+uFwa>i4-Te+}xiws)M6J;hOPp5paowqkM9{kS~AiTkg% mhzOp%04Ah2O$m})XaA+DZNttFi4%com%-E3&t;ucLK6VU+;H&# 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..6c9082d3f --- /dev/null +++ b/classdftfe_1_1exc_density_l_d_a_class-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::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..846c674bb --- /dev/null +++ b/classdftfe_1_1exc_density_l_d_a_class.html @@ -0,0 +1,488 @@ + + + + + + + +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

NNLDA * d_NNLDAPtr
 
xc_func_type * d_funcXPtr
 
xc_func_type * d_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..e900ce6d9aaae86da6928b9719226a308bd974e4 GIT binary patch literal 775 zcmeAS@N?(olHy`uVBq!ia0vp^OMp0lgBeIJ$k3|+QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Nr)dAc};R4~4s`?Bw~0#7Ty zdeGDF^^ZseGO*t>z|4Dxolz^JHzACO{obgGZ!*?PLeE|kQ#Wi z-s4kH>QCj9^U|7c>7}o`w#(XcTi1lrZ|ohVmyY@{SDF@^*D>vEE3mv=^+tDA+TCA8 zKaAb4&pdtURc7@{Ps0gUpZ0Tl=$DwMusyyzL9^%k^4Ti&t3e(H`&_bU*0PrmnHo~| zGCX+si|xeq*W4QW8H>_t?4E`@^u1$ikm2=UIB}tYrGbZNMtrNz(kaWiU0t34Lsv-& zXc3V3G~sly=I{QF6HBk16Bc}#X|`gm-A&fx@6AfK#xh5W*NEH)hVU7&p!wSaUR-FO zkj*hYIk)_BnTNR9<4bem()GMoFMqpK?WprRzdwR!>%Lh#tc%|5@oKSj|3kC)u1o%w zD6YMw^6HkDQAMxcmaxb3-rlNjEa@x{tzgak?c}|HeW&DON1617p1+&;_xYBqPnvt_ zJ5JmvhuRqTgLSY&Zob6J>H`Bnl*Es*V~7SzdDu6e_gP% z_+?mE6#s9g+t1Q+T`l~#cbt&*`cQA3()N3|V(^~(^Ya8J#%DQnb);l~i8f#$w7+Io Yf8X~0#IoWXV3K9 + + + + + + +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..d10e8d834 --- /dev/null +++ b/classdftfe_1_1exc_manager.html @@ -0,0 +1,441 @@ + + + + + + + +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_type * d_funcXPtr
 objects for various exchange-correlations (from libxc package)
 
xc_func_type * d_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..4dd8e2d42 --- /dev/null +++ b/classdftfe_1_1exc_wavefunction_base_class-members.html @@ -0,0 +1,97 @@ + + + + + + + +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..314ee9b6a --- /dev/null +++ b/classdftfe_1_1exc_wavefunction_base_class.html @@ -0,0 +1,315 @@ + + + + + + + +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..a121f86b31f9bfccb0204f79ab9276d08114f1e6 GIT binary patch literal 832 zcmeAS@N?(olHy`uVBq!ia0vp^CxJMCgBeJ+6fWEYq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)i6fQC&-9j&c9Z zI)B}5Mr@$qZ9dbR6O(GHryLhu?VBNgGjHpvP2vqF|9Aw28Kf(%PpdJzz0`i_pe%HcoiD!=%=j-K_rH8o_Oy>j4H zWo}P}*w{;x#IBm&Joj(XEn!h(O;+;RFfB(C&d%yf$;klu)c?=u$o$vZ=s&hAr zIe4{I*7H@nOKs4SLJw=By{B_7-0fd-@vftfS9vPW-*s1udY4pB|2ePZ^YZ$~GiUx^ z)zmWc=5z!xPX!o2O$-lSS1}wAv}$|u(Sr4<#3c0-iW<)+xV&d#$mbGb_^?!gks+Q0 zM#K53#pmu{Q+_^Yzix`sB4!a47ngltBE{p9_sco~!Q9X{t2#Q^);8I+x6jN@*qc@L z@3zzzm8-v)`@XAWJ1H&l6aRWIb@q%2Qw~=&?th_Qw|Dtd_wMW8mY?hsd3<}ZP1dsS zE#G#^$7(!PWYE(88$Nl8=$V-(R!h!5Tb4Ij;k8EYs^WLHYN^UA8Vd?rc z+c`-{YLbu3um67*a&PAKy!yr?YvNY!?aG ziBowj&tE@QncEBg&bzWT?5eBFm*t}HU;u|jiHPSp%lQlHV_z?2IDUM&1Td{Lc)I$z JtaD0e0sx{)g**TN literal 0 HcmV?d00001 diff --git a/classdftfe_1_1exc_wavefunction_none_class-members.html b/classdftfe_1_1exc_wavefunction_none_class-members.html new file mode 100644 index 000000000..604106390 --- /dev/null +++ b/classdftfe_1_1exc_wavefunction_none_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::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..83f4730b7 --- /dev/null +++ b/classdftfe_1_1exc_wavefunction_none_class.html @@ -0,0 +1,231 @@ + + + + + + + +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..f561a04ec5aec163c80c8c35860e6c354bd8ef54 GIT binary patch literal 827 zcmeAS@N?(olHy`uVBq!ia0vp^CxJMCgBeJ+6fWEYq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB) zTDvJ$Q1Ie{& z(3<^LEBsZmozkB9@qfLSI(x>1Cx>?&od51mPV-G+(e-crC(E8Zc2(KlYgwt&?gTr@a4PRjFhxR{NB7EPeCb+bSolyk@_eQ{C@*v%}Nf$bZpl728?YEuAJNfM!{gsyfscN3u z=j)v=edU-u+j83Z?=I<~o8%bYoZjb%HK^OD&T*_roJw=Mss zoLQo4IX7T!_rm)t8 + + + + + + +DFT-FE: Member List + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::forceClass< FEOrder, FEOrderElectro > Member List
+
+
+ +

This is the complete list of members for dftfe::forceClass< FEOrder, FEOrderElectro >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accumulateForceContributionGammaAtomsFloating(const std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, std::vector< double > &accumForcesVector)dftfe::forceClass< FEOrder, FEOrderElectro >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 >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 >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 >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 >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 >private
computeAtomsForces(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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, const std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)dftfe::forceClass< FEOrder, FEOrderElectro >
computeAtomsForcesGaussianGenerator(bool allowGaussianOverlapOnAtoms=false)dftfe::forceClass< FEOrder, FEOrderElectro >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 std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)dftfe::forceClass< FEOrder, FEOrderElectro >private
computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)dftfe::forceClass< FEOrder, FEOrderElectro >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 >private
computeConfigurationalForceEselfNoSurfaceLinFE()dftfe::forceClass< FEOrder, FEOrderElectro >private
computeConfigurationalForcePhiExtLinFE()dftfe::forceClass< FEOrder, FEOrderElectro >private
computeConfigurationalForceTotalLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)dftfe::forceClass< FEOrder, FEOrderElectro >private
computeElementalNonLocalPseudoOVDataForce()dftfe::forceClass< FEOrder, FEOrderElectro >private
computeFloatingAtomsForces()dftfe::forceClass< FEOrder, FEOrderElectro >private
computeStress(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 >
computeStressEEshelbyEElectroPhiTot(const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 >private
computeStressEEshelbyEPSPEnlEk(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 >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 >private
computeStressSpinPolarizedEEshelbyEPSPEnlEk(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::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 >private
configForceLinFEFinalize()dftfe::forceClass< FEOrder, FEOrderElectro >private
configForceLinFEInit(const dealii::MatrixFree< 3, double > &matrixFreeData, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro)dftfe::forceClass< FEOrder, FEOrderElectro >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 >private
d_allowGaussianOverlapOnAtomsdftfe::forceClass< FEOrder, FEOrderElectro >private
d_AtomIdBinIdLocalDofHandlerdftfe::forceClass< FEOrder, FEOrderElectro >private
d_AtomIdBinIdLocalDofHandlerElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_atomsForceDofsdftfe::forceClass< FEOrder, FEOrderElectro >private
d_atomsForceDofsElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellFacesVselfBallSurfacesDofHandlerdftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellFacesVselfBallSurfacesDofHandlerElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellFacesVselfBallSurfacesDofHandlerForcedftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellFacesVselfBallSurfacesDofHandlerForceElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellsVselfBallsClosestAtomIdDofHandlerdftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellsVselfBallsClosestAtomIdDofHandlerElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellsVselfBallsDofHandlerdftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellsVselfBallsDofHandlerElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellsVselfBallsDofHandlerForcedftfe::forceClass< FEOrder, FEOrderElectro >private
d_cellsVselfBallsDofHandlerForceElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_configForceVectorLinFEdftfe::forceClass< FEOrder, FEOrderElectro >private
d_configForceVectorLinFEElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_constraintsNoneForcedftfe::forceClass< FEOrder, FEOrderElectro >private
d_constraintsNoneForceElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_dftParamsdftfe::forceClass< FEOrder, FEOrderElectro >private
d_dofHandlerForcedftfe::forceClass< FEOrder, FEOrderElectro >private
d_dofHandlerForceElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_forceAtomsFloatingdftfe::forceClass< FEOrder, FEOrderElectro >private
d_forceDofHandlerIndexdftfe::forceClass< FEOrder, FEOrderElectro >private
d_forceDofHandlerIndexElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_gaussianWeightsVecAtomsdftfe::forceClass< FEOrder, FEOrderElectro >private
d_globalAtomsForcesdftfe::forceClass< FEOrder, FEOrderElectro >private
d_locally_owned_dofsForcedftfe::forceClass< FEOrder, FEOrderElectro >private
d_locally_owned_dofsForceElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_locally_relevant_dofsForcedftfe::forceClass< FEOrder, FEOrderElectro >private
d_locally_relevant_dofsForceElectrodftfe::forceClass< FEOrder, FEOrderElectro >private
d_mpiCommParentdftfe::forceClass< FEOrder, FEOrderElectro >private
d_stressdftfe::forceClass< FEOrder, FEOrderElectro >private
d_stressKPointsdftfe::forceClass< FEOrder, FEOrderElectro >private
dftClass< FEOrder, FEOrderElectro >dftfe::forceClass< FEOrder, FEOrderElectro >friend
dftPtrdftfe::forceClass< FEOrder, FEOrderElectro >private
distributeForceContributionFnlGammaAtoms(const std::map< unsigned int, std::vector< double > > &forceContributionFnlGammaAtoms)dftfe::forceClass< FEOrder, FEOrderElectro >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 >private
FEForcedftfe::forceClass< FEOrder, FEOrderElectro >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 >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 >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 >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 >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 >private
forceClass(dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)dftfe::forceClass< FEOrder, FEOrderElectro >
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 >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 >private
FShadowLocalGammaAtomsElementalContributionElectronic(std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, 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 > > &derVxcWithRhoTimesRhoDiffQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoAtomsQuadsSeparate, const dealii::AlignedVector< dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > > &der2ExcWithGradRhoOutQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derVxcWithGradRhoOutQuads, const dealii::AlignedVector< dealii::VectorizedArray< double > > &shadowKSRhoMinMinusGradRhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &shadowKSGradRhoMinMinusGradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoAtomsQuadsSeparate, 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 isAtomicRhoSplitting=false, const bool isXCGGA=false, const bool isNLCC=false)dftfe::forceClass< FEOrder, FEOrderElectro >private
FShadowLocalGammaAtomsElementalContributionElectrostatic(std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, 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 > > > &gradPhiRhoMinusApproxRhoElectroQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &rhoAtomsQuadsSeparate)dftfe::forceClass< FEOrder, FEOrderElectro >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 >private
getAtomsForces()dftfe::forceClass< FEOrder, FEOrderElectro >
getStress()dftfe::forceClass< FEOrder, FEOrderElectro >
initMoved(std::vector< const dealii::DoFHandler< 3 > * > &dofHandlerVectorMatrixFree, std::vector< const dealii::AffineConstraints< double > * > &constraintsVectorMatrixFree, const bool isElectrostaticsMesh)dftfe::forceClass< FEOrder, FEOrderElectro >
initPseudoData()dftfe::forceClass< FEOrder, FEOrderElectro >
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 >
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 >private
mpi_communicatordftfe::forceClass< FEOrder, FEOrderElectro >private
n_mpi_processesdftfe::forceClass< FEOrder, FEOrderElectro >private
pcoutdftfe::forceClass< FEOrder, FEOrderElectro >private
printAtomsForces()dftfe::forceClass< FEOrder, FEOrderElectro >
printStress()dftfe::forceClass< FEOrder, FEOrderElectro >
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 >private
this_mpi_processdftfe::forceClass< FEOrder, FEOrderElectro >private
+ + + + diff --git a/classdftfe_1_1force_class.html b/classdftfe_1_1force_class.html new file mode 100644 index 000000000..a3cf68d82 --- /dev/null +++ b/classdftfe_1_1force_class.html @@ -0,0 +1,4685 @@ + + + + + + + +DFT-FE: dftfe::forceClass< FEOrder, FEOrderElectro > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::forceClass< FEOrder, FEOrderElectro > Class Template Reference
+
+
+ +

computes configurational forces in KSDFT + More...

+ +

#include <force.h>

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

+Public Member Functions

 forceClass (dftClass< FEOrder, FEOrderElectro > *_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, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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, const std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)
 computes the configurational force on all atoms corresponding to a Gaussian generator, which represents perturbation of the underlying space.
 
std::vector< double > getAtomsForces ()
 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, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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, double > getStress ()
 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, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)
 
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 std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)
 
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, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)
 
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 FShadowLocalGammaAtomsElementalContributionElectronic (std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, 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 > > &derVxcWithRhoTimesRhoDiffQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoAtomsQuadsSeparate, const dealii::AlignedVector< dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > > &der2ExcWithGradRhoOutQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derVxcWithGradRhoOutQuads, const dealii::AlignedVector< dealii::VectorizedArray< double > > &shadowKSRhoMinMinusGradRhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &shadowKSGradRhoMinMinusGradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoAtomsQuadsSeparate, 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 isAtomicRhoSplitting=false, const bool isXCGGA=false, const bool isNLCC=false)
 
void FShadowLocalGammaAtomsElementalContributionElectrostatic (std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, 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 > > > &gradPhiRhoMinusApproxRhoElectroQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &rhoAtomsQuadsSeparate)
 
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, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 computeStressSpinPolarizedEEshelbyEPSPEnlEk (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::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 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< double > d_configForceVectorLinFE
 
distributedCPUVec< double > d_configForceVectorLinFEElectro
 
std::vector< double > d_forceAtomsFloating
 
std::vector< double > d_globalAtomsForces
 Storage for configurational force on all global atoms.
 
dealii::Tensor< 2, 3, double > d_stress
 Storage for configurational stress tensor.
 
dealii::Tensor< 2, 3, double > d_stressKPoints
 
const bool d_allowGaussianOverlapOnAtoms = false
 
dftClass< FEOrder, FEOrderElectro > * 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< double > d_constraintsNoneForce
 
dealii::AffineConstraints< double > d_constraintsNoneForceElectro
 
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_atomsForceDofs
 
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_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 int > d_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 int > d_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
 map from cell id to set of non local atom ids (local numbering)
 
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 >
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro>
+class dftfe::forceClass< FEOrder, FEOrderElectro >

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::forceClass< FEOrder, FEOrderElectro >::forceClass (dftClass< FEOrder, FEOrderElectro > * _dftPtr,
const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const dftParametersdftParams 
)
+
+ +

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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::accumulateForceContributionGammaAtomsFloating (const std::map< unsigned int, std::vector< double > > & forceContributionLocalGammaAtoms,
std::vector< double > & accumForcesVector 
)
+
+private
+
+ +
+
+ +

◆ addENonlinearCoreCorrectionStressContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeAtomsForces (const dealii::MatrixFree< 3, double > & matrixFreeData,
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
const dispersionCorrectiondispersionCorr,
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::map< dealii::CellId, std::vector< double > > & rhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectroLpsp,
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,
const std::map< dealii::CellId, std::vector< double > > & shadowKSRhoMinValues,
const std::map< dealii::CellId, std::vector< double > > & shadowKSGradRhoMinValues,
const distributedCPUVec< double > & phiRhoMinusApproxRho,
const bool shadowPotentialForce = false 
)
+
+ +

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>
+ + + + + +
+ + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeAtomsForcesGaussianGenerator (bool allowGaussianOverlapOnAtoms = false)
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceEEshelbyEElectroPhiTot()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeConfigurationalForceEEshelbyEElectroPhiTot (const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectroLpsp,
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 std::map< dealii::CellId, std::vector< double > > & shadowKSRhoMinValues,
const distributedCPUVec< double > & phiRhoMinusApproxRho,
const bool shadowPotentialForce = false 
)
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE (const dealii::MatrixFree< 3, double > & matrixFreeData,
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
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::map< dealii::CellId, std::vector< double > > & rhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectroLpsp,
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 std::map< dealii::CellId, std::vector< double > > & shadowKSRhoMinValues,
const std::map< dealii::CellId, std::vector< double > > & shadowKSGradRhoMinValues,
const distributedCPUVec< double > & phiRhoMinusApproxRho,
const bool shadowPotentialForce = false 
)
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceEselfLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeConfigurationalForceEselfNoSurfaceLinFE ()
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForcePhiExtLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeConfigurationalForcePhiExtLinFE ()
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceTotalLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeConfigurationalForceTotalLinFE (const dealii::MatrixFree< 3, double > & matrixFreeData,
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
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::map< dealii::CellId, std::vector< double > > & rhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectroLpsp,
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 std::map< dealii::CellId, std::vector< double > > & shadowKSRhoMinValues,
const std::map< dealii::CellId, std::vector< double > > & shadowKSGradRhoMinValues,
const distributedCPUVec< double > & phiRhoMinusApproxRho,
const bool shadowPotentialForce = false 
)
+
+private
+
+ +
+
+ +

◆ computeElementalNonLocalPseudoOVDataForce()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeElementalNonLocalPseudoOVDataForce ()
+
+private
+
+ +
+
+ +

◆ computeFloatingAtomsForces()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeFloatingAtomsForces ()
+
+private
+
+ +
+
+ +

◆ computeStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeStress (const dealii::MatrixFree< 3, double > & matrixFreeData,
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
const dispersionCorrectiondispersionCorr,
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::map< dealii::CellId, std::vector< double > > & rhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectroLpsp,
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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeStressEEshelbyEElectroPhiTot (const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectroLpsp,
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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeStressEEshelbyEPSPEnlEk (const dealii::MatrixFree< 3, double > & matrixFreeData,
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > & kohnShamDFTEigenOperator,
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::map< dealii::CellId, std::vector< double > > & rhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectroLpsp,
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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeStressEself (const dealii::DoFHandler< 3 > & dofHandlerElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int smearedChargeQuadratureId 
)
+
+private
+
+ +
+
+ +

◆ computeStressSpinPolarizedEEshelbyEPSPEnlEk()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::computeStressSpinPolarizedEEshelbyEPSPEnlEk (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::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectro,
const std::map< dealii::CellId, std::vector< double > > & gradRhoOutValuesElectroLpsp,
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
+
+ +
+
+ +

◆ configForceLinFEFinalize()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::configForceLinFEFinalize ()
+
+private
+
+ +
+
+ +

◆ configForceLinFEInit()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::configForceLinFEInit (const dealii::MatrixFree< 3, double > & matrixFreeData,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro 
)
+
+private
+
+ +
+
+ +

◆ createBinObjectsForce()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::distributeForceContributionFnlGammaAtoms (const std::map< unsigned int, std::vector< double > > & forceContributionFnlGammaAtoms)
+
+private
+
+ +
+
+ +

◆ distributeForceContributionFPSPLocalGammaAtoms()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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
+
+ +
+
+ +

◆ FShadowLocalGammaAtomsElementalContributionElectronic()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::FShadowLocalGammaAtomsElementalContributionElectronic (std::map< unsigned int, std::vector< double > > & forceContributionLocalGammaAtoms,
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 > > & derVxcWithRhoTimesRhoDiffQuads,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoAtomsQuadsSeparate,
const dealii::AlignedVector< dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > > & der2ExcWithGradRhoOutQuads,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & derVxcWithGradRhoOutQuads,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & shadowKSRhoMinMinusGradRhoQuads,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & shadowKSGradRhoMinMinusGradRhoQuads,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoAtomsQuadsSeparate,
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 isAtomicRhoSplitting = false,
const bool isXCGGA = false,
const bool isNLCC = false 
)
+
+private
+
+ +
+
+ +

◆ FShadowLocalGammaAtomsElementalContributionElectrostatic()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::FShadowLocalGammaAtomsElementalContributionElectrostatic (std::map< unsigned int, std::vector< double > > & forceContributionLocalGammaAtoms,
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 > > > & gradPhiRhoMinusApproxRhoElectroQuads,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & rhoAtomsQuadsSeparate 
)
+
+private
+
+ +
+
+ +

◆ FVselfSmearedChargesGammaAtomsElementalContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
std::vector< double > dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
dealii::Tensor< 2, 3, double > dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::printStress ()
+
+ +

prints the currently stored configurational stress tensor.

+
Returns
void.
+ +
+
+ +

◆ stressEnlElementalContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro >::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 >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
friend class dftClass< FEOrder, FEOrderElectro >
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ d_allowGaussianOverlapOnAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const bool dftfe::forceClass< FEOrder, FEOrderElectro >::d_allowGaussianOverlapOnAtoms = false
+
+private
+
+ +
+
+ +

◆ d_AtomIdBinIdLocalDofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, unsigned int> dftfe::forceClass< FEOrder, FEOrderElectro >::d_atomsForceDofs
+
+private
+
+

Internal data: map < <atomId,force component>, globaldof in d_dofHandlerForce>

+ +
+
+ +

◆ d_atomsForceDofsElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, unsigned int> dftfe::forceClass< FEOrder, FEOrderElectro >::d_atomsForceDofsElectro
+
+private
+
+

Internal data: map < <atomId,force component>, globaldof in d_dofHandlerForceElectro>

+ +
+
+ +

◆ d_cellFacesVselfBallSurfacesDofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<unsigned int> > > dftfe::forceClass< FEOrder, FEOrderElectro >::d_cellFacesVselfBallSurfacesDofHandler
+
+private
+
+ +
+
+ +

◆ d_cellFacesVselfBallSurfacesDofHandlerElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<unsigned int> > > dftfe::forceClass< FEOrder, FEOrderElectro >::d_cellFacesVselfBallSurfacesDofHandlerElectro
+
+private
+
+ +
+
+ +

◆ d_cellFacesVselfBallSurfacesDofHandlerForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<unsigned int> > > dftfe::forceClass< FEOrder, FEOrderElectro >::d_cellFacesVselfBallSurfacesDofHandlerForce
+
+private
+
+ +
+
+ +

◆ d_cellFacesVselfBallSurfacesDofHandlerForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<unsigned int> > > dftfe::forceClass< FEOrder, FEOrderElectro >::d_cellFacesVselfBallSurfacesDofHandlerForceElectro
+
+private
+
+ +
+
+ +

◆ d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, dealii::DoFHandler<3>::active_cell_iterator> dftfe::forceClass< FEOrder, FEOrderElectro >::d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro
+
+private
+
+ +
+
+ +

◆ d_cellsVselfBallsClosestAtomIdDofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::CellId, unsigned int> > dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::CellId, unsigned int> > dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::forceClass< FEOrder, FEOrderElectro >::d_constraintsNoneForce
+
+private
+
+

Constraint matrix for hanging node and periodic constaints on d_dofHandlerForce.

+ +
+
+ +

◆ d_constraintsNoneForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::forceClass< FEOrder, FEOrderElectro >::d_constraintsNoneForceElectro
+
+private
+
+

Constraint matrix for hanging node and periodic constaints on d_dofHandlerForceElectro.

+ +
+
+ +

◆ d_dftParams

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dftParameters& dftfe::forceClass< FEOrder, FEOrderElectro >::d_dftParams
+
+private
+
+ +
+
+ +

◆ d_dofHandlerForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::forceClass< FEOrder, FEOrderElectro >::d_dofHandlerForce
+
+private
+
+ +
+
+ +

◆ d_dofHandlerForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::forceClass< FEOrder, FEOrderElectro >::d_dofHandlerForceElectro
+
+private
+
+ +
+
+ +

◆ d_forceAtomsFloating

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::forceClass< FEOrder, FEOrderElectro >::d_forceAtomsFloating
+
+private
+
+ +
+
+ +

◆ d_forceDofHandlerIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
unsigned int dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::forceClass< FEOrder, FEOrderElectro >::d_gaussianWeightsVecAtoms
+
+private
+
+ +
+
+ +

◆ d_globalAtomsForces

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::forceClass< FEOrder, FEOrderElectro >::d_mpiCommParent
+
+private
+
+ +

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

+

domain decomposition mpi_communicator

+ +
+
+ +

◆ d_stress

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::Tensor<2, 3, double> dftfe::forceClass< FEOrder, FEOrderElectro >::d_stress
+
+private
+
+ +

Storage for configurational stress tensor.

+ +
+
+ +

◆ d_stressKPoints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::Tensor<2, 3, double> dftfe::forceClass< FEOrder, FEOrderElectro >::d_stressKPoints
+
+private
+
+ +
+
+ +

◆ dftPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftClass<FEOrder, FEOrderElectro>* dftfe::forceClass< FEOrder, FEOrderElectro >::dftPtr
+
+private
+
+ +

pointer to dft class

+ +
+
+ +

◆ FEForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::FESystem<3> dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::forceClass< FEOrder, FEOrderElectro >::mpi_communicator
+
+private
+
+ +

domain decomposition mpi_communicator

+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::forceClass< FEOrder, FEOrderElectro >::n_mpi_processes
+
+private
+
+ +

number of mpi processes in the current pool

+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::forceClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
const unsigned int dftfe::forceClass< FEOrder, FEOrderElectro >::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..573218ae5 --- /dev/null +++ b/classdftfe_1_1geo_opt_cell-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::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..67c9b130b --- /dev/null +++ b/classdftfe_1_1geo_opt_cell.html @@ -0,0 +1,1008 @@ + + + + + + + +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_Comm & getMPICommunicator ()
 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 int > getUnknownCountFlag () const
 Not implemented.
 
- Public Member Functions inherited from dftfe::nonlinearSolverProblem
 nonlinearSolverProblem ()
 Constructor.
 
virtual ~nonlinearSolverProblem ()=0
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< unsigned int > d_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, double > d_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 (dftBasedftPtr,
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..e64ac82be511bb44847d3e409cac3eaca70f2d38 GIT binary patch literal 698 zcmV;r0!96aP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|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=Ra7oqmCzQUEdT%j literal 0 HcmV?d00001 diff --git a/classdftfe_1_1geo_opt_ion-members.html b/classdftfe_1_1geo_opt_ion-members.html new file mode 100644 index 000000000..d33e138e6 --- /dev/null +++ b/classdftfe_1_1geo_opt_ion-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::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..ca4c32169 --- /dev/null +++ b/classdftfe_1_1geo_opt_ion.html @@ -0,0 +1,1008 @@ + + + + + + + +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_Comm & getMPICommunicator ()
 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 int > getUnknownCountFlag () const
 not implemented
 
- Public Member Functions inherited from dftfe::nonlinearSolverProblem
 nonlinearSolverProblem ()
 Constructor.
 
virtual ~nonlinearSolverProblem ()=0
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< unsigned int > d_relaxationFlags
 
std::vector< double > d_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 (dftBasedftPtr,
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..59645d54c0279ff4fbb6319698c2c7040c9a8d2a GIT binary patch literal 694 zcmV;n0!jUeP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|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(?yg#{d8T 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..27646c093 --- /dev/null +++ b/classdftfe_1_1geometry_optimization_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::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..0b1a735e3 --- /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)
 geometryOptimizationClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsClass
 
void init (const std::string parameter_file)
 
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 
)
+
+ +

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)
+
+ +
+
+ +

◆ 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..c65289ec4 --- /dev/null +++ b/classdftfe_1_1kerker_solver_problem-members.html @@ -0,0 +1,118 @@ + + + + + + + +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_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_quadGradResidualValuesPtrdftfe::kerkerSolverProblem< FEOrderElectro >private
d_xPtrdftfe::kerkerSolverProblem< FEOrderElectro >private
dealiiLinearSolverProblem()dftfe::dealiiLinearSolverProblem
distributeX()dftfe::kerkerSolverProblem< FEOrderElectro >virtual
getX()dftfe::kerkerSolverProblem< FEOrderElectro >virtual
init(dealii::MatrixFree< 3, double > &matrixFreeData, 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 std::map< dealii::CellId, std::vector< double > > &gradResidualValues)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..7eea6fea8 --- /dev/null +++ b/classdftfe_1_1kerker_solver_problem.html @@ -0,0 +1,1072 @@ + + + + + + + +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 (dealii::MatrixFree< 3, double > &matrixFreeData, 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 std::map< dealii::CellId, std::vector< double > > &gradResidualValues)
 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< double > d_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 std::map< dealii::CellId, std::vector< double > > * d_quadGradResidualValuesPtr
 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
 
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 (dealii::MatrixFree< 3, double > & matrixFreeData,
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 std::map< dealii::CellId, std::vector< double > > & gradResidualValues 
)
+
+ +

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_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_quadGradResidualValuesPtr

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const std::map<dealii::CellId, std::vector<double> >* dftfe::kerkerSolverProblem< FEOrderElectro >::d_quadGradResidualValuesPtr
+
+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..f014ede51a5e5172509d4b542ab19171e054eb0c GIT binary patch literal 1029 zcmeAS@N?(olHy`uVBq!ia0y~yU=#te12~w0dtRv;xE;1lBd|Nnm=^TnI5rTvGN zTNr2-NK8NT;=q9eK=I&7msbGgI7@>3f*F8(FfeDDeT9L6d4i{lV@L(#+qtj%9$WD= zXR=9r_&fi{mYtD{=9*}*Rf}<#`fOQzV%lHNuzyLB)0S@0@s^12*d$`l+N$D6A4Q$$Z3OZO}=O4cBlKXq^>8DM{ z53cELDgS)+_Va#6#gp|>$U%b6*4H?_NoQ$lgo}%TM@xkvK}& za=ast>GRzk`Lbp5^_%|xSG2v|y|BJ|Pho3u+Y%EyS0fGW3GSz3B6j^`I+gSJ{I*xG z`@CaQK2?L__Tapk9hDXpZ#AR-t4%X@=KT0z%gya;^6fW2-}&pVAoHo(wX1nuKgVTj z?ptEwr*V7L#-Ly4lRFDe%zV0|I5R0t_>%PER)h9L`=lKw$^*XL+#GS3*JAU{xxsUI zQp2z?i;9%*T014iEcx+2hEyT#%M-5n zm`^o&uX)%kUHl1`*PGSm0d4by_=;`@A7fa#yeB~K-Dh9_o7T7I&AqpBFEiiY1<}`} ze1(4>ytJiY$?EOrpM1S+F7@ckHM>2vMc+?GTNju8|2A<+kmJN9E4jK + + + + + + +DFT-FE: Member List + + + + + + + + + + +
+
dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > Member List
+
+
+ +

This is the complete list of members for dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assembler_lockdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >mutableprivate
axpby(double scalarA, double scalarB, const unsigned int numberWaveFunctions, const std::vector< dataTypes::number > &cellXWaveFunctionMatrix, std::vector< dataTypes::number > &cellYWaveFunctionMatrix)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
computeHamiltonianMatrix(const unsigned int kPointIndex, const unsigned int spinIndex, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeHamiltonianTimesXInternal(const distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix, const double scalar=1.0, const double scalarA=1.0, const double scalarB=1.0, bool scaleFlag=false)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
computeKineticMatrix()dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeLocalHamiltonianTimesX(const distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, const double scalar=1.0)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
computeLocalHamiltonianTimesX(const distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix, const double scalar=1.0)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
computeMassVector(const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
computeNonLocalHamiltonianTimesX(const distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, const double scalar=1.0) constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
computeNonLocalProjectorKetTimesXTimesV(distributedCPUMultiVec< dataTypes::number > &src, distributedCPUMultiVec< dataTypes::number > &projectorKetTimesVectorFlattened, const unsigned int numberWaveFunctions)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >privatevirtual
computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
computing_timerdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_blockiNodeIndexdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_blockiNodeIndexNoSymdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_blockjNodeIndexdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_blockjNodeIndexNoSymdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixExternalPotCorrdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_cellMassMatrixdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_cellShapeFunctionGradientIntegraldftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_constraintMatrixDatadftfe::operatorDFTClassprotected
d_densityGaussQuadShapeFunctionGradientValuesdftfe::operatorDFTClassprotected
d_densityGaussQuadShapeFunctionValuesdftfe::operatorDFTClassprotected
d_densityGlQuadShapeFunctionValuesdftfe::operatorDFTClassprotected
d_elementHamiltonianMatrixImagdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_externalPotCorrQuadratureIddftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_flattenedArrayCellLocalProcIndexIdMapdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_flattenedArrayMacroCellLocalProcIndexIdMapdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_FullflattenedArrayCellLocalProcIndexIdMapdftfe::operatorDFTClassprotected
d_FullflattenedArrayMacroCellLocalProcIndexIdMapdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_globalArrayClassificationMapdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_inverseJacobiansNLPdftfe::operatorDFTClassprotected
d_invJacderExcWithSigmaTimesGradRhoJxWdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_invJacKPointTimesJxWdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_invSqrtMassVectordftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_isStiffnessMatrixExternalPotCorrComputeddftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_kPointIndexdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_macroCellIdToNormalCellIdMapdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_matrix_free_datadftfe::operatorDFTClassprotected
d_mpi_communicatordftfe::operatorDFTClassprotected
d_mpiCommParentdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_NiNjIntegraldftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_nodesPerCellClassificationMapdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_normalCellIdToMacroCellIdMapdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_numberCellsLocallyOwneddftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_numberNodesPerElementdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_shapeFunctionDatadftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_shapeFunctionGradientValueNLPTransposeddftfe::operatorDFTClassprotected
d_shapeFunctionGradientValueRefXdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_shapeFunctionGradientValueRefYdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_shapeFunctionGradientValueRefZdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_shapeFunctionLpspQuadDatadftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_shapeFunctionValueDensityTransposeddftfe::operatorDFTClassprotected
d_shapeFunctionValueNLPTransposeddftfe::operatorDFTClassprotected
d_spinIndexdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_sqrtMassVectordftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_vEffExternalPotCorrdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_vEffExternalPotCorrJxWdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
d_vEffJxWdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
derExcWithSigmaTimesGradRhodftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
dftClass< FEOrder, FEOrderElectro >dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >friend
dftPtrdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
fillGlobalArrayFromCellWaveFunctionMatrix(const unsigned int wavefunBlockSize, const std::vector< dataTypes::number > &cellWaveFunctionMatrix, distributedCPUMultiVec< dataTypes::number > &X)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getFlattenedArrayCellLocalProcIndexIdMap() constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getInteriorSurfaceNodesMapFromGlobalArray(std::vector< unsigned int > &globalArrayClassificationMap)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getInverseJacobiansNLP() constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getInvSqrtMassVector()dftfe::operatorDFTClass
getMatrixFreeData() constdftfe::operatorDFTClass
getMPICommunicator() constdftfe::operatorDFTClass
getOverloadedConstraintMatrix() constdftfe::operatorDFTClass
getParallelProjectorKetTimesBlockVector()dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getShapeFunctionGradientValuesNLPTransposed() constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getShapeFunctionGradValuesDensityGaussQuad() constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getShapeFunctionValuesDensityGaussLobattoQuad() constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getShapeFunctionValuesDensityGaussQuad() constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getShapeFunctionValuesDensityTransposed() constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
getShapeFunctionValuesNLPTransposed() constdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
HX(distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
HX(distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberComponents, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
init()dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
initCellWaveFunctionMatrix(const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
initWithScalar(const unsigned int numberWaveFunctions, double scalarValue, std::vector< dataTypes::number > &cellWaveFunctionMatrix)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
kohnShamDFTOperatorClass(dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
mpi_communicatordftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
n_mpi_processesdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
operatorDFTClass()dftfe::operatorDFTClassprotected
operatorDFTClass(const MPI_Comm &mpi_comm_replica, const dealii::MatrixFree< 3, double > &matrix_free_data, dftUtils::constraintMatrixInfo &constraintMatrixNone)dftfe::operatorDFTClassprotected
pcoutdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
preComputeShapeFunctionGradientIntegrals(const unsigned int lpspQuadratureId)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
reinit(const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
reinit(const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
reinit(const unsigned int wavefunBlockSize)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
resetExtPotHamFlag()dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
setInvSqrtMassVector(distributedCPUVec< double > &X)dftfe::operatorDFTClass
this_mpi_processdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
vEffdftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >private
XtHX(const dataTypes::number *src, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
XtHXMixedPrec(const dataTypes::number *X, const unsigned int N, const unsigned int Ncore, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >virtual
~operatorDFTClass()=0dftfe::operatorDFTClasspure virtual
+ + + + diff --git a/classdftfe_1_1kohn_sham_d_f_t_operator_class.html b/classdftfe_1_1kohn_sham_d_f_t_operator_class.html new file mode 100644 index 000000000..318947dc9 --- /dev/null +++ b/classdftfe_1_1kohn_sham_d_f_t_operator_class.html @@ -0,0 +1,3655 @@ + + + + + + + +DFT-FE: dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > Class Template Reference
+
+
+ +

Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors. + More...

+ +

#include <kohnShamDFTOperator.h>

+
+Inheritance diagram for dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >:
+
+
+ + +dftfe::operatorDFTClass + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 kohnShamDFTOperatorClass (dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
 
void HX (distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works for both real and complex data types.
 
void HX (distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberComponents, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)
 Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works for real and complex data types (Optimized matrix times multi-vectors using different datastructures for interior nodes and exterior nodes to reduce memory access costs during global to cell level vectors and vice versa)
 
void XtHX (const dataTypes::number *src, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)
 Compute projection of the operator into orthogonal basis.
 
void XtHX (const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 Compute projection of the operator into a subspace spanned by a given orthogonal basis HConj=X^{T}*HConj*XConj.
 
void XtHXMixedPrec (const dataTypes::number *X, const unsigned int N, const unsigned int Ncore, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 Compute projection of the operator into a subspace spanned by a given orthogonal basis HConj=X^{T}*HConj*XConj.
 
void computeVEff (const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential involving local-density exchange-correlation functionals.
 
void computeVEffSpinPolarized (const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential involving local spin density exchange-correlation functionals.
 
void computeVEff (const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential involving gradient density type exchange-correlation functionals.
 
void computeVEffSpinPolarized (const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential for gradient-spin density type exchange-correlation functionals.
 
void computeVEffPrime (const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)
 Computes directional derivative of effective potential for local density type exchange-correlation functionals.
 
void computeVEffPrimeSpinPolarized (const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)
 Computes directional derivative of effective potential for local spin-density type exchange-correlation functionals.
 
void computeVEffPrime (const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)
 Computes directional derivative of effective potential for gradient density type exchange-correlation functionals.
 
void computeVEffPrimeSpinPolarized (const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)
 Computes directional derivative of effective potential for gradient spin-density type exchange-correlation functionals.
 
void reinitkPointSpinIndex (const unsigned int kPointIndex, const unsigned int spinIndex)
 sets the data member to appropriate kPoint and spin Index
 
void resetExtPotHamFlag ()
 
void init ()
 initialize operatorClass
 
void reinit (const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)
 initializes parallel layouts and index maps required for HX, XtHX and creates a flattened array format for X
 
void reinit (const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)
 
void reinit (const unsigned int wavefunBlockSize)
 
void initCellWaveFunctionMatrix (const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix)
 
void fillGlobalArrayFromCellWaveFunctionMatrix (const unsigned int wavefunBlockSize, const std::vector< dataTypes::number > &cellWaveFunctionMatrix, distributedCPUMultiVec< dataTypes::number > &X)
 
void initWithScalar (const unsigned int numberWaveFunctions, double scalarValue, std::vector< dataTypes::number > &cellWaveFunctionMatrix)
 
void axpby (double scalarA, double scalarB, const unsigned int numberWaveFunctions, const std::vector< dataTypes::number > &cellXWaveFunctionMatrix, std::vector< dataTypes::number > &cellYWaveFunctionMatrix)
 
void getInteriorSurfaceNodesMapFromGlobalArray (std::vector< unsigned int > &globalArrayClassificationMap)
 
const std::vector< dealii::types::global_dof_index > & getFlattenedArrayCellLocalProcIndexIdMap () const
 Get index map of flattened array to cell based numbering.
 
distributedCPUMultiVec< dataTypes::number > & getParallelProjectorKetTimesBlockVector ()
 
const std::vector< double > & getShapeFunctionValuesDensityGaussQuad () const
 
const std::vector< double > & getShapeFunctionGradValuesDensityGaussQuad () const
 
const std::vector< double > & getShapeFunctionValuesDensityGaussLobattoQuad () const
 
const std::vector< double > & getShapeFunctionValuesDensityTransposed () const
 
const std::vector< double > & getShapeFunctionValuesNLPTransposed () const
 
const std::vector< double > & getShapeFunctionGradientValuesNLPTransposed () const
 
const std::vector< double > & getInverseJacobiansNLP () const
 
void computeMassVector (const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)
 Computes diagonal mass matrix.
 
void preComputeShapeFunctionGradientIntegrals (const unsigned int lpspQuadratureId)
 precompute shapefunction gradient integral
 
void computeHamiltonianMatrix (const unsigned int kPointIndex, const unsigned int spinIndex, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 compute element Hamiltonian matrix
 
void computeKineticMatrix ()
 
- Public Member Functions inherited from dftfe::operatorDFTClass
virtual ~operatorDFTClass ()=0
 Destructor.
 
void setInvSqrtMassVector (distributedCPUVec< double > &X)
 
distributedCPUVec< double > & getInvSqrtMassVector ()
 
dftUtils::constraintMatrixInfogetOverloadedConstraintMatrix () const
 Get constraint matrix eigen.
 
const dealii::MatrixFree< 3, double > * getMatrixFreeData () const
 Get matrix free data.
 
const MPI_Comm & getMPICommunicator () const
 Get relevant mpi communicator.
 
+ + + + + + + + + + + + + + + + +

+Private Member Functions

void computeVEffExternalPotCorr (const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential for external potential correction to phiTot.
 
void computeLocalHamiltonianTimesX (const distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, const double scalar=1.0)
 implementation of matrix-vector product using cell-level stiffness matrices. works for both real and complex data type
 
void computeLocalHamiltonianTimesX (const distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix, const double scalar=1.0)
 
void computeHamiltonianTimesXInternal (const distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix, const double scalar=1.0, const double scalarA=1.0, const double scalarB=1.0, bool scaleFlag=false)
 
void computeNonLocalHamiltonianTimesX (const distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, const double scalar=1.0) const
 implementation of non-local Hamiltonian matrix-vector product using non-local discretized projectors at cell-level. works for both complex and real data type
 
void computeNonLocalProjectorKetTimesXTimesV (distributedCPUMultiVec< dataTypes::number > &src, distributedCPUMultiVec< dataTypes::number > &projectorKetTimesVectorFlattened, const unsigned int numberWaveFunctions)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< std::vector< std::vector< dataTypes::number > > > d_cellHamiltonianMatrix
 finite-element cell level stiffness matrix with first dimension traversing the cell id(in the order of macro-cell and subcell) and second dimension storing the stiffness matrix of size numberNodesPerElement x numberNodesPerElement in a flattened 1D array of complex data type
 
std::vector< double > d_elementHamiltonianMatrixImag
 
std::vector< std::vector< dataTypes::number > > d_cellMassMatrix
 
std::vector< double > d_cellHamiltonianMatrixExternalPotCorr
 
dftClass< FEOrder, FEOrderElectro > * dftPtr
 pointer to dft class
 
distributedCPUVec< double > d_invSqrtMassVector
 
distributedCPUVec< double > d_sqrtMassVector
 
dealii::Table< 2, dealii::VectorizedArray< double > > vEff
 
dealii::Table< 2, dealii::VectorizedArray< double > > d_vEffExternalPotCorr
 
std::vector< double > d_vEffExternalPotCorrJxW
 
std::vector< double > d_vEffJxW
 
std::vector< double > d_invJacderExcWithSigmaTimesGradRhoJxW
 
std::vector< std::vector< double > > d_invJacKPointTimesJxW
 
dealii::Table< 2, dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > derExcWithSigmaTimesGradRho
 
std::vector< double > d_cellShapeFunctionGradientIntegral
 finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_i \cdot \nabla N_j)) with first dimension traversing the macro cell id and second dimension storing the matrix of size numberNodesPerElement x numberNodesPerElement in a flattened 1D dealii Vectorized array
 
std::vector< unsigned int > d_blockiNodeIndex
 storage for shapefunctions
 
std::vector< unsigned int > d_blockjNodeIndex
 
std::vector< unsigned int > d_blockiNodeIndexNoSym
 
std::vector< unsigned int > d_blockjNodeIndexNoSym
 
std::vector< double > d_shapeFunctionData
 
std::vector< double > d_shapeFunctionLpspQuadData
 
std::vector< double > d_shapeFunctionGradientValueRefX
 
std::vector< double > d_shapeFunctionGradientValueRefY
 
std::vector< double > d_shapeFunctionGradientValueRefZ
 
std::vector< double > d_NiNjIntegral
 storage for shapefunctions
 
const unsigned int d_numberNodesPerElement
 storage for matrix-free cell data
 
const unsigned int d_numberCellsLocallyOwned
 
std::vector< unsigned int > d_nodesPerCellClassificationMap
 
std::vector< unsigned int > d_globalArrayClassificationMap
 
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
 
dealii::TimerOutput computing_timer
 
dealii::Threads::Mutex assembler_lock
 
unsigned int d_kPointIndex
 
unsigned int d_spinIndex
 
std::vector< std::vector< dealii::types::global_dof_index > > d_flattenedArrayMacroCellLocalProcIndexIdMap
 
std::vector< std::vector< dealii::types::global_dof_index > > d_flattenedArrayCellLocalProcIndexIdMap
 
std::vector< dealii::types::global_dof_index > d_FullflattenedArrayMacroCellLocalProcIndexIdMap
 
std::vector< unsigned int > d_normalCellIdToMacroCellIdMap
 
std::vector< unsigned int > d_macroCellIdToNormalCellIdMap
 
bool d_isStiffnessMatrixExternalPotCorrComputed
 
unsigned int d_externalPotCorrQuadratureId
 external potential correction quadrature id
 
+ + + +

+Friends

class dftClass< FEOrder, FEOrderElectro >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from dftfe::operatorDFTClass
 operatorDFTClass ()
 default Constructor.
 
 operatorDFTClass (const MPI_Comm &mpi_comm_replica, const dealii::MatrixFree< 3, double > &matrix_free_data, dftUtils::constraintMatrixInfo &constraintMatrixNone)
 Constructor.
 
- Protected Attributes inherited from dftfe::operatorDFTClass
dftUtils::constraintMatrixInfod_constraintMatrixData
 
const dealii::MatrixFree< 3, double > * d_matrix_free_data
 
distributedCPUVec< double > d_invSqrtMassVector
 
std::vector< dealii::types::global_dof_index > d_FullflattenedArrayCellLocalProcIndexIdMap
 index map
 
std::vector< double > d_densityGaussQuadShapeFunctionValues
 
std::vector< double > d_densityGaussQuadShapeFunctionGradientValues
 
std::vector< double > d_densityGlQuadShapeFunctionValues
 
std::vector< double > d_shapeFunctionValueDensityTransposed
 
std::vector< double > d_shapeFunctionValueNLPTransposed
 
std::vector< double > d_shapeFunctionGradientValueNLPTransposed
 
std::vector< double > d_inverseJacobiansNLP
 
MPI_Comm d_mpi_communicator
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro>
+class dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >

Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors.

+
Author
Phani Motamarri, Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ kohnShamDFTOperatorClass()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::kohnShamDFTOperatorClass (dftClass< FEOrder, FEOrderElectro > * _dftPtr,
const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ axpby()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::axpby (double scalarA,
double scalarB,
const unsigned int numberWaveFunctions,
const std::vector< dataTypes::number > & cellXWaveFunctionMatrix,
std::vector< dataTypes::number > & cellYWaveFunctionMatrix 
)
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ computeHamiltonianMatrix()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeHamiltonianMatrix (const unsigned int kPointIndex,
const unsigned int spinIndex,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+ +

compute element Hamiltonian matrix

+ +
+
+ +

◆ computeHamiltonianTimesXInternal()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeHamiltonianTimesXInternal (const distributedCPUMultiVec< dataTypes::number > & src,
std::vector< dataTypes::number > & cellSrcWaveFunctionMatrix,
const unsigned int numberWaveFunctions,
distributedCPUMultiVec< dataTypes::number > & dst,
std::vector< dataTypes::number > & cellDstWaveFunctionMatrix,
const double scalar = 1.0,
const double scalarA = 1.0,
const double scalarB = 1.0,
bool scaleFlag = false 
)
+
+private
+
+ +
+
+ +

◆ computeKineticMatrix()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeKineticMatrix ()
+
+ +
+
+ +

◆ computeLocalHamiltonianTimesX() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeLocalHamiltonianTimesX (const distributedCPUMultiVec< dataTypes::number > & src,
const unsigned int numberWaveFunctions,
distributedCPUMultiVec< dataTypes::number > & dst,
const double scalar = 1.0 
)
+
+private
+
+ +

implementation of matrix-vector product using cell-level stiffness matrices. works for both real and complex data type

+
Parameters
+ + + + +
srcVector containing current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously.
numberWaveFunctionsNumber of wavefunctions at a given node.
dstVector containing matrix times given multi-vectors product
+
+
+ +
+
+ +

◆ computeLocalHamiltonianTimesX() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeLocalHamiltonianTimesX (const distributedCPUMultiVec< dataTypes::number > & src,
std::vector< dataTypes::number > & cellSrcWaveFunctionMatrix,
const unsigned int numberWaveFunctions,
distributedCPUMultiVec< dataTypes::number > & dst,
std::vector< dataTypes::number > & cellDstWaveFunctionMatrix,
const double scalar = 1.0 
)
+
+private
+
+ +
+
+ +

◆ computeMassVector()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeMassVector (const dealii::DoFHandler< 3 > & dofHandler,
const dealii::AffineConstraints< double > & constraintMatrix,
distributedCPUVec< double > & sqrtMassVec,
distributedCPUVec< double > & invSqrtMassVec 
)
+
+virtual
+
+ +

Computes diagonal mass matrix.

+
Parameters
+ + + + + +
dofHandlerdofHandler associated with the current mesh
constraintMatrixconstraints to be used
sqrtMassVecoutput the value of square root of diagonal mass matrix
invSqrtMassVecoutput the value of inverse square root of diagonal mass matrix
+
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ computeNonLocalHamiltonianTimesX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeNonLocalHamiltonianTimesX (const distributedCPUMultiVec< dataTypes::number > & src,
const unsigned int numberWaveFunctions,
distributedCPUMultiVec< dataTypes::number > & dst,
const double scalar = 1.0 
) const
+
+private
+
+ +

implementation of non-local Hamiltonian matrix-vector product using non-local discretized projectors at cell-level. works for both complex and real data type

+
Parameters
+ + + + +
srcVector containing current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously.
numberWaveFunctionsNumber of wavefunctions at a given node.
dstVector containing matrix times given multi-vectors product
+
+
+ +
+
+ +

◆ computeNonLocalProjectorKetTimesXTimesV()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeNonLocalProjectorKetTimesXTimesV (distributedCPUMultiVec< dataTypes::number > & src,
distributedCPUMultiVec< dataTypes::number > & projectorKetTimesVectorFlattened,
const unsigned int numberWaveFunctions 
)
+
+privatevirtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ computeVEff() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEff (const std::map< dealii::CellId, std::vector< double > > * rhoValues,
const std::map< dealii::CellId, std::vector< double > > & phiValues,
const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+ +

Computes effective potential involving local-density exchange-correlation functionals.

+
Parameters
+ + + + + +
rhoValueselectron-density
phielectrostatic potential arising both from electron-density and nuclear charge
phiExtelectrostatic potential arising from nuclear charges
externalPotCorrValuesquadrature data of sum{Vext} minus sum{Vnu}
+
+
+ +
+
+ +

◆ computeVEff() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEff (const std::map< dealii::CellId, std::vector< double > > * rhoValues,
const std::map< dealii::CellId, std::vector< double > > * gradRhoValues,
const std::map< dealii::CellId, std::vector< double > > & phiValues,
const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+ +

Computes effective potential involving gradient density type exchange-correlation functionals.

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

◆ computeVEffExternalPotCorr()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEffExternalPotCorr (const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+private
+
+ +

Computes effective potential for external potential correction to phiTot.

+
Parameters
+ + +
externalPotCorrValuesquadrature data of sum{Vext} minus sum{Vnu}
+
+
+ +
+
+ +

◆ computeVEffPrime() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEffPrime (const std::map< dealii::CellId, std::vector< double > > & rhoValues,
const std::map< dealii::CellId, std::vector< double > > & rhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & phiPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues 
)
+
+ +

Computes directional derivative of effective potential for gradient density type exchange-correlation functionals.

+ +
+
+ +

◆ computeVEffPrime() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEffPrime (const std::map< dealii::CellId, std::vector< double > > & rhoValues,
const std::map< dealii::CellId, std::vector< double > > & rhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & phiPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues 
)
+
+ +

Computes directional derivative of effective potential for local density type exchange-correlation functionals.

+ +
+
+ +

◆ computeVEffPrimeSpinPolarized() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEffPrimeSpinPolarized (const std::map< dealii::CellId, std::vector< double > > & rhoValues,
const std::map< dealii::CellId, std::vector< double > > & rhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & phiPrimeValues,
const unsigned int spinIndex,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues 
)
+
+ +

Computes directional derivative of effective potential for gradient spin-density type exchange-correlation functionals.

+ +
+
+ +

◆ computeVEffPrimeSpinPolarized() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEffPrimeSpinPolarized (const std::map< dealii::CellId, std::vector< double > > & rhoValues,
const std::map< dealii::CellId, std::vector< double > > & rhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & phiPrimeValues,
const unsigned int spinIndex,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues 
)
+
+ +

Computes directional derivative of effective potential for local spin-density type exchange-correlation functionals.

+ +
+
+ +

◆ computeVEffSpinPolarized() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEffSpinPolarized (const std::map< dealii::CellId, std::vector< double > > * rhoValues,
const std::map< dealii::CellId, std::vector< double > > & phiValues,
unsigned int spinIndex,
const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+ +

Computes effective potential involving local spin density exchange-correlation functionals.

+
Parameters
+ + + + + +
rhoValueselectron-density
phielectrostatic potential arising both from electron-density and nuclear charge
spinIndexflag to toggle spin-up or spin-down
externalPotCorrValuesquadrature data of sum{Vext} minus sum{Vnu}
+
+
+ +
+
+ +

◆ computeVEffSpinPolarized() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computeVEffSpinPolarized (const std::map< dealii::CellId, std::vector< double > > * rhoValues,
const std::map< dealii::CellId, std::vector< double > > * gradRhoValues,
const std::map< dealii::CellId, std::vector< double > > & phiValues,
const unsigned int spinIndex,
const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+ +

Computes effective potential for gradient-spin density type exchange-correlation functionals.

+
Parameters
+ + + + + + +
rhoValueselectron-density
gradRhoValuesgradient of electron-density
phielectrostatic potential arising both from electron-density and nuclear charge
spinIndexflag to toggle spin-up or spin-down
externalPotCorrValuesquadrature data of sum{Vext} minus sum{Vnu}
+
+
+ +
+
+ +

◆ fillGlobalArrayFromCellWaveFunctionMatrix()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::fillGlobalArrayFromCellWaveFunctionMatrix (const unsigned int wavefunBlockSize,
const std::vector< dataTypes::number > & cellWaveFunctionMatrix,
distributedCPUMultiVec< dataTypes::number > & X 
)
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getFlattenedArrayCellLocalProcIndexIdMap()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getFlattenedArrayCellLocalProcIndexIdMap () const
+
+virtual
+
+ +

Get index map of flattened array to cell based numbering.

+
Returns
pointer to constraint matrix eigen
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getInteriorSurfaceNodesMapFromGlobalArray()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getInteriorSurfaceNodesMapFromGlobalArray (std::vector< unsigned int > & globalArrayClassificationMap)
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getInverseJacobiansNLP()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
const std::vector< double > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getInverseJacobiansNLP () const
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getParallelProjectorKetTimesBlockVector()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
distributedCPUMultiVec< dataTypes::number > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getParallelProjectorKetTimesBlockVector ()
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getShapeFunctionGradientValuesNLPTransposed()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
const std::vector< double > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getShapeFunctionGradientValuesNLPTransposed () const
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getShapeFunctionGradValuesDensityGaussQuad()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
const std::vector< double > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getShapeFunctionGradValuesDensityGaussQuad () const
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getShapeFunctionValuesDensityGaussLobattoQuad()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
const std::vector< double > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getShapeFunctionValuesDensityGaussLobattoQuad () const
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getShapeFunctionValuesDensityGaussQuad()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
const std::vector< double > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getShapeFunctionValuesDensityGaussQuad () const
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getShapeFunctionValuesDensityTransposed()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
const std::vector< double > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getShapeFunctionValuesDensityTransposed () const
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ getShapeFunctionValuesNLPTransposed()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
const std::vector< double > & dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::getShapeFunctionValuesNLPTransposed () const
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ HX() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::HX (distributedCPUMultiVec< dataTypes::number > & src,
const unsigned int numberComponents,
const bool scaleFlag,
const double scalar,
distributedCPUMultiVec< dataTypes::number > & dst,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+virtual
+
+ +

Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works for both real and complex data types.

+
Parameters
+ + + + + + +
srcVector containing current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously (non-const as we scale src and rescale src to avoid creation of temporary vectors)
numberComponentsNumber of multi-fields(vectors)
scaleFlagwhich decides whether dst has to be scaled square root of diagonal mass matrix before evaluating matrix times src vector
scalarwhich multiplies src before evaluating matrix times src vector
dstVector containing sum of dst vector and operator times given multi-vectors product
+
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ HX() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::HX (distributedCPUMultiVec< dataTypes::number > & src,
std::vector< dataTypes::number > & cellSrcWaveFunctionMatrix,
const unsigned int numberComponents,
const bool scaleFlag,
const double scalar,
const double scalarA,
const double scalarB,
distributedCPUMultiVec< dataTypes::number > & dst,
std::vector< dataTypes::number > & cellDstWaveFunctionMatrix 
)
+
+virtual
+
+ +

Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works for real and complex data types (Optimized matrix times multi-vectors using different datastructures for interior nodes and exterior nodes to reduce memory access costs during global to cell level vectors and vice versa)

+
Parameters
+ + + + + + + + + + +
srcVector containing current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously (non-const as we scale src and rescale src to avoid creation of temporary vectors)
cellSrcWaveFunctionMatrixcontaining current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously for a given cell
numberComponentsNumber of multi-fields(vectors)
scaleFlagwhich decides whether dst has to be scaled square root of diagonal mass matrix before evaluating matrix times src vector
scalarwhich multiplies src before evaluating matrix times src vector
scalarAwhich is used for Chebyshev recursive iteration
scalarBwhich is used for Chebyshev recursive iteration
dstVector containing sum of dst vector and operator times given multi-vectors product
cellDstWaveFunctionMatrixcontaining sum of cell level dst vector and operator times given multi-vectors product
+
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ init()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::init ()
+
+virtual
+
+ +

initialize operatorClass

+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ initCellWaveFunctionMatrix()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::initCellWaveFunctionMatrix (const unsigned int numberWaveFunctions,
distributedCPUMultiVec< dataTypes::number > & X,
std::vector< dataTypes::number > & cellWaveFunctionMatrix 
)
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ initWithScalar()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::initWithScalar (const unsigned int numberWaveFunctions,
double scalarValue,
std::vector< dataTypes::number > & cellWaveFunctionMatrix 
)
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ preComputeShapeFunctionGradientIntegrals()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::preComputeShapeFunctionGradientIntegrals (const unsigned int lpspQuadratureId)
+
+ +

precompute shapefunction gradient integral

+ +
+
+ +

◆ reinit() [1/3]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::reinit (const unsigned int wavefunBlockSize)
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ reinit() [2/3]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::reinit (const unsigned int wavefunBlockSize,
distributedCPUMultiVec< dataTypes::number > & X,
bool flag 
)
+
+virtual
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ reinit() [3/3]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::reinit (const unsigned int wavefunBlockSize,
distributedCPUVec< dataTypes::number > & X,
bool flag 
)
+
+virtual
+
+ +

initializes parallel layouts and index maps required for HX, XtHX and creates a flattened array format for X

+
Parameters
+ + + +
wavefunBlockSizenumber of wavefunction vectors to which the parallel layouts and index maps correspond to. The same number of wavefunction vectors must be used in subsequent calls to HX, XtHX.
flagcontrols the creation of flattened array format and index maps or only index maps
+
+
+
Returns
X format to store a multi-vector array in a flattened format with all the wavefunction values corresponding to a given node being stored contiguously
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ reinitkPointSpinIndex()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::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.

+ +
+
+ +

◆ resetExtPotHamFlag()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::resetExtPotHamFlag ()
+
+ +
+
+ +

◆ XtHX() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::XtHX (const dataTypes::numbersrc,
const unsigned int numberComponents,
const unsigned int numberLocalDofs,
std::vector< dataTypes::number > & ProjHam 
)
+
+virtual
+
+ +

Compute projection of the operator into orthogonal basis.

+
Parameters
+ + +
srcgiven orthogonal basis vectors
+
+
+
Returns
ProjMatrix projected small matrix
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ XtHX() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::XtHX (const dataTypes::numberX,
const unsigned int numberComponents,
const unsigned int numberLocalDofs,
const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
dftfe::ScaLAPACKMatrix< dataTypes::number > & projHamPar,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+virtual
+
+ +

Compute projection of the operator into a subspace spanned by a given orthogonal basis HConj=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
+
+
+

The XtHX and filling into projHamPar is done in a blocked approach which avoids creation of full projected Hamiltonian matrix memory, and also avoids creation of another full X memory.

+ +

Implements dftfe::operatorDFTClass.

+ +
+
+ +

◆ XtHXMixedPrec()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::XtHXMixedPrec (const dataTypes::numberX,
const unsigned int N,
const unsigned int Ncore,
const unsigned int numberLocalDofs,
const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
dftfe::ScaLAPACKMatrix< dataTypes::number > & projHamPar,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+virtual
+
+ +

Compute projection of the operator into a subspace spanned by a given orthogonal basis HConj=X^{T}*HConj*XConj.

+
Parameters
+ + + + + + +
XVector of Vectors containing multi-wavefunction fields
Ntotal number of wavefunctions components
Ncorenumber 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
+
+
+ +

Implements dftfe::operatorDFTClass.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ dftClass< FEOrder, FEOrderElectro >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
friend class dftClass< FEOrder, FEOrderElectro >
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ assembler_lock

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::Threads::Mutex dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::assembler_lock
+
+mutableprivate
+
+ +
+
+ +

◆ computing_timer

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::computing_timer
+
+private
+
+ +
+
+ +

◆ d_blockiNodeIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_blockiNodeIndex
+
+private
+
+ +

storage for shapefunctions

+ +
+
+ +

◆ d_blockiNodeIndexNoSym

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_blockiNodeIndexNoSym
+
+private
+
+ +
+
+ +

◆ d_blockjNodeIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_blockjNodeIndex
+
+private
+
+ +
+
+ +

◆ d_blockjNodeIndexNoSym

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_blockjNodeIndexNoSym
+
+private
+
+ +
+
+ +

◆ d_cellHamiltonianMatrix

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<dataTypes::number> > > dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrix
+
+private
+
+ +

finite-element cell level stiffness matrix with first dimension traversing the cell id(in the order of macro-cell and subcell) and second dimension storing the stiffness matrix of size numberNodesPerElement x numberNodesPerElement in a flattened 1D array of complex data type

+ +
+
+ +

◆ d_cellHamiltonianMatrixExternalPotCorr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrixExternalPotCorr
+
+private
+
+ +
+
+ +

◆ d_cellMassMatrix

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<dataTypes::number> > dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_cellMassMatrix
+
+private
+
+ +
+
+ +

◆ d_cellShapeFunctionGradientIntegral

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_cellShapeFunctionGradientIntegral
+
+private
+
+ +

finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_i \cdot \nabla N_j)) with first dimension traversing the macro cell id and second dimension storing the matrix of size numberNodesPerElement x numberNodesPerElement in a flattened 1D dealii Vectorized array

+ +
+
+ +

◆ d_elementHamiltonianMatrixImag

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_elementHamiltonianMatrixImag
+
+private
+
+ +
+
+ +

◆ d_externalPotCorrQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_externalPotCorrQuadratureId
+
+private
+
+ +

external potential correction quadrature id

+ +
+
+ +

◆ d_flattenedArrayCellLocalProcIndexIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::types::global_dof_index> > dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_flattenedArrayCellLocalProcIndexIdMap
+
+private
+
+ +
+
+ +

◆ d_flattenedArrayMacroCellLocalProcIndexIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::types::global_dof_index> > dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_flattenedArrayMacroCellLocalProcIndexIdMap
+
+private
+
+ +
+
+ +

◆ d_FullflattenedArrayMacroCellLocalProcIndexIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_FullflattenedArrayMacroCellLocalProcIndexIdMap
+
+private
+
+ +
+
+ +

◆ d_globalArrayClassificationMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_globalArrayClassificationMap
+
+private
+
+ +
+
+ +

◆ d_invJacderExcWithSigmaTimesGradRhoJxW

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_invJacderExcWithSigmaTimesGradRhoJxW
+
+private
+
+ +
+
+ +

◆ d_invJacKPointTimesJxW

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_invJacKPointTimesJxW
+
+private
+
+ +
+
+ +

◆ d_invSqrtMassVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_invSqrtMassVector
+
+private
+
+

data structures to store diagonal of inverse square root mass matrix and square root of mass matrix

+ +
+
+ +

◆ d_isStiffnessMatrixExternalPotCorrComputed

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_isStiffnessMatrixExternalPotCorrComputed
+
+private
+
+

flag for precomputing stiffness matrix contribution from sum{Vext}-sum{Vnuc}

+ +
+
+ +

◆ d_kPointIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_kPointIndex
+
+private
+
+ +
+
+ +

◆ d_macroCellIdToNormalCellIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_macroCellIdToNormalCellIdMap
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_NiNjIntegral

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_NiNjIntegral
+
+private
+
+ +

storage for shapefunctions

+ +
+
+ +

◆ d_nodesPerCellClassificationMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_nodesPerCellClassificationMap
+
+private
+
+ +
+
+ +

◆ d_normalCellIdToMacroCellIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_normalCellIdToMacroCellIdMap
+
+private
+
+ +
+
+ +

◆ d_numberCellsLocallyOwned

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_numberCellsLocallyOwned
+
+private
+
+ +
+
+ +

◆ d_numberNodesPerElement

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_numberNodesPerElement
+
+private
+
+ +

storage for matrix-free cell data

+ +
+
+ +

◆ d_shapeFunctionData

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_shapeFunctionData
+
+private
+
+ +
+
+ +

◆ d_shapeFunctionGradientValueRefX

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_shapeFunctionGradientValueRefX
+
+private
+
+ +
+
+ +

◆ d_shapeFunctionGradientValueRefY

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_shapeFunctionGradientValueRefY
+
+private
+
+ +
+
+ +

◆ d_shapeFunctionGradientValueRefZ

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_shapeFunctionGradientValueRefZ
+
+private
+
+ +
+
+ +

◆ d_shapeFunctionLpspQuadData

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_shapeFunctionLpspQuadData
+
+private
+
+ +
+
+ +

◆ d_spinIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_spinIndex
+
+private
+
+ +
+
+ +

◆ d_sqrtMassVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_sqrtMassVector
+
+private
+
+ +
+
+ +

◆ d_vEffExternalPotCorr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::Table<2, dealii::VectorizedArray<double> > dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_vEffExternalPotCorr
+
+private
+
+ +
+
+ +

◆ d_vEffExternalPotCorrJxW

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_vEffExternalPotCorrJxW
+
+private
+
+ +
+
+ +

◆ d_vEffJxW

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::d_vEffJxW
+
+private
+
+ +
+
+ +

◆ derExcWithSigmaTimesGradRho

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::Table<2, dealii::Tensor<1, 3, dealii::VectorizedArray<double> > > dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::derExcWithSigmaTimesGradRho
+
+private
+
+ +
+
+ +

◆ dftPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftClass<FEOrder, FEOrderElectro>* dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::dftPtr
+
+private
+
+ +

pointer to dft class

+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::mpi_communicator
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::pcout
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::this_mpi_process
+
+private
+
+ +
+
+ +

◆ vEff

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::Table<2, dealii::VectorizedArray<double> > dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >::vEff
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1kohn_sham_d_f_t_operator_class.png b/classdftfe_1_1kohn_sham_d_f_t_operator_class.png new file mode 100644 index 0000000000000000000000000000000000000000..ec95fe7763a2d7ba27671328cf590a05719d4614 GIT binary patch literal 1114 zcmeAS@N?(olHy`uVBq!ia0y~yV5|YM12~w0q^^P;Bao5~@CkAK|NlRb`Qpvj(*8rs zEetdZB&MHvap1rKpm^}4%PW9#oFzei!3;n?7??B7zQVx3{M6IMF{Fa=?c9fbpS5^g z+8v|L{x7SA6TWS*x~QJI_5;C0ONWrfSV3o}feO zCl%m~qlfj&r#^O@^gdf6{@wm>1+$Cy=ktE9nACHnzhQsz&c3vk`+UU`g(WIA@~h1i zY(2J1lrH?U;M$|g=8EGL_3!GVvz2WRUhPprXmF~;=7fAgo{2;w;=k2hwZ+~k3`Ml+F_iuTB>+TD7 zFSm()t^RO#$Abs|7h2vw9G_grbYFgn5jttW|!tHJw)S{3i|f+F!OGDnIv!pm-M~d5O1f?bc;kYrj5bYKUK>&)~s$ z;Q7=Kj0$e?@t*PwPE$Zk^KU?=5{T*3DaX(RVt8=M(}nTn^uy^vUaO`A+3AaTdU;-2 zKJ|mDrUz&IB%mvxj3*E7%X?eqP5SjT?)bjj`FUIS_ODxe;QjWq$6vTk+P&;uarolv zw>Lb?`SvYm((7esohI#$%gt}tpZ~UI)={r8vwgR}w=e&o zKif}i`a^rCeeKW67F^!>rtx|H@d;w;w`Zrm>$rK>#%j&Oyq(AAWtUn+g?#%jEO+;| z;r`i2l6K`~xqs__`Xl@HM3v=i^|P_Tz;^FyYX}is;d78h)8SnG>W+fs2+}`!yrRNOw zUMzLr3gefpldwCSbNR@9V^ihYTXA~#TuyM-M5mv7$ZvQ{{8QYM--iuN-|^HrU)i^- z{P6X8-w^w~<{A0cE`Qm>T852MIR^B=NGj374(Jrs* zf6ROK%NE}Zv2RU%Z&B2K^O>1v@y!Qi;lG=rZ%w?ie&6b6N5kj*4c?}=KR0W&v-!rW zH&hCCpJ0ohlq9mhX+f&Wp97&PHJ)6T{2TN=>w{2Y6&$_hKbB6Jq_uQP|7-g)POE5X ThdVyNQh>qJ)z4*}Q$iB}3^5qi literal 0 HcmV?d00001 diff --git a/classdftfe_1_1kohn_sham_d_f_t_operator_device_class-members.html b/classdftfe_1_1kohn_sham_d_f_t_operator_device_class-members.html new file mode 100644 index 000000000..045c180f4 --- /dev/null +++ b/classdftfe_1_1kohn_sham_d_f_t_operator_device_class-members.html @@ -0,0 +1,221 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro > Member List
+
+
+ +

This is the complete list of members for dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
basisOperationsPtrDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
basisOperationsPtrHostdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
computeHamiltonianMatricesAllkpt(const unsigned int spinIndex, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeLocalHamiltonianTimesX(const dataTypes::number *src, const unsigned int numberWaveFunctions, dataTypes::number *dst, bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
computeMassVector(const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeNonLocalHamiltonianTimesX(const dataTypes::number *src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int numberWaveFunctions, dataTypes::number *dst, const bool skip1=false, const bool skip2=false)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
computeNonLocalProjectorKetTimesXTimesV(const dataTypes::number *src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int numberWaveFunctions)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
computing_timerdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
createDeviceBlasHandle()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
d_Adftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_Bdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_Cdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixExternalPotCorrFlattenedDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixFlatteneddftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixFlattenedDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixNonLocalFlattenedConjugatedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixNonLocalFlattenedConjugateDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixNonLocalFlattenedTransposedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamiltonianMatrixNonLocalFlattenedTransposeDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamMatrixTimesWaveMatrixdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellHamMatrixTimesWaveMatrixNonLocalDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellJxWValuesdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellJxWValuesDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellNodeIdMapNonLocalToLocaldftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellNodeIdMapNonLocalToLocalDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_cellShapeFunctionGradientIntegralFlatteneddftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_derExcWithSigmaTimesGradRhoJxWdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_derExcWithSigmaTimesGradRhoJxWDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_deviceBlasHandledftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_DeviceFlattenedArrayMacroCellLocalProcIndexIdMapFlatteneddftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_externalPotCorrQuadratureIddftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocaldftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocalDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_flattenedArrayCellLocalProcIndexIdMapdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_flattenedArrayMacroCellLocalProcIndexIdMapFlatteneddftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_indexMapFromPaddedNonLocalVecToParallelNonLocalVecdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_indexMapFromPaddedNonLocalVecToParallelNonLocalVecDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_invSqrtMassVectordftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_invSqrtMassVectorDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_isMallocCalleddftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_isStiffnessMatrixExternalPotCorrComputeddftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_kpointCoordsVecDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_kPointIndexdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_kSquareTimesHalfVecDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_locallyOwnedProcBoundaryNodesVectorDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_macroCellIdToNormalCellIdMapdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_macroCellSubCellMapdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_maxSingleAtomPseudoWfcdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_mpiCommParentdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_nonlocalElemIdToLocalElemIdMapdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_nonLocalPseudoPotentialConstantsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_nonLocalPseudoPotentialConstantsDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_normalCellIdToMacroCellIdMapdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_numberCellsAccumNonLocalAtomsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_numberCellsNonLocalAtomsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_numberMacroCellsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_numberNodesPerElementdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_numLocallyOwnedCellsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_numQuadPointsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_numQuadPointsLpspdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_projectorIdsParallelNumberingMapdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_projectorIdsParallelNumberingMapDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_projectorKetTimesVectorAllCellsDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_projectorKetTimesVectorAllCellsReductiondftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_projectorKetTimesVectorAllCellsReductionDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_projectorKetTimesVectorDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_projectorKetTimesVectorParFlattenedDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_pseduoWfcNonLocalAtomsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_pseudoWfcAccumNonlocalAtomsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_shapeFunctionValuedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_shapeFunctionValueLpspDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_shapeFunctionValueTransposeddftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_shapeFunctionValueTransposedLpspDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_spinIndexdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_sqrtMassVectordftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_sqrtMassVectorDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_tempImagVecdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_tempRealVecdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_totalNonlocalAtomsCurrentProcdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_totalNonlocalElemsdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_totalPseudoWfcNonLocaldftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_vEffdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_vEffExternalPotCorrJxWdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_vEffExternalPotCorrJxWDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_vEffJxWdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
d_vEffJxWDevicedftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
destroyDeviceBlasHandle()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
dftPtrdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
getCellWaveFunctionMatrix()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getDeviceBlasHandle()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getFlattenedArrayCellLocalProcIndexIdMap()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getInverseJacobiansNLP()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getInvSqrtMassVec()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getLocallyOwnedProcBoundaryNodesVectorDevice()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getParallelChebyBlockVector2Device()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getParallelChebyBlockVectorDevice()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getParallelProjectorKetTimesBlockVectorDevice()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getParallelVecSingleComponent()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getProjectorKetTimesVectorSingle()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getShapeFunctionGradientIntegral()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getShapeFunctionGradientIntegralElectro()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getShapeFunctionGradientValuesNLPTransposed()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getShapeFunctionValues()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getShapeFunctionValuesNLPTransposed()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getShapeFunctionValuesTransposed(const bool use2pPlusOneGLQuad=false)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
getSqrtMassVec()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
h_d_Adftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
h_d_Bdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
h_d_Cdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
HX(distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
HX(distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::numberFP32 > &srcFloat, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool singlePrecCommun=false, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
HXCheby(distributedDeviceVec< dataTypes::number > &X, distributedDeviceVec< dataTypes::numberFP32 > &XFloat, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, distributedDeviceVec< dataTypes::number > &Y, bool mixedPrecflag=false, bool computePart1=false, bool computePart2=false)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
init()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
kohnShamDFTOperatorDeviceClass(dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
mpi_communicatordftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
n_mpi_processesdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
pcoutdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
preComputeShapeFunctionGradientIntegrals(const unsigned int lpspQuadratureId, const bool onlyUpdateGradNiNjIntegral=false)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
reinit(const unsigned int wavefunBlockSize, bool flag)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
resetExtPotHamFlag()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
this_mpi_processdftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >private
~kohnShamDFTOperatorDeviceClass()dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
+ + + + diff --git a/classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html b/classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html new file mode 100644 index 000000000..9401faaf9 --- /dev/null +++ b/classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html @@ -0,0 +1,4172 @@ + + + + + + + +DFT-FE: dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro > Class Template Reference
+
+
+ +

Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors. + More...

+ +

#include <kohnShamDFTOperatorDevice.h>

+
+Inheritance diagram for dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 kohnShamDFTOperatorDeviceClass (dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
 
 ~kohnShamDFTOperatorDeviceClass ()
 destructor
 
void createDeviceBlasHandle ()
 
void destroyDeviceBlasHandle ()
 
dftfe::utils::deviceBlasHandle_tgetDeviceBlasHandle ()
 
const double * getSqrtMassVec ()
 
const double * getInvSqrtMassVec ()
 
distributedCPUVec< dataTypes::number > & getProjectorKetTimesVectorSingle ()
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionGradientIntegral ()
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionGradientIntegralElectro ()
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionValues ()
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionValuesTransposed (const bool use2pPlusOneGLQuad=false)
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionValuesNLPTransposed ()
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionGradientValuesNLPTransposed ()
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getInverseJacobiansNLP ()
 
dftfe::utils::MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE > & getFlattenedArrayCellLocalProcIndexIdMap ()
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > & getCellWaveFunctionMatrix ()
 
distributedCPUVec< dataTypes::number > & getParallelVecSingleComponent ()
 
distributedDeviceVec< dataTypes::number > & getParallelChebyBlockVectorDevice ()
 
distributedDeviceVec< dataTypes::number > & getParallelChebyBlockVector2Device ()
 
distributedDeviceVec< dataTypes::number > & getParallelProjectorKetTimesBlockVectorDevice ()
 
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > & getLocallyOwnedProcBoundaryNodesVectorDevice ()
 
void HX (distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works for both real and complex data types.
 
void HX (distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::numberFP32 > &srcFloat, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool singlePrecCommun=false, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 
void HXCheby (distributedDeviceVec< dataTypes::number > &X, distributedDeviceVec< dataTypes::numberFP32 > &XFloat, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, distributedDeviceVec< dataTypes::number > &Y, bool mixedPrecflag=false, bool computePart1=false, bool computePart2=false)
 
void computeVEff (const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential involving local-density exchange-correlation functionals.
 
void computeVEffSpinPolarized (const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential involving local spin density exchange-correlation functionals.
 
void computeVEff (const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential involving gradient density type exchange-correlation functionals.
 
void computeVEffSpinPolarized (const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential for gradient-spin density type exchange-correlation functionals.
 
void computeVEffPrime (const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)
 Computes directional derivative of effective potential for local density type exchange-correlation functionals.
 
void computeVEffPrimeSpinPolarized (const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)
 Computes directional derivative of effective potential for local spin-density type exchange-correlation functionals.
 
void computeVEffPrime (const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)
 Computes directional derivative of effective potential for gradient density type exchange-correlation functionals.
 
void computeVEffPrimeSpinPolarized (const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)
 Computes directional derivative of effective potential for gradient spin-density type exchange-correlation functionals.
 
void reinitkPointSpinIndex (const unsigned int kPointIndex, const unsigned int spinIndex)
 sets the data member to appropriate kPoint Index
 
void resetExtPotHamFlag ()
 
void init ()
 
void reinit (const unsigned int wavefunBlockSize, bool flag)
 initializes parallel layouts and index maps required for HX, XtHX and creates a flattened array format for X
 
void computeMassVector (const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)
 Computes diagonal mass matrix.
 
void preComputeShapeFunctionGradientIntegrals (const unsigned int lpspQuadratureId, const bool onlyUpdateGradNiNjIntegral=false)
 precompute shapefunction gradient integral
 
void computeHamiltonianMatricesAllkpt (const unsigned int spinIndex, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 
void computeNonLocalProjectorKetTimesXTimesV (const dataTypes::number *src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int numberWaveFunctions)
 implementation of non-local projector kets times psi product using non-local discretized projectors at cell-level. works for both complex and real data type
 
+ + + + + + + + + + +

+Private Member Functions

void computeVEffExternalPotCorr (const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const unsigned int externalPotCorrQuadratureId)
 Computes effective potential for external potential correction to phiTot.
 
void computeLocalHamiltonianTimesX (const dataTypes::number *src, const unsigned int numberWaveFunctions, dataTypes::number *dst, bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 implementation of matrix-vector product using cell-level stiffness matrices. works for both real and complex data type
 
void computeNonLocalHamiltonianTimesX (const dataTypes::number *src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int numberWaveFunctions, dataTypes::number *dst, const bool skip1=false, const bool skip2=false)
 implementation of non-local Hamiltonian matrix-vector product using non-local discretized projectors at cell-level. works for both complex and real data type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< dataTypes::numberd_cellHamiltonianMatrixFlattened
 finite-element cell level stiffness matrix with first dimension traversing the cell id(in the order of macro-cell and subcell) and second dimension storing the stiffness matrix of size numberNodesPerElement x numberNodesPerElement in a flattened 1D array of complex data type
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_cellHamiltonianMatrixExternalPotCorrFlattenedDevice
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_cellHamiltonianMatrixFlattenedDevice
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_cellHamMatrixTimesWaveMatrix
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_kpointCoordsVecDevice
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_kSquareTimesHalfVecDevice
 
std::vector< dataTypes::numberd_cellHamiltonianMatrixNonLocalFlattenedConjugate
 for non local
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_cellHamiltonianMatrixNonLocalFlattenedConjugateDevice
 
std::vector< dataTypes::numberd_cellHamiltonianMatrixNonLocalFlattenedTranspose
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_cellHamiltonianMatrixNonLocalFlattenedTransposeDevice
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_cellHamMatrixTimesWaveMatrixNonLocalDevice
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_projectorKetTimesVectorParFlattenedDevice
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_projectorKetTimesVectorAllCellsDevice
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_projectorKetTimesVectorDevice
 
std::vector< double > d_nonLocalPseudoPotentialConstants
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_nonLocalPseudoPotentialConstantsDevice
 
std::vector< dataTypes::numberd_projectorKetTimesVectorAllCellsReduction
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICEd_projectorKetTimesVectorAllCellsReductionDevice
 
std::vector< unsigned int > d_pseudoWfcAccumNonlocalAtoms
 
unsigned int d_totalNonlocalAtomsCurrentProc
 
unsigned int d_totalNonlocalElems
 
unsigned int d_totalPseudoWfcNonLocal
 
unsigned int d_maxSingleAtomPseudoWfc
 
std::vector< unsigned int > d_nonlocalElemIdToLocalElemIdMap
 
std::vector< unsigned int > d_pseduoWfcNonLocalAtoms
 
std::vector< unsigned int > d_numberCellsNonLocalAtoms
 
std::vector< unsigned int > d_numberCellsAccumNonLocalAtoms
 
std::vector< dealii::types::global_dof_index > d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocal
 
dftfe::utils::MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICEd_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocalDevice
 
std::vector< unsigned int > d_projectorIdsParallelNumberingMap
 
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICEd_projectorIdsParallelNumberingMapDevice
 
std::vector< int > d_indexMapFromPaddedNonLocalVecToParallelNonLocalVec
 
dftfe::utils::MemoryStorage< int, dftfe::utils::MemorySpace::DEVICEd_indexMapFromPaddedNonLocalVecToParallelNonLocalVecDevice
 
std::vector< unsigned int > d_cellNodeIdMapNonLocalToLocal
 
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICEd_cellNodeIdMapNonLocalToLocalDevice
 
std::vector< unsigned int > d_normalCellIdToMacroCellIdMap
 
std::vector< unsigned int > d_macroCellIdToNormalCellIdMap
 
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICEd_locallyOwnedProcBoundaryNodesVectorDevice
 
bool d_isMallocCalled = false
 
dataTypes::number ** d_A
 
dataTypes::number ** d_B
 
dataTypes::number ** d_C
 
dataTypes::number ** h_d_A
 
dataTypes::number ** h_d_B
 
dataTypes::number ** h_d_C
 
dftClass< FEOrder, FEOrderElectro > * dftPtr
 pointer to dft class
 
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::DEVICE > > basisOperationsPtrDevice
 
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost
 
distributedCPUVec< double > d_invSqrtMassVector
 
distributedCPUVec< double > d_sqrtMassVector
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_invSqrtMassVectorDevice
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_sqrtMassVectorDevice
 
std::vector< double > d_vEff
 
std::vector< double > d_vEffExternalPotCorrJxW
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_vEffExternalPotCorrJxWDevice
 
std::vector< double > d_vEffJxW
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_vEffJxWDevice
 
const unsigned int d_numQuadPoints
 
unsigned int d_numQuadPointsLpsp
 
const unsigned int d_numLocallyOwnedCells
 
std::vector< double > d_derExcWithSigmaTimesGradRhoJxW
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_derExcWithSigmaTimesGradRhoJxWDevice
 
std::vector< double > d_cellShapeFunctionGradientIntegralFlattened
 finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_i \cdot \nabla N_j))
 
std::vector< double > d_shapeFunctionValue
 storage for shapefunctions
 
std::vector< double > d_shapeFunctionValueTransposed
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_shapeFunctionValueLpspDevice
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_shapeFunctionValueTransposedLpspDevice
 
std::vector< double > d_cellJxWValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_cellJxWValuesDevice
 
const unsigned int d_numberNodesPerElement
 
const unsigned int d_numberMacroCells
 
std::vector< unsigned int > d_macroCellSubCellMap
 
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
 
dealii::TimerOutput computing_timer
 
unsigned int d_kPointIndex
 
unsigned int d_spinIndex
 
std::vector< dealii::types::global_dof_index > d_flattenedArrayCellLocalProcIndexIdMap
 
std::vector< dealii::types::global_dof_index > d_flattenedArrayMacroCellLocalProcIndexIdMapFlattened
 
dftfe::utils::MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICEd_DeviceFlattenedArrayMacroCellLocalProcIndexIdMapFlattened
 
dftfe::utils::deviceBlasHandle_t d_deviceBlasHandle
 storage for deviceblas handle
 
bool d_isStiffnessMatrixExternalPotCorrComputed
 
unsigned int d_externalPotCorrQuadratureId
 external potential correction quadrature id
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_tempRealVec
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICEd_tempImagVec
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro>
+class dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >

Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors.

+
Author
Phani Motamarri, Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ kohnShamDFTOperatorDeviceClass()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::kohnShamDFTOperatorDeviceClass (dftClass< FEOrder, FEOrderElectro > * _dftPtr,
const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain 
)
+
+ +
+
+ +

◆ ~kohnShamDFTOperatorDeviceClass()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::~kohnShamDFTOperatorDeviceClass ()
+
+ +

destructor

+ +
+
+

Member Function Documentation

+ +

◆ computeHamiltonianMatricesAllkpt()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeHamiltonianMatricesAllkpt (const unsigned int spinIndex,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+ +
+
+ +

◆ computeLocalHamiltonianTimesX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeLocalHamiltonianTimesX (const dataTypes::numbersrc,
const unsigned int numberWaveFunctions,
dataTypes::numberdst,
bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+private
+
+ +

implementation of matrix-vector product using cell-level stiffness matrices. works for both real and complex data type

+
Parameters
+ + + + +
srcVector containing current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously.
numberWaveFunctionsNumber of wavefunctions at a given node.
dstVector containing matrix times given multi-vectors product
+
+
+ +
+
+ +

◆ computeMassVector()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeMassVector (const dealii::DoFHandler< 3 > & dofHandler,
const dealii::AffineConstraints< double > & constraintMatrix,
distributedCPUVec< double > & sqrtMassVec,
distributedCPUVec< double > & invSqrtMassVec 
)
+
+ +

Computes diagonal mass matrix.

+
Parameters
+ + + + + +
dofHandlerdofHandler associated with the current mesh
constraintMatrixconstraints to be used
sqrtMassVecoutput the value of square root of diagonal mass matrix
invSqrtMassVecoutput the value of inverse square root of diagonal mass matrix
+
+
+ +
+
+ +

◆ computeNonLocalHamiltonianTimesX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeNonLocalHamiltonianTimesX (const dataTypes::numbersrc,
distributedDeviceVec< dataTypes::number > & projectorKetTimesVector,
const unsigned int numberWaveFunctions,
dataTypes::numberdst,
const bool skip1 = false,
const bool skip2 = false 
)
+
+private
+
+ +

implementation of non-local Hamiltonian matrix-vector product using non-local discretized projectors at cell-level. works for both complex and real data type

+
Parameters
+ + + + +
srcVector containing current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously.
numberWaveFunctionsNumber of wavefunctions at a given node.
dstVector containing matrix times given multi-vectors product
+
+
+ +
+
+ +

◆ computeNonLocalProjectorKetTimesXTimesV()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeNonLocalProjectorKetTimesXTimesV (const dataTypes::numbersrc,
distributedDeviceVec< dataTypes::number > & projectorKetTimesVector,
const unsigned int numberWaveFunctions 
)
+
+ +

implementation of non-local projector kets times psi product using non-local discretized projectors at cell-level. works for both complex and real data type

+
Parameters
+ + + +
srcVector containing current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously.
numberWaveFunctionsNumber of wavefunctions at a given node.
+
+
+ +
+
+ +

◆ computeVEff() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEff (const std::map< dealii::CellId, std::vector< double > > * rhoValues,
const std::map< dealii::CellId, std::vector< double > > & phiValues,
const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+ +

Computes effective potential involving local-density exchange-correlation functionals.

+
Parameters
+ + + + + +
rhoValueselectron-density
phielectrostatic potential arising both from electron-density and nuclear charge
phiExtelectrostatic potential arising from nuclear charges
pseudoValuesquadrature data of pseudopotential values
+
+
+ +
+
+ +

◆ computeVEff() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEff (const std::map< dealii::CellId, std::vector< double > > * rhoValues,
const std::map< dealii::CellId, std::vector< double > > * gradRhoValues,
const std::map< dealii::CellId, std::vector< double > > & phiValues,
const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+ +

Computes effective potential involving gradient density type exchange-correlation functionals.

+
Parameters
+ + + + + + +
rhoValueselectron-density
gradRhoValuesgradient of electron-density
phielectrostatic potential arising both from electron-density and nuclear charge
phiExtelectrostatic potential arising from nuclear charges
pseudoValuesquadrature data of pseudopotential values
+
+
+ +
+
+ +

◆ computeVEffExternalPotCorr()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEffExternalPotCorr (const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+private
+
+ +

Computes effective potential for external potential correction to phiTot.

+
Parameters
+ + +
externalPotCorrValuesquadrature data of sum{Vext} minus sum{Vnu}
+
+
+ +
+
+ +

◆ computeVEffPrime() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEffPrime (const std::map< dealii::CellId, std::vector< double > > & rhoValues,
const std::map< dealii::CellId, std::vector< double > > & rhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & phiPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues 
)
+
+ +

Computes directional derivative of effective potential for gradient density type exchange-correlation functionals.

+ +
+
+ +

◆ computeVEffPrime() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEffPrime (const std::map< dealii::CellId, std::vector< double > > & rhoValues,
const std::map< dealii::CellId, std::vector< double > > & rhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & phiPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues 
)
+
+ +

Computes directional derivative of effective potential for local density type exchange-correlation functionals.

+ +
+
+ +

◆ computeVEffPrimeSpinPolarized() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEffPrimeSpinPolarized (const std::map< dealii::CellId, std::vector< double > > & rhoValues,
const std::map< dealii::CellId, std::vector< double > > & rhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & phiPrimeValues,
const unsigned int spinIndex,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues 
)
+
+ +

Computes directional derivative of effective potential for gradient spin-density type exchange-correlation functionals.

+ +
+
+ +

◆ computeVEffPrimeSpinPolarized() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEffPrimeSpinPolarized (const std::map< dealii::CellId, std::vector< double > > & rhoValues,
const std::map< dealii::CellId, std::vector< double > > & rhoPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & phiPrimeValues,
const unsigned int spinIndex,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues 
)
+
+ +

Computes directional derivative of effective potential for local spin-density type exchange-correlation functionals.

+ +
+
+ +

◆ computeVEffSpinPolarized() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEffSpinPolarized (const std::map< dealii::CellId, std::vector< double > > * rhoValues,
const std::map< dealii::CellId, std::vector< double > > & phiValues,
unsigned int spinIndex,
const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+ +

Computes effective potential involving local spin density exchange-correlation functionals.

+
Parameters
+ + + + + + +
rhoValueselectron-density
phielectrostatic potential arising both from electron-density and nuclear charge
phiExtelectrostatic potential arising from nuclear charges
spinIndexflag to toggle spin-up or spin-down
pseudoValuesquadrature data of pseudopotential values
+
+
+ +
+
+ +

◆ computeVEffSpinPolarized() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computeVEffSpinPolarized (const std::map< dealii::CellId, std::vector< double > > * rhoValues,
const std::map< dealii::CellId, std::vector< double > > * gradRhoValues,
const std::map< dealii::CellId, std::vector< double > > & phiValues,
const unsigned int spinIndex,
const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const unsigned int externalPotCorrQuadratureId 
)
+
+ +

Computes effective potential for gradient-spin density type exchange-correlation functionals.

+
Parameters
+ + + + + + + +
rhoValueselectron-density
gradRhoValuesgradient of electron-density
phielectrostatic potential arising both from electron-density and nuclear charge
phiExtelectrostatic potential arising from nuclear charges
spinIndexflag to toggle spin-up or spin-down
pseudoValuesquadrature data of pseudopotential values
+
+
+ +
+
+ +

◆ createDeviceBlasHandle()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::createDeviceBlasHandle ()
+
+ +
+
+ +

◆ destroyDeviceBlasHandle()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::destroyDeviceBlasHandle ()
+
+ +
+
+ +

◆ getCellWaveFunctionMatrix()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getCellWaveFunctionMatrix ()
+
+ +
+
+ +

◆ getDeviceBlasHandle()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::deviceBlasHandle_t & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getDeviceBlasHandle ()
+
+ +
+
+ +

◆ getFlattenedArrayCellLocalProcIndexIdMap()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getFlattenedArrayCellLocalProcIndexIdMap ()
+
+ +
+
+ +

◆ getInverseJacobiansNLP()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getInverseJacobiansNLP ()
+
+ +
+
+ +

◆ getInvSqrtMassVec()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const double * dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getInvSqrtMassVec ()
+
+ +
+
+ +

◆ getLocallyOwnedProcBoundaryNodesVectorDevice()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getLocallyOwnedProcBoundaryNodesVectorDevice ()
+
+ +
+
+ +

◆ getParallelChebyBlockVector2Device()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
distributedDeviceVec< dataTypes::number > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getParallelChebyBlockVector2Device ()
+
+ +
+
+ +

◆ getParallelChebyBlockVectorDevice()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
distributedDeviceVec< dataTypes::number > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getParallelChebyBlockVectorDevice ()
+
+ +
+
+ +

◆ getParallelProjectorKetTimesBlockVectorDevice()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
distributedDeviceVec< dataTypes::number > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getParallelProjectorKetTimesBlockVectorDevice ()
+
+ +
+
+ +

◆ getParallelVecSingleComponent()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
distributedCPUVec< dataTypes::number > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getParallelVecSingleComponent ()
+
+ +
+
+ +

◆ getProjectorKetTimesVectorSingle()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
distributedCPUVec< dataTypes::number > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getProjectorKetTimesVectorSingle ()
+
+ +
+
+ +

◆ getShapeFunctionGradientIntegral()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getShapeFunctionGradientIntegral ()
+
+ +
+
+ +

◆ getShapeFunctionGradientIntegralElectro()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getShapeFunctionGradientIntegralElectro ()
+
+ +
+
+ +

◆ getShapeFunctionGradientValuesNLPTransposed()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getShapeFunctionGradientValuesNLPTransposed ()
+
+ +
+
+ +

◆ getShapeFunctionValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getShapeFunctionValues ()
+
+ +
+
+ +

◆ getShapeFunctionValuesNLPTransposed()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getShapeFunctionValuesNLPTransposed ()
+
+ +
+
+ +

◆ getShapeFunctionValuesTransposed()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + +
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getShapeFunctionValuesTransposed (const bool use2pPlusOneGLQuad = false)
+
+ +
+
+ +

◆ getSqrtMassVec()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const double * dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::getSqrtMassVec ()
+
+ +
+
+ +

◆ HX() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::HX (distributedDeviceVec< dataTypes::number > & src,
distributedDeviceVec< dataTypes::number > & projectorKetTimesVector,
const unsigned int localVectorSize,
const unsigned int numberComponents,
const bool scaleFlag,
const double scalar,
distributedDeviceVec< dataTypes::number > & dst,
const bool doUnscalingX = true,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+ +

Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works for both real and complex data types.

+
Parameters
+ + + + + + +
srcVector containing current values of source array with multi-vector array stored in a flattened format with all the wavefunction value corresponding to a given node is stored contiguously (non-const as we scale src and rescale src to avoid creation of temporary vectors)
numberComponentsNumber of multi-fields(vectors)
scaleFlagwhich decides whether dst has to be scaled square root of diagonal mass matrix before evaluating matrix times src vector
scalarwhich multiplies src before evaluating matrix times src vector
dstVector containing sum of dst vector and operator times given multi-vectors product
+
+
+ +
+
+ +

◆ HX() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::HX (distributedDeviceVec< dataTypes::number > & src,
distributedDeviceVec< dataTypes::numberFP32 > & srcFloat,
distributedDeviceVec< dataTypes::number > & projectorKetTimesVector,
const unsigned int localVectorSize,
const unsigned int numberComponents,
const bool scaleFlag,
const double scalar,
distributedDeviceVec< dataTypes::number > & dst,
const bool doUnscalingX = true,
const bool singlePrecCommun = false,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+ +
+
+ +

◆ HXCheby()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::HXCheby (distributedDeviceVec< dataTypes::number > & X,
distributedDeviceVec< dataTypes::numberFP32 > & XFloat,
distributedDeviceVec< dataTypes::number > & projectorKetTimesVector,
const unsigned int localVectorSize,
const unsigned int numberComponents,
distributedDeviceVec< dataTypes::number > & Y,
bool mixedPrecflag = false,
bool computePart1 = false,
bool computePart2 = false 
)
+
+ +
+
+ +

◆ init()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::init ()
+
+ +
+
+ +

◆ preComputeShapeFunctionGradientIntegrals()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::preComputeShapeFunctionGradientIntegrals (const unsigned int lpspQuadratureId,
const bool onlyUpdateGradNiNjIntegral = false 
)
+
+ +

precompute shapefunction gradient integral

+ +
+
+ +

◆ reinit()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::reinit (const unsigned int wavefunBlockSize,
bool flag 
)
+
+ +

initializes parallel layouts and index maps required for HX, XtHX and creates a flattened array format for X

+
Parameters
+ + + +
wavefunBlockSizenumber of wavefunction vectors to which the parallel layouts and index maps correspond to. The same number of wavefunction vectors must be used in subsequent calls to HX, XtHX.
flagcontrols the creation of flattened array format and index maps or only index maps
+
+
+
Returns
X format to store a multi-vector array in a flattened format with all the wavefunction values corresponding to a given node being stored contiguously
+ +
+
+ +

◆ reinitkPointSpinIndex()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::reinitkPointSpinIndex (const unsigned int kPointIndex,
const unsigned int spinIndex 
)
+
+ +

sets the data member to appropriate kPoint Index

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

◆ resetExtPotHamFlag()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::resetExtPotHamFlag ()
+
+ +
+
+

Member Data Documentation

+ +

◆ basisOperationsPtrDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis::FEBasisOperations<dataTypes::number, double, dftfe::utils::MemorySpace::DEVICE> > dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::basisOperationsPtrDevice
+
+private
+
+ +
+
+ +

◆ basisOperationsPtrHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis::FEBasisOperations<dataTypes::number, double, dftfe::utils::MemorySpace::HOST> > dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::basisOperationsPtrHost
+
+private
+
+ +
+
+ +

◆ computing_timer

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::computing_timer
+
+private
+
+ +
+
+ +

◆ d_A

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dataTypes::number** dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_A
+
+private
+
+ +
+
+ +

◆ d_B

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dataTypes::number ** dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_B
+
+private
+
+ +
+
+ +

◆ d_C

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dataTypes::number ** dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_C
+
+private
+
+ +
+
+ +

◆ d_cellHamiltonianMatrixExternalPotCorrFlattenedDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrixExternalPotCorrFlattenedDevice
+
+private
+
+ +
+
+ +

◆ d_cellHamiltonianMatrixFlattened

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dataTypes::number> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrixFlattened
+
+private
+
+ +

finite-element cell level stiffness matrix with first dimension traversing the cell id(in the order of macro-cell and subcell) and second dimension storing the stiffness matrix of size numberNodesPerElement x numberNodesPerElement in a flattened 1D array of complex data type

+ +
+
+ +

◆ d_cellHamiltonianMatrixFlattenedDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrixFlattenedDevice
+
+private
+
+ +
+
+ +

◆ d_cellHamiltonianMatrixNonLocalFlattenedConjugate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dataTypes::number> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrixNonLocalFlattenedConjugate
+
+private
+
+ +

for non local

+ +
+
+ +

◆ d_cellHamiltonianMatrixNonLocalFlattenedConjugateDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrixNonLocalFlattenedConjugateDevice
+
+private
+
+ +
+
+ +

◆ d_cellHamiltonianMatrixNonLocalFlattenedTranspose

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dataTypes::number> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrixNonLocalFlattenedTranspose
+
+private
+
+ +
+
+ +

◆ d_cellHamiltonianMatrixNonLocalFlattenedTransposeDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamiltonianMatrixNonLocalFlattenedTransposeDevice
+
+private
+
+ +
+
+ +

◆ d_cellHamMatrixTimesWaveMatrix

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamMatrixTimesWaveMatrix
+
+private
+
+ +
+
+ +

◆ d_cellHamMatrixTimesWaveMatrixNonLocalDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellHamMatrixTimesWaveMatrixNonLocalDevice
+
+private
+
+ +
+
+ +

◆ d_cellJxWValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellJxWValues
+
+private
+
+ +
+
+ +

◆ d_cellJxWValuesDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellJxWValuesDevice
+
+private
+
+ +
+
+ +

◆ d_cellNodeIdMapNonLocalToLocal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellNodeIdMapNonLocalToLocal
+
+private
+
+ +
+
+ +

◆ d_cellNodeIdMapNonLocalToLocalDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<unsigned int, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellNodeIdMapNonLocalToLocalDevice
+
+private
+
+ +
+
+ +

◆ d_cellShapeFunctionGradientIntegralFlattened

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_cellShapeFunctionGradientIntegralFlattened
+
+private
+
+ +

finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_i \cdot \nabla N_j))

+ +
+
+ +

◆ d_derExcWithSigmaTimesGradRhoJxW

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_derExcWithSigmaTimesGradRhoJxW
+
+private
+
+ +
+
+ +

◆ d_derExcWithSigmaTimesGradRhoJxWDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_derExcWithSigmaTimesGradRhoJxWDevice
+
+private
+
+ +
+
+ +

◆ d_deviceBlasHandle

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::deviceBlasHandle_t dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_deviceBlasHandle
+
+private
+
+ +

storage for deviceblas handle

+ +
+
+ +

◆ d_DeviceFlattenedArrayMacroCellLocalProcIndexIdMapFlattened

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_DeviceFlattenedArrayMacroCellLocalProcIndexIdMapFlattened
+
+private
+
+ +
+
+ +

◆ d_externalPotCorrQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_externalPotCorrQuadratureId
+
+private
+
+ +

external potential correction quadrature id

+ +
+
+ +

◆ d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocal
+
+private
+
+ +
+
+ +

◆ d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocalDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocalDevice
+
+private
+
+ +
+
+ +

◆ d_flattenedArrayCellLocalProcIndexIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_flattenedArrayCellLocalProcIndexIdMap
+
+private
+
+ +
+
+ +

◆ d_flattenedArrayMacroCellLocalProcIndexIdMapFlattened

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_flattenedArrayMacroCellLocalProcIndexIdMapFlattened
+
+private
+
+ +
+
+ +

◆ d_indexMapFromPaddedNonLocalVecToParallelNonLocalVec

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_indexMapFromPaddedNonLocalVecToParallelNonLocalVec
+
+private
+
+ +
+
+ +

◆ d_indexMapFromPaddedNonLocalVecToParallelNonLocalVecDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<int, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_indexMapFromPaddedNonLocalVecToParallelNonLocalVecDevice
+
+private
+
+ +
+
+ +

◆ d_invSqrtMassVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_invSqrtMassVector
+
+private
+
+

data structures to store diagonal of inverse square root mass matrix and square root of mass matrix

+ +
+
+ +

◆ d_invSqrtMassVectorDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_invSqrtMassVectorDevice
+
+private
+
+ +
+
+ +

◆ d_isMallocCalled

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_isMallocCalled = false
+
+private
+
+ +
+
+ +

◆ d_isStiffnessMatrixExternalPotCorrComputed

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_isStiffnessMatrixExternalPotCorrComputed
+
+private
+
+

flag for precomputing stiffness matrix contribution from sum{Vext}-sum{Vnuc}

+ +
+
+ +

◆ d_kpointCoordsVecDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_kpointCoordsVecDevice
+
+private
+
+ +
+
+ +

◆ d_kPointIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_kPointIndex
+
+private
+
+ +
+
+ +

◆ d_kSquareTimesHalfVecDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_kSquareTimesHalfVecDevice
+
+private
+
+ +
+
+ +

◆ d_locallyOwnedProcBoundaryNodesVectorDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<unsigned int, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_locallyOwnedProcBoundaryNodesVectorDevice
+
+private
+
+ +
+
+ +

◆ d_macroCellIdToNormalCellIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_macroCellIdToNormalCellIdMap
+
+private
+
+ +
+
+ +

◆ d_macroCellSubCellMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_macroCellSubCellMap
+
+private
+
+ +
+
+ +

◆ d_maxSingleAtomPseudoWfc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_maxSingleAtomPseudoWfc
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_nonlocalElemIdToLocalElemIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_nonlocalElemIdToLocalElemIdMap
+
+private
+
+ +
+
+ +

◆ d_nonLocalPseudoPotentialConstants

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_nonLocalPseudoPotentialConstants
+
+private
+
+ +
+
+ +

◆ d_nonLocalPseudoPotentialConstantsDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_nonLocalPseudoPotentialConstantsDevice
+
+private
+
+ +
+
+ +

◆ d_normalCellIdToMacroCellIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_normalCellIdToMacroCellIdMap
+
+private
+
+ +
+
+ +

◆ d_numberCellsAccumNonLocalAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_numberCellsAccumNonLocalAtoms
+
+private
+
+ +
+
+ +

◆ d_numberCellsNonLocalAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_numberCellsNonLocalAtoms
+
+private
+
+ +
+
+ +

◆ d_numberMacroCells

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_numberMacroCells
+
+private
+
+ +
+
+ +

◆ d_numberNodesPerElement

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_numberNodesPerElement
+
+private
+
+ +
+
+ +

◆ d_numLocallyOwnedCells

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_numLocallyOwnedCells
+
+private
+
+ +
+
+ +

◆ d_numQuadPoints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_numQuadPoints
+
+private
+
+ +
+
+ +

◆ d_numQuadPointsLpsp

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_numQuadPointsLpsp
+
+private
+
+ +
+
+ +

◆ d_projectorIdsParallelNumberingMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_projectorIdsParallelNumberingMap
+
+private
+
+ +
+
+ +

◆ d_projectorIdsParallelNumberingMapDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<unsigned int, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_projectorIdsParallelNumberingMapDevice
+
+private
+
+ +
+
+ +

◆ d_projectorKetTimesVectorAllCellsDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_projectorKetTimesVectorAllCellsDevice
+
+private
+
+ +
+
+ +

◆ d_projectorKetTimesVectorAllCellsReduction

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dataTypes::number> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_projectorKetTimesVectorAllCellsReduction
+
+private
+
+ +
+
+ +

◆ d_projectorKetTimesVectorAllCellsReductionDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_projectorKetTimesVectorAllCellsReductionDevice
+
+private
+
+ +
+
+ +

◆ d_projectorKetTimesVectorDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_projectorKetTimesVectorDevice
+
+private
+
+ +
+
+ +

◆ d_projectorKetTimesVectorParFlattenedDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_projectorKetTimesVectorParFlattenedDevice
+
+private
+
+ +
+
+ +

◆ d_pseduoWfcNonLocalAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_pseduoWfcNonLocalAtoms
+
+private
+
+ +
+
+ +

◆ d_pseudoWfcAccumNonlocalAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_pseudoWfcAccumNonlocalAtoms
+
+private
+
+ +
+
+ +

◆ d_shapeFunctionValue

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_shapeFunctionValue
+
+private
+
+ +

storage for shapefunctions

+ +
+
+ +

◆ d_shapeFunctionValueLpspDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_shapeFunctionValueLpspDevice
+
+private
+
+ +
+
+ +

◆ d_shapeFunctionValueTransposed

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_shapeFunctionValueTransposed
+
+private
+
+ +
+
+ +

◆ d_shapeFunctionValueTransposedLpspDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_shapeFunctionValueTransposedLpspDevice
+
+private
+
+ +
+
+ +

◆ d_spinIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_spinIndex
+
+private
+
+ +
+
+ +

◆ d_sqrtMassVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_sqrtMassVector
+
+private
+
+ +
+
+ +

◆ d_sqrtMassVectorDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_sqrtMassVectorDevice
+
+private
+
+ +
+
+ +

◆ d_tempImagVec

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_tempImagVec
+
+private
+
+ +
+
+ +

◆ d_tempRealVec

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_tempRealVec
+
+private
+
+

Temporary storage for real and imaginary portions of the complex wavefunction vectors

+ +
+
+ +

◆ d_totalNonlocalAtomsCurrentProc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_totalNonlocalAtomsCurrentProc
+
+private
+
+ +
+
+ +

◆ d_totalNonlocalElems

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_totalNonlocalElems
+
+private
+
+ +
+
+ +

◆ d_totalPseudoWfcNonLocal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_totalPseudoWfcNonLocal
+
+private
+
+ +
+
+ +

◆ d_vEff

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_vEff
+
+private
+
+ +
+
+ +

◆ d_vEffExternalPotCorrJxW

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_vEffExternalPotCorrJxW
+
+private
+
+ +
+
+ +

◆ d_vEffExternalPotCorrJxWDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_vEffExternalPotCorrJxWDevice
+
+private
+
+ +
+
+ +

◆ d_vEffJxW

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_vEffJxW
+
+private
+
+ +
+
+ +

◆ d_vEffJxWDevice

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::d_vEffJxWDevice
+
+private
+
+ +
+
+ +

◆ dftPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftClass<FEOrder, FEOrderElectro>* dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::dftPtr
+
+private
+
+ +

pointer to dft class

+ +
+
+ +

◆ h_d_A

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dataTypes::number** dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::h_d_A
+
+private
+
+ +
+
+ +

◆ h_d_B

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dataTypes::number ** dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::h_d_B
+
+private
+
+ +
+
+ +

◆ h_d_C

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dataTypes::number ** dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::h_d_C
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::mpi_communicator
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::pcout
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1kohn_sham_d_f_t_operator_device_class.png b/classdftfe_1_1kohn_sham_d_f_t_operator_device_class.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4aded98489ccde557f5571088c17507f324daa GIT binary patch literal 1188 zcmb_c`BPH|5Pm@zY6|rjKsi!^^H9){QyK_|L}JM+$Q>dKhX_I`P>?Garo*8O;8YVH zw3dX_iYXXr5)=xPNP(nSObLPshe{$+xq^h7KtV`f?Tmjx_lG^dnce+nXDdU3{Eg8T zXaE3=ArdhR08kvn5BX>hq7$ZC_ri0g#0x-qiX@I2$il!kvfJ&<&Q-L*68d9 zOdp|22FnM{l9O#+TRKXsk}AQL``D_aY*P>p9C#FXvbH0!o5Ee`se z$80N+CN8zxV05&?G?D3M;swGHDGUEJuaADRVm#s9?t-puqJ*97dy|d1)T`nQobNf3`^X6(N56^L@0ZQNkQlU8*H(2 z1>=X?7sE*@wL=XR=e62pk*7;5-xKzFw&il2JY~)q!TX{GPMLosZGG&fwt%}1cym$* zU!227HrqgG#Wv z>EFFCT_eIjBYPM5e@MNj;t=TC0@p@Gqqh%FGnE_zi zC^7@I7ouU%mO_9zNH4f11|{EUe6b7<-CoL>FWl+pb#AEEcMJMEyI5?H{pEu}$;IJZ zwcLFw?R?Hx+PQRirlJ2#Sbv(+vbv4PTfL4UGky4UiHWuIlo zy)ls|Dx`lobExR`yPYMsH#LT*I&a!&yfV7HSo@v3Sk!Wy^5llAMYN~#M?10esE<)b z0BL35aQnjWg#Qmc<*P!jwHotE(Uchp7g=yJMw%D3R|20gwQXiUU41z4m^y383LuHI zvJ%rVtKJUyUryar=hPA1iL~caPd0^IOApU^!+kSSKjsZp{tnO0=w+d*p!!`-v-?wN z4bJ;DV37TI=+v{{gbAkiOpKBrMWj7XC5p!0OJh>HpVHPp4pDoM~IZG z!8X6%`8~N@qEuZTRcUgUD7{(qUD=S~Tl9Q|+V7|beOfWGCpWvpny^x}QwNDpv{&9a zYVhdq5s|r?TvGHkzHT<0)f5;#%6Y6>wURf}h|~qpocwz$hu2&Y<}R%$w>Opw zZz-tb9hEtY(z)2}2V6m%cp`sQsP~4Q&H&Zawe3$y@{Aqbf*Af@K%uuxd`rD71W th47&t&cOhJk^4j{zhP@@zmv)2bEh8`qv#^lychCM0O)KGk$>hw=|3;*I%@y` literal 0 HcmV?d00001 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..5f96dd587 --- /dev/null +++ b/classdftfe_1_1linear_algebra_1_1_multi_vector-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::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 >
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..bbb31aafc --- /dev/null +++ b/classdftfe_1_1linear_algebra_1_1_multi_vector.html @@ -0,0 +1,1897 @@ + + + + + + + +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.
 
ValueType * data ()
 Return the raw pointer to the MultiVector data.
 
const ValueType * data () 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
 
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

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::const_iterator = typename Storage::const_iterator
+
+ +
+
+ +

◆ const_reference

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::const_reference = typename Storage::const_reference
+
+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::iterator = typename Storage::iterator
+
+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::pointer = typename Storage::pointer
+
+ +
+
+ +

◆ reference

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::reference = typename Storage::reference
+
+ +
+
+ +

◆ Storage

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::Storage = dftfe::utils::MemoryStorage<ValueType, memorySpace>
+
+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::value_type = typename 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 >::Storagestorage,
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_typelocallyOwnedRange,
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_typelocallyOwnedRange,
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]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (const MultiVector< ValueType, memorySpace > & u)
+
+ +

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]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<typename ValueBaseType >
+ + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::add (const ValueBaseType * valVec,
const MultiVector< ValueType, memorySpace > & u 
)
+
+ +
+
+ +

◆ add() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<typename ValueBaseType >
+ + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::add (const ValueBaseType val,
const MultiVector< ValueType, memorySpace > & u 
)
+
+ +
+
+ +

◆ addAndScale()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<typename ValueBaseType1 , typename ValueBaseType2 >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::addAndScale (const ValueBaseType1 valScale,
const ValueBaseType2 valAdd,
const MultiVector< ValueType, memorySpace > & u 
)
+
+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
iterator dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::begin ()
+
+ +

Return iterator pointing to the beginning of MultiVector data.

+
Returns
Iterator pointing to the beginning of MultiVector.
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const_iterator dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::begin () const
+
+ +

Return iterator pointing to the beginning of MultiVector data.

+
Returns
Constant iterator pointing to the beginning of MultiVector.
+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
ValueType * dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::data ()
+
+ +

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]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
iterator dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::end ()
+
+ +

Return iterator pointing to the end of MultiVector data.

+
Returns
Iterator pointing to the end of MultiVector.
+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const_iterator dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::end () const
+
+ +

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]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
MultiVector & dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::operator= (const MultiVector< ValueType, memorySpace > & u)
+
+ +

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]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
MultiVector & dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::operator= (MultiVector< ValueType, memorySpace > && u)
+
+ +

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]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::reinit (const MultiVector< ValueType, memorySpace > & u)
+
+ +

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()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<typename ValueBaseType >
+ + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::scale (const ValueBaseType val)
+
+ +
+
+ +

◆ scaleAndAdd()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<typename ValueBaseType1 , typename ValueBaseType2 >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::scaleAndAdd (const ValueBaseType1 valScale,
const ValueBaseType2 valAdd,
const MultiVector< ValueType, memorySpace > & u 
)
+
+ +
+
+ +

◆ setValue()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::setValue (const ValueType val)
+
+ +

Set all entries of the MultiVector to a given value.

+
Parameters
+ + +
[in]valThe value to which the entries are to be set
+
+
+ +
+
+ +

◆ swap()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::swap (MultiVector< ValueType, memorySpace > & u)
+
+ +

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..b6dd2813d --- /dev/null +++ b/classdftfe_1_1linear_solver-members.html @@ -0,0 +1,91 @@ + + + + + + + +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..d39435049 --- /dev/null +++ b/classdftfe_1_1linear_solver.html @@ -0,0 +1,207 @@ + + + + + + + +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 (dealiiLinearSolverProblemproblem,
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..d9633b69bba8330d3fd9b31e3495e47ef35008a9 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^lYlsYgBeI3ZM_4cqyv0HT>t<74`jZ0^R=}9&~gg{ z%>s$(XI>mQZ~!PCJn8ZZpd4pOkY6wZkPimtOtY^rFfgfjx;TbZFut7|n15J-r={O{ z)w}=yAGK~_k;$0jTj?-4d|k?e1L?_^!t z+yC~KExXbe>p3a!gzK$BHSenGH=obGkX&MGbM)%>+>d2{T%y(N6<_ZDdwEgnoY%c7 znHS2JZ0hI@s?K>^v1#_U$!7YzZj(x`sb0!iSUly-8q-w|e>SOj8vo^5c|Kyduk}sN z^4GsY=Q&Cl-&d=bZUGgHHpJ0v+R`8s(oL6({lxac?HjBj>)-3%xA#VNC8P}X|b%Z5H3218ZG1RaM zF;sA=Fnkd4V0fT8f#E=~0%OB+2POvpMiz#7Oq>ih$O>M@D?gp{S-A>G2s^2r1O|)B zOU(%$mnJ)Uxvnfz$u!}~WpWVJqqqFbI zzYguaSN(GPL5ZcGs*EjmfkNoc`(BZL|(y1r*`JP_P@8J7h z@a2>bb$YQryTQSgImJ%(YOL?_OA=b^Zf!4~6%rWzb;tBw$-h);*6#S>sCcrPOJ&j* jm}f4xO({O-{gVB5Se5z1AG17wiHO0|)z4*}Q$iB}$gnoz 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..33b3536d6 --- /dev/null +++ b/classdftfe_1_1mesh_movement_affine_transform-members.html @@ -0,0 +1,120 @@ + + + + + + + +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..1972b4feb --- /dev/null +++ b/classdftfe_1_1mesh_movement_affine_transform.html @@ -0,0 +1,366 @@ + + + + + + + +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, double > transform (const dealii::Tensor< 2, 3, double > &deformationGradient)
 Performs affine transformation of the triangulation.
 
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)
 
- 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, double > d_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, double > movedMeshCheck ()
 
- Protected Attributes inherited from dftfe::meshMovementClass
distributedCPUVec< double > d_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< double > d_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 dftParametersdftParams 
)
+
+ +

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..7c4a55c791ef06cfb1945d065fe617fa4a87cb9f GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^cY!#7gBeJ!GHK8QQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCG95?_J51w>+1yGK&B*-tA0mugfbEer>7#Ns#dAc};R4~4s`*7V81&-E! zlbIj>`R}>BO7w!?+c$62B;K9%v<_|IpK$-iw%q8j8yy{Dp%(-Ne};gFE6lsLXkTR) zyx4nc*{v5l>_>R?`&F@-RAMv>Cz=qs2Qi2z! zK709V!fFK3b5o2z$KSKAe1BTU`uO}lzq4ob#JA3V zEpfFpNO7|8h%4JEzYpg4Nq^52ARrBijRkw1LJpaox zb!To??vQc+H>-R~`vUD{>FQH*Pg%_F-1=&J%C@QrN6)5vtp7CO)51U7(^i%2G)#GW zD?4-6<$yZfj~;FR5_``xTNp;qyy|6cw7uOUe%dQ# zPCm|SuuS^??$hV?>{_~LexCK`wsTkBExND%;>q6i!Mmo#$uCWN_8@Jw=kopw!e96N zeav!mW~6)e{h7IGahD8@*DqU;oc3)cf_VBe$SX7SFJq#})=Y(r>Pf()&EV + + + + + + +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..0af684dab --- /dev/null +++ b/classdftfe_1_1mesh_movement_class.html @@ -0,0 +1,854 @@ + + + + + + + +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, double > movedMeshCheck ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

distributedCPUVec< double > d_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< double > d_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 dftParametersdftParams 
)
+
+ +

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..8ae19e92e28cda6db84beabd0394090c611abfd7 GIT binary patch literal 1163 zcmeAS@N?(olHy`uVBq!ia0y~yU_1h32XHV0$qkHO&j2au0G|-o|Ns93nJ?aaE$u(F z+`>S!Kw|ot7Y7a;0E!1sy1W7?$5|5O7t8?UgMm5I>?;fmEMlH6jv*C{Z|7d@TWrAN z$}hh1)BpO9e%zdX9J+U7w;DZ`%+pjYdn9walJ&=yWtp?|v>Wa(ICn0sAIM%vj@c?;jCX=&e_UN12Eb~dMyXMWwkd*;4C<<5V3V$8oR z@oe02=X~S)qGM;X)4r_}S~N5F`eK&%sfFu%ms-h8b+4UvY2}f3&DI^!i9eTLt1zrS zbJeWz?B|<39v!u!+otZQjlHK^eeeISn(TnL`FlS;OSr+Zt2`~u-K(Sd-nRA^<~!eS z|N4;iNaIJjq{|WKw_R`f!Sv`>sCCEI>t#o8C1}M=Ke+cJqsx2C+nNv7*RMFT>~@*& zy2XYq7G`qJcX;k;9BZj~KjYNeY_w0HhjBSn(uu&M{!4) zxkFskhhH~$-I(Wn>5AO0eLD8()~tU@^Q_ODd8COF9%3<^7tiSI0D3dBK-I-~^8;|e zeXUmTyKE90%Ancsf2Fhom%=(BC5N25d7gp_TR^P820mR36Q>F=9?}+MVhML*;aJzg zArQkUsIUVl4K%0$XbuA~{27744_5GF{;s=u+wUthoPITZiYpNsu$%bxrNQ&cdG^b1 z+noRW{7dwqIjS!geG&i?ULBJ}VmJdQ0qye&0y@BxYaQF8lItOPlfHmsdWvs;Y|WoL z*LTh~JUw4U_QlQ9$sPAOzPc(nFJFDOc(>f6tiqyRz5_4szEIZQe%SLq-yfAD{_RnZ zr!1MQWtOgJ_vzEQz0daf&p949y=GP79rp5xxicTnk9vIc%wFx!>$vrde+0$W{D|B; z`D^>v{l{t;K58%A#c5@2?k=9R^`qmi^Ky?aovo?Li@)v{F8-oEcKhA+_4TiNS2Ozt zt$&x>Xkqkz?vI^)igoH~^bTwmA6sx66aj=ZDyn}Z1j0Q?d}Y7 z?;q|R@*G#697VkcKVAmR z*0@zA`|e=EpP$AbHyoFd)n3Or@0FpyLfO=c3p@WYJrZ}i>-RSIiOSpccNZO7E$R5> z`Nv7o+3fRG>Zk6z_f=y18MW9b@!OxJ4hwheUH&M~`_HS@>t4zndEXKh7XSY1%KYW~ zw*AcvKFfD|rAn+HJ23XVu*6=Ah9@xnsA>X}rV8tI{v(z1p07UTIOlogzE%GicqhJ) V(keNx0W3BcJYD@<);T3K0RZ}YE(ibs 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..0919bbb13 --- /dev/null +++ b/classdftfe_1_1mesh_movement_gaussian_class-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::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..c9807d644 --- /dev/null +++ b/classdftfe_1_1mesh_movement_gaussian_class.html @@ -0,0 +1,497 @@ + + + + + + + +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, 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 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, double > movedMeshCheck ()
 
- Protected Attributes inherited from dftfe::meshMovementClass
distributedCPUVec< double > d_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< double > d_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 dftParametersdftParams 
)
+
+ +

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..ed2bde1abf78ad2e92cb539829a743f9debc25c7 GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0vp^SAjTygBeKfe0<;*kdhAY332`Z|38rV;?396{zJddu*{ym``cZS&YivegBK^s-i=W6sKzSXHPV66nQQrxOcJWDs9j72j^Zq{lRIzp6A*F zvzFqG3tugqo`1_?c5M1fqnFm}TQVA7S-Cx3W&dpFo0h+`=1+P5IHC79+hrreViyj0Vn6yuV+%v6dDV!t_eG$L()Z-`>AAx$AUQlo1NX v3)9S*+XDj(jeiHgi3{68G?#9f{g2V^$hsf8TeNF{$(q5_)z4*}Q$iB}rnHTw 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..38926aeeb --- /dev/null +++ b/classdftfe_1_1molecular_dynamics_class-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::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)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..58f00a1b1 --- /dev/null +++ b/classdftfe_1_1molecular_dynamics_class.html @@ -0,0 +1,1982 @@ + + + + + + + +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)
 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_Commmpi_comm_parent,
const bool restart,
const int verbosity 
)
+
+ +

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,
boolscfRestart 
)
+
+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< doubleQ,
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..862bd7573 --- /dev/null +++ b/classdftfe_1_1non_linear_solver-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::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..71d5c815c --- /dev/null +++ b/classdftfe_1_1non_linear_solver.html @@ -0,0 +1,501 @@ + + + + + + + +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 (nonlinearSolverProblemproblem,
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..b6ecc428b7d75ab7aa1b3a69c1b9fec97baac154 GIT binary patch literal 1258 zcmeAS@N?(olHy`uVBq!ia0y~yVA2J$12~w0y4H!yuxEmN(1aD5Yvg0|ec1&XZ%=0_#N`HJV-=T6$;(bCi!>@wF z)A}{biZt?OPb-8<0?f2x_{of`xnRDhm zk>noN9Bv2sbvZNTlJ7-tTYr0F>iuu8Hz?(LyUnrAYG#EVJd?}!+&`<2Id3? zJ#ZkNvWOA~${pSYl+dbA*{BB$*d|cGmT%BT4P$iUj)SyVp+rZ<35&kPlE({k_zs+| z`1<{=4rEigKyNdI6 zJ_tW4Z_+3nt#`@W%kHMirQGgE;yE+l$L=evQn+oHJ6(U$r1PbhYF5;5eroj7S*;-N zbYzw1$>$SxrhYVzwkz_Vw>Cds>+ZfAl^5-AyMA*0e&pAD?d#!|ch89H%}U?u?Y~Ro zNADB*`sMTY-`)6h_R;$s&AC;(lGNTiC_PPV33;FM z?#{_|l`nRC=1l%s_fdP>nLxd`vrn$yVR+p*x%1trNwGWYH|^i_biyA+;T`FxJ%7di zD7m9{bp7{fHDC2bt!)dmKNRl!DUkW#@T$W7+n=12H)_1Scj=Tm`F{!Lr+4q)ymU|9 zw9jk3qxQAj%WIo@;CB7?DsNL@NCa$KI;}2FL2Fyh-XAM%kH + + + + + + +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..925fcdd41 --- /dev/null +++ b/classdftfe_1_1nonlinear_solver_problem.html @@ -0,0 +1,548 @@ + + + + + + + +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 int > getUnknownCountFlag () 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_Comm & getMPICommunicator ()=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..d186346df67086876cfc8e2c7419ad53d3840689 GIT binary patch literal 1355 zcmaKsYfw{17=}-bhRZ;MtrsW;1W^<%$i<*h5JhMX62iz`NCvqn#8a-pAVg3HkePyd zz)}nfXhc+u1R=BvHB}&T3ztC969hCEg9KF4LXb#$#&)Lt;dFoOKKt#D{q}v|*#dvR z?~M(=H3R^_7$hG!1OUs3DEsSU(b?^AZ#=q~`}+oZ>2x|2m8w6P=O5qPxqVBLX=%4o zC={ag09aCko*ASa@(Tda{paDjj57!T%cbCfeSs{@^p*bl>+4Nc$f7U3)@6U#(~CMH5E2CeMjjX`P6(`u{1;6aYVD}Y z%Yk|Jqn_yQxjMxM@X0)T?B*WPgq!@6Y+Q;P_i=)7v2(|t&8?rR&}-?ByU~RJ+Suy5 zW}V&YHcPrLq^+Py%XFS=o}r(*L6gL4TtiA)JKHK9l}<||7xeWb0efpzTU{*JSkR`= zuDUz9xZp5-8UJvy=AiZKvvJU9tEG9nM1lYje%v19w{}tcwalR0KT1=FSZmz}1-?UV z_*W^>5WtJ^kJ8L7ba*vQc$m^OQ53XT27xpxk zd5h0?z^GuQ#p}G-WAi73Xk!J9nC-xdP;&t5pYuQXkLd4p{TNeJdm{!m5-5@|=TObp zwIhIOj(kro-xa`(Z~knHLpHZaQg0Z&k$i|*TWAv`LdXNmtV)WSYp@nXu4iP`17R}x6yN{mwna1N%|0RU z*HX1ZCxa<;=D)nJqF!!ygiBT?iWk?pOX7aaNSdUV#oQ?t1Pv>u%(P^VJfmeuLCH?3 zpdMqViY0L@v#a*FTlt)Z%!GsGgaK3f+2p0HF9mpWRoFr{fy7Oio!`1vV~%K7G~$;rJnZe7~>Ss%+?uC+Vt z4-Q+uIo=vIYi{K(*_6pj!ST{X@7`AQDQeAP9Bn2y-$AlUhG(7D+;N#ae#vuRxJBWD zBF4&{M_h=$wjA!pCpa6o_;IL5-!mZT?8&X2Q4-H{Ndhjy-9T(8@XSgjL*G4%D#HhH zwuOO+T$P~iH?j-lOgA*al#UM zYkR{3KvL(gh^m?8+E+bbB<|1^lWf7U)Raa8FB<&QNEI?z_B*(cXuB2M`%3HS1D_I8 z@ms);j`O`^UH0H5J`oNiFgAc_qW+G_Z8R^FBnzYgl8qJ}doB||iJ}*3onEf*MBS`G Si81=^0ic)P0p9+|Gk*acn2 + + + + + + +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 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..a0c072178 --- /dev/null +++ b/classdftfe_1_1nudged_elastic_band_class.html @@ -0,0 +1,2068 @@ + + + + + + + +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 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_Commmpi_comm_parent,
const bool restart,
const int verbosity,
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 (boolperiodic)
+
+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,
doubleForce 
)
+
+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..35691949000ae81a7eee2732c718467c2311a205 GIT binary patch literal 783 zcmV+q1MvKbP)vTJr#LVva2S`&=)l0h|Ns9}lGCUF000SeQchC<|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 N002ovPDHLkV1nnsiQ)hN literal 0 HcmV?d00001 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..5393992d1 --- /dev/null +++ b/classdftfe_1_1operator_d_f_t_class-members.html @@ -0,0 +1,135 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::operatorDFTClass Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
axpby(double scalarA, double scalarB, const unsigned int numberWaveFunctions, const std::vector< dataTypes::number > &cellXWaveFunctionMatrix, std::vector< dataTypes::number > &cellYWaveFunctionMatrix)=0dftfe::operatorDFTClasspure virtual
computeMassVector(const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)=0dftfe::operatorDFTClasspure virtual
computeNonLocalProjectorKetTimesXTimesV(distributedCPUMultiVec< dataTypes::number > &src, distributedCPUMultiVec< dataTypes::number > &projectorKetTimesVectorFlattened, const unsigned int numberWaveFunctions)=0dftfe::operatorDFTClasspure virtual
d_constraintMatrixDatadftfe::operatorDFTClassprotected
d_densityGaussQuadShapeFunctionGradientValuesdftfe::operatorDFTClassprotected
d_densityGaussQuadShapeFunctionValuesdftfe::operatorDFTClassprotected
d_densityGlQuadShapeFunctionValuesdftfe::operatorDFTClassprotected
d_FullflattenedArrayCellLocalProcIndexIdMapdftfe::operatorDFTClassprotected
d_inverseJacobiansNLPdftfe::operatorDFTClassprotected
d_invSqrtMassVectordftfe::operatorDFTClassprotected
d_matrix_free_datadftfe::operatorDFTClassprotected
d_mpi_communicatordftfe::operatorDFTClassprotected
d_shapeFunctionGradientValueNLPTransposeddftfe::operatorDFTClassprotected
d_shapeFunctionValueDensityTransposeddftfe::operatorDFTClassprotected
d_shapeFunctionValueNLPTransposeddftfe::operatorDFTClassprotected
fillGlobalArrayFromCellWaveFunctionMatrix(const unsigned int wavefunBlockSize, const std::vector< dataTypes::number > &cellWaveFunctionMatrix, distributedCPUMultiVec< dataTypes::number > &X)=0dftfe::operatorDFTClasspure virtual
getFlattenedArrayCellLocalProcIndexIdMap() const =0dftfe::operatorDFTClasspure virtual
getInteriorSurfaceNodesMapFromGlobalArray(std::vector< unsigned int > &globalArrayClassificationMap)=0dftfe::operatorDFTClasspure virtual
getInverseJacobiansNLP() const =0dftfe::operatorDFTClasspure virtual
getInvSqrtMassVector()dftfe::operatorDFTClass
getMatrixFreeData() constdftfe::operatorDFTClass
getMPICommunicator() constdftfe::operatorDFTClass
getOverloadedConstraintMatrix() constdftfe::operatorDFTClass
getParallelProjectorKetTimesBlockVector()=0dftfe::operatorDFTClasspure virtual
getShapeFunctionGradientValuesNLPTransposed() const =0dftfe::operatorDFTClasspure virtual
getShapeFunctionGradValuesDensityGaussQuad() const =0dftfe::operatorDFTClasspure virtual
getShapeFunctionValuesDensityGaussLobattoQuad() const =0dftfe::operatorDFTClasspure virtual
getShapeFunctionValuesDensityGaussQuad() const =0dftfe::operatorDFTClasspure virtual
getShapeFunctionValuesDensityTransposed() const =0dftfe::operatorDFTClasspure virtual
getShapeFunctionValuesNLPTransposed() const =0dftfe::operatorDFTClasspure virtual
HX(distributedCPUMultiVec< dataTypes::number > &X, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &Y, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0dftfe::operatorDFTClasspure virtual
HX(distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)=0dftfe::operatorDFTClasspure virtual
init()=0dftfe::operatorDFTClasspure virtual
initCellWaveFunctionMatrix(const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix)=0dftfe::operatorDFTClasspure virtual
initWithScalar(const unsigned int numberWaveFunctions, double scalarValue, std::vector< dataTypes::number > &cellWaveFunctionMatrix)=0dftfe::operatorDFTClasspure virtual
operatorDFTClass()dftfe::operatorDFTClassprotected
operatorDFTClass(const MPI_Comm &mpi_comm_replica, const dealii::MatrixFree< 3, double > &matrix_free_data, dftUtils::constraintMatrixInfo &constraintMatrixNone)dftfe::operatorDFTClassprotected
reinit(const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)=0dftfe::operatorDFTClasspure virtual
reinit(const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)=0dftfe::operatorDFTClasspure virtual
reinit(const unsigned int wavefunBlockSize)=0dftfe::operatorDFTClasspure virtual
reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)=0dftfe::operatorDFTClasspure virtual
setInvSqrtMassVector(distributedCPUVec< double > &X)dftfe::operatorDFTClass
XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)=0dftfe::operatorDFTClasspure virtual
XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0dftfe::operatorDFTClasspure virtual
XtHXMixedPrec(const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0dftfe::operatorDFTClasspure virtual
~operatorDFTClass()=0dftfe::operatorDFTClasspure virtual
+ + + + 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..a7bbe369a --- /dev/null +++ b/classdftfe_1_1operator_d_f_t_class.html @@ -0,0 +1,1817 @@ + + + + + + + +DFT-FE: dftfe::operatorDFTClass Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::operatorDFTClass Class 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:
+
+
+ + +dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~operatorDFTClass ()=0
 Destructor.
 
virtual void init ()=0
 initialize operatorClass
 
virtual void reinit (const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)=0
 initializes parallel layouts and index maps for HX, XtHX and creates a flattened array format for X
 
virtual void reinit (const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)=0
 
virtual void reinit (const unsigned int wavefunBlockSize)=0
 
virtual void reinitkPointSpinIndex (const unsigned int kPointIndex, const unsigned int spinIndex)=0
 
virtual void initCellWaveFunctionMatrix (const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix)=0
 
virtual void fillGlobalArrayFromCellWaveFunctionMatrix (const unsigned int wavefunBlockSize, const std::vector< dataTypes::number > &cellWaveFunctionMatrix, distributedCPUMultiVec< dataTypes::number > &X)=0
 
virtual void initWithScalar (const unsigned int numberWaveFunctions, double scalarValue, std::vector< dataTypes::number > &cellWaveFunctionMatrix)=0
 
virtual void axpby (double scalarA, double scalarB, const unsigned int numberWaveFunctions, const std::vector< dataTypes::number > &cellXWaveFunctionMatrix, std::vector< dataTypes::number > &cellYWaveFunctionMatrix)=0
 
virtual void getInteriorSurfaceNodesMapFromGlobalArray (std::vector< unsigned int > &globalArrayClassificationMap)=0
 
virtual void computeMassVector (const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)=0
 compute diagonal mass matrix
 
virtual void HX (distributedCPUMultiVec< dataTypes::number > &X, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &Y, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0
 Compute operator times multi-field vectors.
 
virtual void HX (distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)=0
 
virtual void computeNonLocalProjectorKetTimesXTimesV (distributedCPUMultiVec< dataTypes::number > &src, distributedCPUMultiVec< dataTypes::number > &projectorKetTimesVectorFlattened, const unsigned int numberWaveFunctions)=0
 
virtual void XtHX (const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)=0
 Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
 
virtual void XtHX (const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0
 Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
 
virtual void XtHXMixedPrec (const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0
 Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
 
void setInvSqrtMassVector (distributedCPUVec< double > &X)
 
distributedCPUVec< double > & getInvSqrtMassVector ()
 
dftUtils::constraintMatrixInfogetOverloadedConstraintMatrix () const
 Get constraint matrix eigen.
 
const dealii::MatrixFree< 3, double > * getMatrixFreeData () const
 Get matrix free data.
 
const MPI_Comm & getMPICommunicator () const
 Get relevant mpi communicator.
 
virtual const std::vector< dealii::types::global_dof_index > & getFlattenedArrayCellLocalProcIndexIdMap () const =0
 Get index map of flattened array to cell based numbering.
 
virtual distributedCPUMultiVec< dataTypes::number > & getParallelProjectorKetTimesBlockVector ()=0
 
virtual const std::vector< double > & getShapeFunctionValuesDensityGaussQuad () const =0
 
virtual const std::vector< double > & getShapeFunctionGradValuesDensityGaussQuad () const =0
 
virtual const std::vector< double > & getShapeFunctionValuesDensityGaussLobattoQuad () const =0
 
virtual const std::vector< double > & getShapeFunctionValuesDensityTransposed () const =0
 
virtual const std::vector< double > & getShapeFunctionValuesNLPTransposed () const =0
 
virtual const std::vector< double > & getShapeFunctionGradientValuesNLPTransposed () const =0
 
virtual const std::vector< double > & getInverseJacobiansNLP () const =0
 
+ + + + + + + +

+Protected Member Functions

 operatorDFTClass ()
 default Constructor.
 
 operatorDFTClass (const MPI_Comm &mpi_comm_replica, const dealii::MatrixFree< 3, double > &matrix_free_data, dftUtils::constraintMatrixInfo &constraintMatrixNone)
 Constructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

dftUtils::constraintMatrixInfod_constraintMatrixData
 
const dealii::MatrixFree< 3, double > * d_matrix_free_data
 
distributedCPUVec< double > d_invSqrtMassVector
 
std::vector< dealii::types::global_dof_index > d_FullflattenedArrayCellLocalProcIndexIdMap
 index map
 
std::vector< double > d_densityGaussQuadShapeFunctionValues
 
std::vector< double > d_densityGaussQuadShapeFunctionGradientValues
 
std::vector< double > d_densityGlQuadShapeFunctionValues
 
std::vector< double > d_shapeFunctionValueDensityTransposed
 
std::vector< double > d_shapeFunctionValueNLPTransposed
 
std::vector< double > d_shapeFunctionGradientValueNLPTransposed
 
std::vector< double > d_inverseJacobiansNLP
 
MPI_Comm d_mpi_communicator
 
+

Detailed Description

+

Base class for building the DFT operator and the action of operator on a vector.

+
Author
Phani Motamarri, Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ operatorDFTClass() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
dftfe::operatorDFTClass::operatorDFTClass ()
+
+protected
+
+ +

default Constructor.

+ +
+
+ +

◆ operatorDFTClass() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::operatorDFTClass::operatorDFTClass (const MPI_Comm & mpi_comm_replica,
const dealii::MatrixFree< 3, double > & matrix_free_data,
dftUtils::constraintMatrixInfoconstraintMatrixNone 
)
+
+protected
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ axpby()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::axpby (double scalarA,
double scalarB,
const unsigned int numberWaveFunctions,
const std::vector< dataTypes::number > & cellXWaveFunctionMatrix,
std::vector< dataTypes::number > & cellYWaveFunctionMatrix 
)
+
+pure virtual
+
+
+ +

◆ computeMassVector()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::computeMassVector (const dealii::DoFHandler< 3 > & dofHandler,
const dealii::AffineConstraints< double > & constraintMatrix,
distributedCPUVec< double > & sqrtMassVec,
distributedCPUVec< double > & invSqrtMassVec 
)
+
+pure virtual
+
+ +

compute diagonal mass matrix

+
Parameters
+ + + + + +
dofHandlerdofHandler associated with the current mesh
constraintMatrixconstraints to be used
sqrtMassVecoutput the value of square root of diagonal mass matrix
invSqrtMassVecoutput the value of inverse square root of diagonal mass matrix
+
+
+ +

Implemented in dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ computeNonLocalProjectorKetTimesXTimesV()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::computeNonLocalProjectorKetTimesXTimesV (distributedCPUMultiVec< dataTypes::number > & src,
distributedCPUMultiVec< dataTypes::number > & projectorKetTimesVectorFlattened,
const unsigned int numberWaveFunctions 
)
+
+pure virtual
+
+
+ +

◆ fillGlobalArrayFromCellWaveFunctionMatrix()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::fillGlobalArrayFromCellWaveFunctionMatrix (const unsigned int wavefunBlockSize,
const std::vector< dataTypes::number > & cellWaveFunctionMatrix,
distributedCPUMultiVec< dataTypes::number > & X 
)
+
+pure virtual
+
+
+ +

◆ getFlattenedArrayCellLocalProcIndexIdMap()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector< dealii::types::global_dof_index > & dftfe::operatorDFTClass::getFlattenedArrayCellLocalProcIndexIdMap () const
+
+pure virtual
+
+ +

Get index map of flattened array to cell based numbering.

+
Returns
pointer to constraint matrix eigen
+ +

Implemented in dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ getInteriorSurfaceNodesMapFromGlobalArray()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void dftfe::operatorDFTClass::getInteriorSurfaceNodesMapFromGlobalArray (std::vector< unsigned int > & globalArrayClassificationMap)
+
+pure virtual
+
+
+ +

◆ getInverseJacobiansNLP()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector< double > & dftfe::operatorDFTClass::getInverseJacobiansNLP () const
+
+pure virtual
+
+
+ +

◆ getInvSqrtMassVector()

+ +
+
+ + + + + + + +
distributedCPUVec< double > & dftfe::operatorDFTClass::getInvSqrtMassVector ()
+
+ +
+
+ +

◆ getMatrixFreeData()

+ +
+
+ + + + + + + +
const dealii::MatrixFree< 3, double > * dftfe::operatorDFTClass::getMatrixFreeData () const
+
+ +

Get matrix free data.

+
Returns
pointer to matrix free data
+ +
+
+ +

◆ getMPICommunicator()

+ +
+
+ + + + + + + +
const MPI_Comm & dftfe::operatorDFTClass::getMPICommunicator () const
+
+ +

Get relevant mpi communicator.

+
Returns
mpi communicator
+ +
+
+ +

◆ getOverloadedConstraintMatrix()

+ +
+
+ + + + + + + +
dftUtils::constraintMatrixInfo * dftfe::operatorDFTClass::getOverloadedConstraintMatrix () const
+
+ +

Get constraint matrix eigen.

+
Returns
pointer to constraint matrix eigen
+ +
+
+ +

◆ getParallelProjectorKetTimesBlockVector()

+ +
+
+ + + + + +
+ + + + + + + +
virtual distributedCPUMultiVec< dataTypes::number > & dftfe::operatorDFTClass::getParallelProjectorKetTimesBlockVector ()
+
+pure virtual
+
+
+ +

◆ getShapeFunctionGradientValuesNLPTransposed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector< double > & dftfe::operatorDFTClass::getShapeFunctionGradientValuesNLPTransposed () const
+
+pure virtual
+
+
+ +

◆ getShapeFunctionGradValuesDensityGaussQuad()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector< double > & dftfe::operatorDFTClass::getShapeFunctionGradValuesDensityGaussQuad () const
+
+pure virtual
+
+
+ +

◆ getShapeFunctionValuesDensityGaussLobattoQuad()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector< double > & dftfe::operatorDFTClass::getShapeFunctionValuesDensityGaussLobattoQuad () const
+
+pure virtual
+
+
+ +

◆ getShapeFunctionValuesDensityGaussQuad()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector< double > & dftfe::operatorDFTClass::getShapeFunctionValuesDensityGaussQuad () const
+
+pure virtual
+
+
+ +

◆ getShapeFunctionValuesDensityTransposed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector< double > & dftfe::operatorDFTClass::getShapeFunctionValuesDensityTransposed () const
+
+pure virtual
+
+
+ +

◆ getShapeFunctionValuesNLPTransposed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::vector< double > & dftfe::operatorDFTClass::getShapeFunctionValuesNLPTransposed () const
+
+pure virtual
+
+
+ +

◆ HX() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::HX (distributedCPUMultiVec< dataTypes::number > & src,
std::vector< dataTypes::number > & cellSrcWaveFunctionMatrix,
const unsigned int numberWaveFunctions,
const bool scaleFlag,
const double scalar,
const double scalarA,
const double scalarB,
distributedCPUMultiVec< dataTypes::number > & dst,
std::vector< dataTypes::number > & cellDstWaveFunctionMatrix 
)
+
+pure virtual
+
+
+ +

◆ HX() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::HX (distributedCPUMultiVec< dataTypes::number > & X,
const unsigned int numberComponents,
const bool scaleFlag,
const double scalar,
distributedCPUMultiVec< dataTypes::number > & Y,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+pure virtual
+
+ +

Compute operator times multi-field vectors.

+
Parameters
+ + + + +
XVector containing multi-wavefunction fields (though X does not change inside the function it is scaled and rescaled back to avoid duplication of memory and hence is not const)
numberComponentsnumber of wavefunctions associated with a given node
YVector containing multi-component fields after operator times vectors product
+
+
+ +

Implemented in dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::operatorDFTClass::init ()
+
+pure virtual
+
+ +

initialize operatorClass

+ +

Implemented in dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ initCellWaveFunctionMatrix()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::initCellWaveFunctionMatrix (const unsigned int numberWaveFunctions,
distributedCPUMultiVec< dataTypes::number > & X,
std::vector< dataTypes::number > & cellWaveFunctionMatrix 
)
+
+pure virtual
+
+
+ +

◆ initWithScalar()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::initWithScalar (const unsigned int numberWaveFunctions,
double scalarValue,
std::vector< dataTypes::number > & cellWaveFunctionMatrix 
)
+
+pure virtual
+
+
+ +

◆ reinit() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void dftfe::operatorDFTClass::reinit (const unsigned int wavefunBlockSize)
+
+pure virtual
+
+
+ +

◆ reinit() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::reinit (const unsigned int wavefunBlockSize,
distributedCPUMultiVec< dataTypes::number > & X,
bool flag 
)
+
+pure virtual
+
+
+ +

◆ reinit() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::reinit (const unsigned int wavefunBlockSize,
distributedCPUVec< dataTypes::number > & X,
bool flag 
)
+
+pure virtual
+
+ +

initializes parallel layouts and index maps for HX, XtHX and creates a flattened array format for X

+
Parameters
+ + + +
wavefunBlockSizenumber of wavefunction vector (block size of X).
flagcontrols the creation of flattened array format and index maps or only index maps
+
+
+
Returns
X format to store a multi-vector array in a flattened format with all the wavefunction values corresponding to a given node being stored contiguously
+ +

Implemented in dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ reinitkPointSpinIndex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::reinitkPointSpinIndex (const unsigned int kPointIndex,
const unsigned int spinIndex 
)
+
+pure virtual
+
+
+ +

◆ setInvSqrtMassVector()

+ +
+
+ + + + + + + + +
void dftfe::operatorDFTClass::setInvSqrtMassVector (distributedCPUVec< double > & X)
+
+ +
+
+ +

◆ XtHX() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::XtHX (const dataTypes::numberX,
const unsigned int numberComponents,
const unsigned int numberLocalDofs,
const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
dftfe::ScaLAPACKMatrix< dataTypes::number > & projHamPar,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+pure virtual
+
+ +

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
+
+
+ +

Implemented in dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ XtHX() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::XtHX (const dataTypes::numberX,
const unsigned int numberComponents,
const unsigned int numberLocalDofs,
std::vector< dataTypes::number > & ProjHam 
)
+
+pure virtual
+
+ +

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
+
+
+ +

Implemented in dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ XtHXMixedPrec()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass::XtHXMixedPrec (const dataTypes::numberX,
const unsigned int totalNumberComponents,
const unsigned int singlePrecComponents,
const unsigned int numberLocalDofs,
const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
dftfe::ScaLAPACKMatrix< dataTypes::number > & projHamPar,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false 
)
+
+pure virtual
+
+ +

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
+
+
+ +

Implemented in dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ ~operatorDFTClass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftfe::operatorDFTClass::~operatorDFTClass ()
+
+pure virtual
+
+ +

Destructor.

+ +
+
+

Member Data Documentation

+ +

◆ d_constraintMatrixData

+ +
+
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo* dftfe::operatorDFTClass::d_constraintMatrixData
+
+protected
+
+ +
+
+ +

◆ d_densityGaussQuadShapeFunctionGradientValues

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::operatorDFTClass::d_densityGaussQuadShapeFunctionGradientValues
+
+protected
+
+ +
+
+ +

◆ d_densityGaussQuadShapeFunctionValues

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::operatorDFTClass::d_densityGaussQuadShapeFunctionValues
+
+protected
+
+

density quad rule shape function data for FEOrder mesh with node index being the fastest index

+ +
+
+ +

◆ d_densityGlQuadShapeFunctionValues

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::operatorDFTClass::d_densityGlQuadShapeFunctionValues
+
+protected
+
+

FEOrderRhoNodal+1 Gauss Lobotto quadrature shape function data for FEOrder mesh with node index being the fastest index

+ +
+
+ +

◆ d_FullflattenedArrayCellLocalProcIndexIdMap

+ +
+
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::operatorDFTClass::d_FullflattenedArrayCellLocalProcIndexIdMap
+
+protected
+
+ +

index map

+ +
+
+ +

◆ d_inverseJacobiansNLP

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::operatorDFTClass::d_inverseJacobiansNLP
+
+protected
+
+ +
+
+ +

◆ d_invSqrtMassVector

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::operatorDFTClass::d_invSqrtMassVector
+
+protected
+
+ +
+
+ +

◆ d_matrix_free_data

+ +
+
+ + + + + +
+ + + + +
const dealii::MatrixFree<3, double>* dftfe::operatorDFTClass::d_matrix_free_data
+
+protected
+
+ +
+
+ +

◆ d_mpi_communicator

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::operatorDFTClass::d_mpi_communicator
+
+protected
+
+ +
+
+ +

◆ d_shapeFunctionGradientValueNLPTransposed

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::operatorDFTClass::d_shapeFunctionGradientValueNLPTransposed
+
+protected
+
+ +
+
+ +

◆ d_shapeFunctionValueDensityTransposed

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::operatorDFTClass::d_shapeFunctionValueDensityTransposed
+
+protected
+
+ +
+
+ +

◆ d_shapeFunctionValueNLPTransposed

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::operatorDFTClass::d_shapeFunctionValueNLPTransposed
+
+protected
+
+ +
+
+
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..cff7ed578e0c4e7e53ff542c5303a7c7d2523770 GIT binary patch literal 1117 zcmeAS@N?(olHy`uVBq!ia0y~yV5|YM12~w0q^^P;Bao5~@CkAK|NlRb`Qpvj(*8rs zEetdZB&MHvap1rKpm^}4%PW9#oFzei!3;n?7??B7zQVx3{KC`4F{Fa=?cBSURvGZP zmYW-&tNX8Rr*%Os*Y)F}7e62E5czdJ%OgL~OVd+xX^otSr!yZ!aI&C|jz&;3)Ct+rwRBoW6oe|B4o|9pFC%I@9k z+~a@w)Y&_}cgn~E;Oewn6PJkp_$TUhNgD3S{R;7u{&@%OQ(>L>Nma9BioT~KNbZr= z{wYC|g1mlOFnl;1!=S*}aDMV9MuoQ1s&APcI5g!Ml6LI!|IHxac#6HjAjp=1Wg<|v zV+ub5P&WgI(o<#!0iYsa@G%Iu0F@{N*-=Z$$H$+hr$*LIKfOuk^!cV%72!#LOf=`K zG<*D1k#sqweiCSvC)>j()1_1YE8pDrZrl3Zb;p9DtJm*}k8!{MFWY`n&4GYgn^61L zTO;S@%z1lJ;rZ@saw>PfpR}s}d3&)ezj5TrHT~<&zP=7!t8mh?_U+`AYPQ*@3%9j@ z@-LUInlr7Q|EJij*KK^iH?hw9e|z>7i^%tDiqp^7o!xt=>`qnQ#^+vh`=qA6{eHlG zcCP$=-Xznx@3W$}O;7#5vfp`9pH{u>Rkym`ciLCDMn~SASo{6W?&9#Mx$>vVWp}53 zS^8M})~%Vo7DhML?z_MHbF8oT`}Nf_`(5V2ZEQ{Svxzm;=VVU5PuimUWb29Vvy;#5Q2rSj zSo=DTH~u%5Ki`MXv1?lv^S=IS-&wPHQQ`Hsdgr~)pW2=_-)*0@-?29z7ahELuwq}f zcq9LB8P|U{&;5%IRQ|mCrjA?g$d8Du9s- z%kpo(c68n`wZ_^0ll> + + + + + + +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_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 dealii::MatrixFree< 3, double > &matrixFreeData, 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 std::map< dealii::CellId, std::vector< double > > &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..fd76fe382 --- /dev/null +++ b/classdftfe_1_1poisson_solver_problem.html @@ -0,0 +1,1611 @@ + + + + + + + +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 dealii::MatrixFree< 3, double > &matrixFreeData, 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 std::map< dealii::CellId, std::vector< double > > &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< double > d_diagonalA
 storage for diagonal of the A matrix
 
distributedCPUVec< double > d_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 std::map< dealii::CellId, std::vector< double > > * 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< double > d_cellShapeFunctionGradientIntegralFlattened
 shape function gradient integral storage
 
distributedCPUVec< double > d_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
 
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 dealii::MatrixFree< 3, double > & matrixFreeData,
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 std::map< dealii::CellId, std::vector< double > > & 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_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 std::map<dealii::CellId, std::vector<double> >* 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..199d9e5e014b1094044401f33172395e61abeb44 GIT binary patch literal 1131 zcmeAS@N?(olHy`uVBq!ia0y~yU3f*F8(FfeDDeT9L6`J1PUV@L(#+qo|%DQohy zOjcQ>eE)yv^>xew0qxsU-&;l5PTj_?!Z<(Vk$%xR%PGa@<~gaI6!83|xna_h-Avk^ zyR>19*Rc_ogERjtc`imtn{2ea8N&Bx#Z`AYPKWA{b>i>yu zUsIa{Rx^L)t?`~|mz}zD#@3|UuWqfbu>F~35cc}=Ua2YTpT@8Cn0)A9hHSl5&a~am zvK8D<%M)V#5?5_yH}^Zg;Tj|Jx^JS7Z%c=+IlCt^P4>nlpGkF9!q;vFKEGU>Z0fu? z_NQga>iE@P!m=$b_AHIDZ`r!n&THY6e-lo8d$~c%da~^1fZgYGdS%b#MNTTY@_bdP zneA(S_V9U{N1WHlo)lhlx7uk^->-~(+nM`vn8YJ)OTS`yeIa^3$Lligoa;vm?!Iq6 z%e(*f_x$G>;fHQ+u%5MUuGpHdkG2Qy=hF84m&+P9sU$o>)w3Ks<2rNpIm`BsPQ^k|ZbJBdK)hau+H+W6j4QKFNdwzb(H+@g53zb^)%pXpDTNLY+HUI5@@yfXT zTfgqEFBf`Pdi{~&Nt^K5Z#L+8=nn1%UYlQfuFtgpW4yCewDY`J0v5=IgQ2-qjs> zugki{UiUO)?zUa^?Xphb>USC$Z}Z#_>OM|8{xvr1_B>8I%LDt1b9Hj7-_%rXNRPN( zXLtT8!v}-Cxd$TmS83?>3_id`+wpO{E~n3*FR*nN^MyAMz0``NqL$m k@db*w*NxCvT~W_4H)78&qol`;+00T-N{r~^~ 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..9606bce56 --- /dev/null +++ b/classdftfe_1_1pseudo_utils_1_1_periodic_table-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::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..1ea42b015 --- /dev/null +++ b/classdftfe_1_1pseudo_utils_1_1_periodic_table.html @@ -0,0 +1,313 @@ + + + + + + + +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, int > zmap
 
+

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_1pseudo_utils_1_1xml_todftfe_parser-members.html b/classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser-members.html new file mode 100644 index 000000000..5addbe2af --- /dev/null +++ b/classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser-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::pseudoUtils::xmlTodftfeParser Member List
+
+ + + + + diff --git a/classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html b/classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html new file mode 100644 index 000000000..ff47f325c --- /dev/null +++ b/classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html @@ -0,0 +1,642 @@ + + + + + + + +DFT-FE: dftfe::pseudoUtils::xmlTodftfeParser Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::pseudoUtils::xmlTodftfeParser Class Reference
+
+
+ +

converts pseudopotential file from xml format to dftfe format + More...

+ +

#include <xmlTodftfeParser.h>

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

+Public Member Functions

 xmlTodftfeParser ()
 
 ~xmlTodftfeParser ()
 
bool parseFile (const std::string &filePath)
 parse a given xml pseudopotential file
 
bool outputData (const std::string &filePath)
 output the parsed xml pseudopotential file into dat files required by dftfe code
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

xmlDoc * doc
 
xmlNode * root
 
double mesh_spacing
 
std::vector< std::string > local_potential
 
std::vector< std::string > density
 
std::vector< std::string > coreDensity
 
std::vector< std::string > mesh
 
std::vector< std::tuple< size_t, size_t, std::vector< std::string > > > projectors
 
std::vector< std::tuple< size_t, std::string, std::vector< std::string > > > PSwfc
 
std::vector< std::tuple< size_t, size_t, size_t, double > > d_ij
 
std::ofstream loc_pot
 
std::ofstream dense
 
std::ofstream denom
 
std::ofstream l1
 
std::ofstream l2
 
std::ofstream l3
 
std::ofstream ad_file
 
std::ofstream pseudo
 
+

Detailed Description

+

converts pseudopotential file from xml format to dftfe format

+

This class parses the xmlfile and identifies appropriate tags and converts into file formats which can be read by dftfe code

+
Author
Shukan Parekh, Phani Motamarri
+

Constructor & Destructor Documentation

+ +

◆ xmlTodftfeParser()

+ +
+
+ + + + + + + +
dftfe::pseudoUtils::xmlTodftfeParser::xmlTodftfeParser ()
+
+

class constructor

+ +
+
+ +

◆ ~xmlTodftfeParser()

+ +
+
+ + + + + + + +
dftfe::pseudoUtils::xmlTodftfeParser::~xmlTodftfeParser ()
+
+

class destructor

+ +
+
+

Member Function Documentation

+ +

◆ outputData()

+ +
+
+ + + + + + + + +
bool dftfe::pseudoUtils::xmlTodftfeParser::outputData (const std::string & filePath)
+
+ +

output the parsed xml pseudopotential file into dat files required by dftfe code

+
Parameters
+ + +
filePathlocation to write the data
+
+
+ +
+
+ +

◆ parseFile()

+ +
+
+ + + + + + + + +
bool dftfe::pseudoUtils::xmlTodftfeParser::parseFile (const std::string & filePath)
+
+ +

parse a given xml pseudopotential file

+
Parameters
+ + +
filePathlocation of the xml file
+
+
+ +
+
+

Member Data Documentation

+ +

◆ ad_file

+ +
+
+ + + + + +
+ + + + +
std::ofstream dftfe::pseudoUtils::xmlTodftfeParser::ad_file
+
+private
+
+ +
+
+ +

◆ coreDensity

+ +
+
+ + + + + +
+ + + + +
std::vector<std::string> dftfe::pseudoUtils::xmlTodftfeParser::coreDensity
+
+private
+
+ +
+
+ +

◆ d_ij

+ +
+
+ + + + + +
+ + + + +
std::vector<std::tuple<size_t, size_t, size_t, double> > dftfe::pseudoUtils::xmlTodftfeParser::d_ij
+
+private
+
+ +
+
+ +

◆ denom

+ +
+
+ + + + + +
+ + + + +
std::ofstream dftfe::pseudoUtils::xmlTodftfeParser::denom
+
+private
+
+ +
+
+ +

◆ dense

+ +
+
+ + + + + +
+ + + + +
std::ofstream dftfe::pseudoUtils::xmlTodftfeParser::dense
+
+private
+
+ +
+
+ +

◆ density

+ +
+
+ + + + + +
+ + + + +
std::vector<std::string> dftfe::pseudoUtils::xmlTodftfeParser::density
+
+private
+
+ +
+
+ +

◆ doc

+ +
+
+ + + + + +
+ + + + +
xmlDoc* dftfe::pseudoUtils::xmlTodftfeParser::doc
+
+private
+
+ +
+
+ +

◆ l1

+ +
+
+ + + + + +
+ + + + +
std::ofstream dftfe::pseudoUtils::xmlTodftfeParser::l1
+
+private
+
+ +
+
+ +

◆ l2

+ +
+
+ + + + + +
+ + + + +
std::ofstream dftfe::pseudoUtils::xmlTodftfeParser::l2
+
+private
+
+ +
+
+ +

◆ l3

+ +
+
+ + + + + +
+ + + + +
std::ofstream dftfe::pseudoUtils::xmlTodftfeParser::l3
+
+private
+
+ +
+
+ +

◆ loc_pot

+ +
+
+ + + + + +
+ + + + +
std::ofstream dftfe::pseudoUtils::xmlTodftfeParser::loc_pot
+
+private
+
+ +
+
+ +

◆ local_potential

+ +
+
+ + + + + +
+ + + + +
std::vector<std::string> dftfe::pseudoUtils::xmlTodftfeParser::local_potential
+
+private
+
+ +
+
+ +

◆ mesh

+ +
+
+ + + + + +
+ + + + +
std::vector<std::string> dftfe::pseudoUtils::xmlTodftfeParser::mesh
+
+private
+
+ +
+
+ +

◆ mesh_spacing

+ +
+
+ + + + + +
+ + + + +
double dftfe::pseudoUtils::xmlTodftfeParser::mesh_spacing
+
+private
+
+ +
+
+ +

◆ projectors

+ +
+
+ + + + + +
+ + + + +
std::vector<std::tuple<size_t, size_t, std::vector<std::string> > > dftfe::pseudoUtils::xmlTodftfeParser::projectors
+
+private
+
+ +
+
+ +

◆ pseudo

+ +
+
+ + + + + +
+ + + + +
std::ofstream dftfe::pseudoUtils::xmlTodftfeParser::pseudo
+
+private
+
+ +
+
+ +

◆ PSwfc

+ +
+
+ + + + + +
+ + + + +
std::vector<std::tuple<size_t, std::string, std::vector<std::string> > > dftfe::pseudoUtils::xmlTodftfeParser::PSwfc
+
+private
+
+ +
+
+ +

◆ root

+ +
+
+ + + + + +
+ + + + +
xmlNode* dftfe::pseudoUtils::xmlTodftfeParser::root
+
+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..5efd7aaad --- /dev/null +++ b/classdftfe_1_1run_parameters-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::runParameters Member List
+
+ + + + + diff --git a/classdftfe_1_1run_parameters.html b/classdftfe_1_1run_parameters.html new file mode 100644 index 000000000..151e9212c --- /dev/null +++ b/classdftfe_1_1run_parameters.html @@ -0,0 +1,494 @@ + + + + + + + +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
 
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
+
+ +
+
+ +

◆ 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..9cc79c0f7 --- /dev/null +++ b/classdftfe_1_1symmetry_class-members.html @@ -0,0 +1,142 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::symmetryClass< FEOrder, FEOrderElectro > Member List
+
+
+ +

This is the complete list of members for dftfe::symmetryClass< FEOrder, FEOrderElectro >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cellMapTabledftfe::symmetryClass< FEOrder, FEOrderElectro >private
clearMaps()dftfe::symmetryClass< FEOrder, FEOrderElectro >
computeAndSymmetrize_rhoOut()dftfe::symmetryClass< FEOrder, FEOrderElectro >
computeLocalrhoOut()dftfe::symmetryClass< FEOrder, FEOrderElectro >
computing_timerdftfe::symmetryClass< FEOrder, FEOrderElectro >private
crys2cart(dealii::Point< 3 > p, int flag)dftfe::symmetryClass< FEOrder, FEOrderElectro >
d_mpiCommParentdftfe::symmetryClass< FEOrder, FEOrderElectro >private
dealIICellIddftfe::symmetryClass< FEOrder, FEOrderElectro >private
dftClass< FEOrder, FEOrderElectro >dftfe::symmetryClass< FEOrder, FEOrderElectro >friend
dftPtrdftfe::symmetryClass< FEOrder, FEOrderElectro >private
FEdftfe::symmetryClass< FEOrder, FEOrderElectro >private
globalCellIddftfe::symmetryClass< FEOrder, FEOrderElectro >private
gradRhoRecvddftfe::symmetryClass< FEOrder, FEOrderElectro >private
groupOffsetsdftfe::symmetryClass< FEOrder, FEOrderElectro >private
initSymmetry()dftfe::symmetryClass< FEOrder, FEOrderElectro >
interpoolcommdftfe::symmetryClass< FEOrder, FEOrderElectro >private
mappedGroupdftfe::symmetryClass< FEOrder, FEOrderElectro >private
mappedGroupRecvd0dftfe::symmetryClass< FEOrder, FEOrderElectro >private
mappedGroupRecvd1dftfe::symmetryClass< FEOrder, FEOrderElectro >private
mappedGroupRecvd2dftfe::symmetryClass< FEOrder, FEOrderElectro >private
mappedGroupSend0dftfe::symmetryClass< FEOrder, FEOrderElectro >private
mappedGroupSend1dftfe::symmetryClass< FEOrder, FEOrderElectro >private
mappedGroupSend2dftfe::symmetryClass< FEOrder, FEOrderElectro >private
mpi_communicatordftfe::symmetryClass< FEOrder, FEOrderElectro >private
mpi_offsets0dftfe::symmetryClass< FEOrder, FEOrderElectro >private
mpi_offsets1dftfe::symmetryClass< FEOrder, FEOrderElectro >private
mpi_scatter_offsetdftfe::symmetryClass< FEOrder, FEOrderElectro >private
mpi_scatterGrad_offsetdftfe::symmetryClass< FEOrder, FEOrderElectro >private
mpiGrad_offsets1dftfe::symmetryClass< FEOrder, FEOrderElectro >private
n_mpi_processesdftfe::symmetryClass< FEOrder, FEOrderElectro >private
numSymmdftfe::symmetryClass< FEOrder, FEOrderElectro >private
numSymmUnderGroupdftfe::symmetryClass< FEOrder, FEOrderElectro >private
ownerProcGlobaldftfe::symmetryClass< FEOrder, FEOrderElectro >private
pcoutdftfe::symmetryClass< FEOrder, FEOrderElectro >private
recv_buf_sizedftfe::symmetryClass< FEOrder, FEOrderElectro >private
recv_sizedftfe::symmetryClass< FEOrder, FEOrderElectro >private
recv_size0dftfe::symmetryClass< FEOrder, FEOrderElectro >private
recv_size1dftfe::symmetryClass< FEOrder, FEOrderElectro >private
recvdData0dftfe::symmetryClass< FEOrder, FEOrderElectro >private
recvdData1dftfe::symmetryClass< FEOrder, FEOrderElectro >private
recvdData2dftfe::symmetryClass< FEOrder, FEOrderElectro >private
recvdData3dftfe::symmetryClass< FEOrder, FEOrderElectro >private
recvGrad_size1dftfe::symmetryClass< FEOrder, FEOrderElectro >private
rhoRecvddftfe::symmetryClass< FEOrder, FEOrderElectro >private
send_buf_sizedftfe::symmetryClass< FEOrder, FEOrderElectro >private
send_scatter_sizedftfe::symmetryClass< FEOrder, FEOrderElectro >private
send_scatterGrad_sizedftfe::symmetryClass< FEOrder, FEOrderElectro >private
symmetryClass(dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &_interpoolcomm)dftfe::symmetryClass< FEOrder, FEOrderElectro >
symmMatdftfe::symmetryClass< FEOrder, FEOrderElectro >private
symmUnderGroupdftfe::symmetryClass< FEOrder, FEOrderElectro >private
this_mpi_processdftfe::symmetryClass< FEOrder, FEOrderElectro >private
totPointsdftfe::symmetryClass< FEOrder, FEOrderElectro >private
translationdftfe::symmetryClass< FEOrder, FEOrderElectro >private
+ + + + diff --git a/classdftfe_1_1symmetry_class.html b/classdftfe_1_1symmetry_class.html new file mode 100644 index 000000000..e19894c93 --- /dev/null +++ b/classdftfe_1_1symmetry_class.html @@ -0,0 +1,1518 @@ + + + + + + + +DFT-FE: dftfe::symmetryClass< FEOrder, FEOrderElectro > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::symmetryClass< FEOrder, FEOrderElectro > 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 > *_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 > * 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< int > numSymmUnderGroup
 
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, int > globalCellId
 
std::vector< int > ownerProcGlobal
 
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< int > mpi_scatter_offset
 
std::vector< int > send_scatter_size
 
std::vector< int > recv_size
 
std::vector< int > mpi_scatterGrad_offset
 
std::vector< int > send_scatterGrad_size
 
std::vector< int > mpi_offsets0
 
std::vector< int > mpi_offsets1
 
std::vector< int > mpiGrad_offsets1
 
std::vector< int > recvdData0
 
std::vector< int > recvdData2
 
std::vector< int > recvdData3
 
std::vector< std::vector< double > > recvdData1
 
std::vector< int > recv_size0
 
std::vector< int > recv_size1
 
std::vector< int > recvGrad_size1
 
+ + + +

+Friends

class dftClass< FEOrder, FEOrderElectro >
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro>
+class dftfe::symmetryClass< FEOrder, FEOrderElectro >

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::symmetryClass< FEOrder, FEOrderElectro >::symmetryClass (dftClass< FEOrder, FEOrderElectro > * _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>
+ + + + + + + +
void dftfe::symmetryClass< FEOrder, FEOrderElectro >::clearMaps ()
+
+

Wipes out mapping tables between relaxation steps

+ +
+
+ +

◆ computeAndSymmetrize_rhoOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::symmetryClass< FEOrder, FEOrderElectro >::computeAndSymmetrize_rhoOut ()
+
+

computes total density by summing over all the symmetry transformed points

+ +
+
+ +

◆ computeLocalrhoOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::symmetryClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + + + + + + + + + + + + +
dealii::Point< 3 > dftfe::symmetryClass< FEOrder, FEOrderElectro >::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>
+ + + + + + + +
void dftfe::symmetryClass< FEOrder, FEOrderElectro >::initSymmetry ()
+
+

Main driver routine to generate and communicate mapping tables

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ dftClass< FEOrder, FEOrderElectro >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
friend class dftClass< FEOrder, FEOrderElectro >
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ cellMapTable

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<std::tuple<int, std::vector<double>, int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::cellMapTable
+
+private
+
+

Data members required for storing mapping tables locally

+ +
+
+ +

◆ computing_timer

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::symmetryClass< FEOrder, FEOrderElectro >::computing_timer
+
+private
+
+

compute-time logger

+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro >::d_mpiCommParent
+
+private
+
+

parallel objects

+ +
+
+ +

◆ dealIICellId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<int, typename dealii::DoFHandler<3>::active_cell_iterator> dftfe::symmetryClass< FEOrder, FEOrderElectro >::dealIICellId
+
+private
+
+ +
+
+ +

◆ dftPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftClass<FEOrder, FEOrderElectro>* dftfe::symmetryClass< FEOrder, FEOrderElectro >::dftPtr
+
+private
+
+ +
+
+ +

◆ FE

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::FE_Q<3> dftfe::symmetryClass< FEOrder, FEOrderElectro >::FE
+
+private
+
+

dealii based FE data structres

+ +
+
+ +

◆ globalCellId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<dealii::CellId, int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::globalCellId
+
+private
+
+ +
+
+ +

◆ gradRhoRecvd

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::gradRhoRecvd
+
+private
+
+ +
+
+ +

◆ groupOffsets

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::groupOffsets
+
+private
+
+ +
+
+ +

◆ interpoolcomm

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro >::interpoolcomm
+
+private
+
+ +
+
+ +

◆ mappedGroup

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::tuple<int, int, int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::mappedGroup
+
+private
+
+ +
+
+ +

◆ mappedGroupRecvd0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::mappedGroupRecvd0
+
+private
+
+ +
+
+ +

◆ mappedGroupRecvd1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::mappedGroupRecvd1
+
+private
+
+ +
+
+ +

◆ mappedGroupRecvd2

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::mappedGroupRecvd2
+
+private
+
+ +
+
+ +

◆ mappedGroupSend0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::mappedGroupSend0
+
+private
+
+

Data members required for communicating mapping tables

+ +
+
+ +

◆ mappedGroupSend1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<std::vector<double> > > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::mappedGroupSend1
+
+private
+
+ +
+
+ +

◆ mappedGroupSend2

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::mappedGroupSend2
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro >::mpi_communicator
+
+private
+
+ +
+
+ +

◆ mpi_offsets0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::mpi_offsets0
+
+private
+
+ +
+
+ +

◆ mpi_offsets1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::mpi_offsets1
+
+private
+
+ +
+
+ +

◆ mpi_scatter_offset

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::mpi_scatter_offset
+
+private
+
+ +
+
+ +

◆ mpi_scatterGrad_offset

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::mpi_scatterGrad_offset
+
+private
+
+ +
+
+ +

◆ mpiGrad_offsets1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::mpiGrad_offsets1
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ numSymm

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro >::numSymm
+
+private
+
+ +
+
+ +

◆ numSymmUnderGroup

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::numSymmUnderGroup
+
+private
+
+ +
+
+ +

◆ ownerProcGlobal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::ownerProcGlobal
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::symmetryClass< FEOrder, FEOrderElectro >::pcout
+
+private
+
+ +
+
+ +

◆ recv_buf_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::recv_buf_size
+
+private
+
+ +
+
+ +

◆ recv_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::recv_size
+
+private
+
+ +
+
+ +

◆ recv_size0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::recv_size0
+
+private
+
+ +
+
+ +

◆ recv_size1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::recv_size1
+
+private
+
+ +
+
+ +

◆ recvdData0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::recvdData0
+
+private
+
+ +
+
+ +

◆ recvdData1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::symmetryClass< FEOrder, FEOrderElectro >::recvdData1
+
+private
+
+ +
+
+ +

◆ recvdData2

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::recvdData2
+
+private
+
+ +
+
+ +

◆ recvdData3

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::recvdData3
+
+private
+
+ +
+
+ +

◆ recvGrad_size1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::recvGrad_size1
+
+private
+
+ +
+
+ +

◆ rhoRecvd

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::rhoRecvd
+
+private
+
+ +
+
+ +

◆ send_buf_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::send_buf_size
+
+private
+
+ +
+
+ +

◆ send_scatter_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::send_scatter_size
+
+private
+
+ +
+
+ +

◆ send_scatterGrad_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro >::send_scatterGrad_size
+
+private
+
+ +
+
+ +

◆ symmMat

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<double> > > dftfe::symmetryClass< FEOrder, FEOrderElectro >::symmMat
+
+private
+
+

Space group symmetry related data

+ +
+
+ +

◆ symmUnderGroup

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::symmetryClass< FEOrder, FEOrderElectro >::symmUnderGroup
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro >::this_mpi_process
+
+private
+
+ +
+
+ +

◆ totPoints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro >::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>
+ + + + + +
+ + + + +
double dftfe::symmetryClass< FEOrder, FEOrderElectro >::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..2cc304855 --- /dev/null +++ b/classdftfe_1_1triangulation_manager-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::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, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, 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_serialTriangulationElectrostaticsdftfe::triangulationManagerprivate
d_serialTriangulationUnmoveddftfe::triangulationManagerprivate
d_triangulationElectrostaticsDispdftfe::triangulationManagerprivate
d_triangulationElectrostaticsForcedftfe::triangulationManagerprivate
d_triangulationElectrostaticsRhodftfe::triangulationManagerprivate
generateAutomaticMeshApriori(const dealii::DoFHandler< 3 > &dofHandler, dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, const std::vector< distributedCPUVec< double > > &eigenVectorsArrayIn, const unsigned int FEOrder, const bool generateElectrostaticsTria)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, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulationElectrostatics, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, const bool generateSerialTria=false)dftfe::triangulationManagerprivate
generateResetMeshes(const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria, const bool generateElectrostaticsTria)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, const bool generateElectrostaticsTria)dftfe::triangulationManager
getElectrostaticsMeshDisp()dftfe::triangulationManager
getElectrostaticsMeshForce()dftfe::triangulationManager
getElectrostaticsMeshRho()dftfe::triangulationManager
getParallelMeshMoved()dftfe::triangulationManager
getParallelMeshUnmoved()dftfe::triangulationManager
getSerialMeshElectrostatics()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, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, 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..b4691cac6 --- /dev/null +++ b/classdftfe_1_1triangulation_manager.html @@ -0,0 +1,1796 @@ + + + + + + + +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, const bool generateElectrostaticsTria)
 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, const bool generateElectrostaticsTria)
 returns generates A-posteriori refined mesh
 
dealii::parallel::distributed::Triangulation< 3 > & getSerialMeshUnmoved ()
 returns constant reference to serial unmoved triangulation
 
dealii::parallel::distributed::Triangulation< 3 > & getSerialMeshElectrostatics ()
 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
 
dealii::parallel::distributed::Triangulation< 3 > & getElectrostaticsMeshRho ()
 returns constant reference to triangulation to compute electrostatics
 
dealii::parallel::distributed::Triangulation< 3 > & getElectrostaticsMeshDisp ()
 returns constant reference to triangulation to compute electrostatics
 
dealii::parallel::distributed::Triangulation< 3 > & getElectrostaticsMeshForce ()
 returns constant reference to triangulation to compute electrostatics
 
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, const bool generateElectrostaticsTria)
 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, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulationElectrostatics, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, 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, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, 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, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, 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_triangulationElectrostaticsRho
 
dealii::parallel::distributed::Triangulation< 3 > d_triangulationElectrostaticsDisp
 
dealii::parallel::distributed::Triangulation< 3 > d_triangulationElectrostaticsForce
 
dealii::parallel::distributed::Triangulation< 3 > d_serialTriangulationUnmoved
 
dealii::parallel::distributed::Triangulation< 3 > d_serialTriangulationElectrostatics
 
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< int > d_imageIds
 
std::vector< double > d_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 dftParametersdftParams 
)
+
+ +

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,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationRho,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationDisp,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationForce,
const bool generateElectrostaticsTria,
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,
const bool generateElectrostaticsTria 
)
+
+ +

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
generateElectrostaticsTriarequired for generating electrostatics triangulation
+
+
+ +
+
+ +

◆ 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,
dealii::parallel::distributed::Triangulation< 3 > & serialTriangulationElectrostatics,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationRho,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationDisp,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationForce,
const bool generateElectrostaticsTria,
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,
const bool generateElectrostaticsTria 
)
+
+ +

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,
const bool generateElectrostaticsTria 
)
+
+ +

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
generateElectrostaticsTriabool to toggle to generate separate tria for electrostatics
+
+
+ +
+
+ +

◆ getElectrostaticsMeshDisp()

+ +
+
+ + + + + + + +
dealii::parallel::distributed::Triangulation< 3 > & dftfe::triangulationManager::getElectrostaticsMeshDisp ()
+
+ +

returns constant reference to triangulation to compute electrostatics

+ +
+
+ +

◆ getElectrostaticsMeshForce()

+ +
+
+ + + + + + + +
dealii::parallel::distributed::Triangulation< 3 > & dftfe::triangulationManager::getElectrostaticsMeshForce ()
+
+ +

returns constant reference to triangulation to compute electrostatics

+ +
+
+ +

◆ getElectrostaticsMeshRho()

+ +
+
+ + + + + + + +
dealii::parallel::distributed::Triangulation< 3 > & dftfe::triangulationManager::getElectrostaticsMeshRho ()
+
+ +

returns constant reference to triangulation to compute electrostatics

+ +
+
+ +

◆ 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

+ +
+
+ +

◆ getSerialMeshElectrostatics()

+ +
+
+ + + + + + + +
dealii::parallel::distributed::Triangulation< 3 > & dftfe::triangulationManager::getSerialMeshElectrostatics ()
+
+ +

returns constant reference to serial 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,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationRho,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationDisp,
dealii::parallel::distributed::Triangulation< 3 > & electrostaticsTriangulationForce,
const bool generateElectrostaticsTria,
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_serialTriangulationElectrostatics

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3> dftfe::triangulationManager::d_serialTriangulationElectrostatics
+
+private
+
+ +
+
+ +

◆ d_serialTriangulationUnmoved

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3> dftfe::triangulationManager::d_serialTriangulationUnmoved
+
+private
+
+ +
+
+ +

◆ d_triangulationElectrostaticsDisp

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3> dftfe::triangulationManager::d_triangulationElectrostaticsDisp
+
+private
+
+ +
+
+ +

◆ d_triangulationElectrostaticsForce

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3> dftfe::triangulationManager::d_triangulationElectrostaticsForce
+
+private
+
+ +
+
+ +

◆ d_triangulationElectrostaticsRho

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3> dftfe::triangulationManager::d_triangulationElectrostaticsRho
+
+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..8bb71c85a --- /dev/null +++ b/classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels-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::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< ValueType, memorySpace > &recvBuffer, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, const size_type locallyOwnedSize, const size_type ghostSize, MemoryStorage< double, memorySpace > &tempDoubleRealDataArray, MemoryStorage< double, memorySpace > &tempDoubleImagDataArray, MemoryStorage< float, memorySpace > &tempFloatRealDataArray, MemoryStorage< float, memorySpace > &tempFloatImagDataArray, MemoryStorage< ValueType, memorySpace > &dataArray)dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >static
gatherLocallyOwnedEntriesSendBufferToTargetProcs(const MemoryStorage< ValueType, memorySpace > &dataArray, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, MemoryStorage< ValueType, 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..28c332b7e --- /dev/null +++ b/classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html @@ -0,0 +1,300 @@ + + + + + + + +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

static void gatherLocallyOwnedEntriesSendBufferToTargetProcs (const MemoryStorage< ValueType, memorySpace > &dataArray, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, MemoryStorage< ValueType, memorySpace > &sendBuffer)
 Function template for architecture adaptable gather kernel to send buffer.
 
static void accumAddLocallyOwnedContrRecvBufferFromTargetProcs (const MemoryStorage< ValueType, memorySpace > &recvBuffer, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, const size_type locallyOwnedSize, const size_type ghostSize, MemoryStorage< double, memorySpace > &tempDoubleRealDataArray, MemoryStorage< double, memorySpace > &tempDoubleImagDataArray, MemoryStorage< float, memorySpace > &tempFloatRealDataArray, MemoryStorage< float, memorySpace > &tempFloatImagDataArray, MemoryStorage< ValueType, memorySpace > &dataArray)
 Function template for architecture adaptable accumlate kernel from recv buffer.
 
+

Member Typedef Documentation

+ +

◆ SizeTypeVector

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >::SizeTypeVector = utils::MemoryStorage<size_type, memorySpace>
+
+ +
+
+

Member Function Documentation

+ +

◆ accumAddLocallyOwnedContrRecvBufferFromTargetProcs()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >::accumAddLocallyOwnedContrRecvBufferFromTargetProcs (const MemoryStorage< ValueType, memorySpace > & recvBuffer,
const SizeTypeVectorownedLocalIndicesForTargetProcs,
const size_type blockSize,
const size_type locallyOwnedSize,
const size_type ghostSize,
MemoryStorage< double, memorySpace > & tempDoubleRealDataArray,
MemoryStorage< double, memorySpace > & tempDoubleImagDataArray,
MemoryStorage< float, memorySpace > & tempFloatRealDataArray,
MemoryStorage< float, memorySpace > & tempFloatImagDataArray,
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
+
+
+ +
+
+ +

◆ gatherLocallyOwnedEntriesSendBufferToTargetProcs()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >::gatherLocallyOwnedEntriesSendBufferToTargetProcs (const MemoryStorage< ValueType, memorySpace > & dataArray,
const SizeTypeVectorownedLocalIndicesForTargetProcs,
const size_type blockSize,
MemoryStorage< ValueType, 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..b75c22026 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_manager-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::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..06696798b --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_manager.html @@ -0,0 +1,215 @@ + + + + + + + +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 (ValueTypeptr)
+
+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..c091e7059 --- /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,92 @@ + + + + + + + +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..ffafa833a --- /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,215 @@ + + + + + + + +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 (ValueTypeptr)
+
+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..8766057e6 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_storage-members.html @@ -0,0 +1,129 @@ + + + + + + + +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(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..c4598014b --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_storage.html @@ -0,0 +1,1584 @@ + + + + + + + +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 ValueType * pointer
 
typedef ValueType & reference
 
typedef const ValueType & const_reference
 
typedef ValueType * iterator
 
typedef const ValueType * const_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.
 
ValueType * data () noexcept
 Return the raw pointer to the Vector.
 
const ValueType * data () 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 (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

ValueType * d_data = nullptr
 
std::size_t d_size = 0
 
+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
typedef const ValueType* dftfe::utils::MemoryStorage< ValueType, memorySpace >::const_iterator
+
+ +
+
+ +

◆ const_reference

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
typedef const ValueType& dftfe::utils::MemoryStorage< ValueType, memorySpace >::const_reference
+
+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
typedef ValueType* dftfe::utils::MemoryStorage< ValueType, memorySpace >::iterator
+
+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
typedef ValueType* dftfe::utils::MemoryStorage< ValueType, memorySpace >::pointer
+
+ +
+
+ +

◆ reference

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
typedef ValueType& dftfe::utils::MemoryStorage< ValueType, memorySpace >::reference
+
+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + +
typedef ValueType dftfe::utils::MemoryStorage< ValueType, memorySpace >::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]

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

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()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
dftfe::utils::MemoryStorage< ValueType, memorySpace >::~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>
+ + + + + + + + +
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() [3/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() [4/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() [5/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
+
+
+ +
+
+ +

◆ copyFrom() [6/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceSrc>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyFrom (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
+
+
+ +
+
+ +

◆ 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]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
iterator dftfe::utils::MemoryStorage< ValueType, memorySpace >::end ()
+
+ +

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]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
MemoryStorage & dftfe::utils::MemoryStorage< ValueType, memorySpace >::operator= (const MemoryStorage< ValueType, memorySpace > & rhs)
+
+ +

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()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::swap (MemoryStorage< ValueType, memorySpace > & rhs)
+
+ +
+
+

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..24260667b --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_transfer-members.html @@ -0,0 +1,90 @@ + + + + + + + +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..edd8da31c --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_transfer.html @@ -0,0 +1,159 @@ + + + + + + + +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..4a7850311 --- /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,90 @@ + + + + + + + +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..afc08d898 --- /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,146 @@ + + + + + + + +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..c97e07067 --- /dev/null +++ b/classdftfe_1_1utils_1_1_optimized_index_set-members.html @@ -0,0 +1,97 @@ + + + + + + + +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..efc8bb891 --- /dev/null +++ b/classdftfe_1_1utils_1_1_optimized_index_set.html @@ -0,0 +1,341 @@ + + + + + + + +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_typepos,
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..6dc0b01b6 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p-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::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_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_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 >
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..75c127c44 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html @@ -0,0 +1,663 @@ + + + + + + + +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
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::shared_ptr< const MPIPatternP2P< memorySpace > > d_mpiPatternP2P
 
size_type d_blockSize
 
size_type d_locallyOwnedSize
 
size_type d_ghostSize
 
MemoryStorage< ValueType, memorySpace > d_sendRecvBuffer
 
MemoryStorage< double, memorySpace > d_tempDoubleRealArrayForAtomics
 
MemoryStorage< double, memorySpace > d_tempDoubleImagArrayForAtomics
 
MemoryStorage< float, memorySpace > d_tempFloatRealArrayForAtomics
 
MemoryStorage< float, memorySpace > d_tempFloatImagArrayForAtomics
 
std::vector< MPI_Request > d_requestsUpdateGhostValues
 
std::vector< MPI_Request > d_requestsAccumulateAddLocallyOwned
 
MPI_Comm d_mpiCommunicator
 
+

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
+
+ +
+
+ +

◆ 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_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_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..2f3fdfed3 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p-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::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..782feb729 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html @@ -0,0 +1,1348 @@ + + + + + + + +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 = utils::MemoryStorage< global_size_type, memorySpace >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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_Comm & mpiCommunicator () 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 = utils::MemoryStorage<global_size_type, memorySpace>
+
+ +
+
+ +

◆ SizeTypeVector

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::utils::mpi::MPIPatternP2P< memorySpace >::SizeTypeVector = utils::MemoryStorage<size_type, memorySpace>
+
+

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..aa7d9bb15 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base-members.html @@ -0,0 +1,91 @@ + + + + + + + +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..fc8e4ca85 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html @@ -0,0 +1,165 @@ + + + + + + + +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..9386bb4c239dda98ce665b6380f67c721c2ef317 GIT binary patch literal 886 zcmeAS@N?(olHy`uVBq!ia0vp^7l1f`gBeK1pW>beq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)mP0ABrF~0r%yjeQ>o!tND7orr5FYk(K_{OT{wDt8H z&#qkNmC`e|C6_gxnZ~-J*k|Xy%U4UI7`QZ_>+dcO3XU+0*A0kvez)S=k7NDHchsb| zvE?z`{FJSKWa(qc08al82j9GJ^xC%lL++`oGp}Cd7vwU1vgdPMJ@1JbvpBxq3l0{4 z7?rfIX5B)IJ85%umstqd?p>i+U$bK2YOXiS?`+KeEArOA-MB4W&vT#YHExCPr>?%A ze^T%FDbt&!dv>I+pQG|O-^^}h@nRbIOEGf!Hw{~F7rB@;~>RWeidHUfjqk*Oj6 zA~(alCCeH2#_=mxNnM!zJQApK)_NI+p0%7T49eL|j0b>W%3!cbO@N_i4KYGB?x#2D z>|c0&lg?><4sK67ci|2d_iHRlCnr8_ytJz1&xDjKw`WOv&RfYNKezPcujji}Dp$T+ zlJmuS)=u6Fg&Lk^Pr@fZnOe60`uw%&>mHvIt5w(>T)5rO)FC<}>;x_?TJw8z~8TOK*FpU8Q+$7f0I z(_eq)sa?2vg%Mlq@MnKnnlWc5%ci5Z+fIWcr@vM{tL*BWjt#OuW}Vl27T+DPLh + + + + + + +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..a3d616a8d --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html @@ -0,0 +1,621 @@ + + + + + + + +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< int > d_sendBuffers
 
std::vector< MPI_Request > d_sendRequests
 
std::vector< std::unique_ptr< int > > d_recvBuffers
 
std::vector< std::unique_ptr< MPI_Request > > d_recvRequests
 
MPI_Request d_barrierRequest
 
const MPI_Comm & d_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..f17ede508287eb34f202c5452d1d5de1e8f9e338 GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0vp^7l1f`gBeK1pW>beq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SRXIB)#d4EOzzxw$ z{GQjUB9oO*YCnB=<>vG^_4~XhZGYugwS5S^L9a%MJK9e?tAcTDWEP>0Y{KTp4#b44Ut^UVeGos`7GcgU2VY%fK*-&xQw7oWt#Hxx$Zz`e46>~Ux7>gDp!HgGImp5ObX(K@TPVwKYo`#6i!-#4E7`}kn5ZrSDk zhH5Lnv%H8&NSnTHGyBRsc8{9}w!Cp-Kault56`6BpTGXhQ@e2S3gfDvbCb*cvba{C z3+KLaZG!bG+kGDoOVw&hrRO!~eBAc1=w$`#l*7rw3sb^Rc1mqyj{kJ?=%39Tp{7sv ze6Fi!OYzA~EV*~tXglk#Ep4wJn!V03yvn?Fxw+|+{`FZaRvkFLe$HQ!x%xezXqixh z5-poGzyGjS@wC6V{rj(aKOF_nT~|sRCVe>` + + + + + + +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 dealii::MatrixFree< 3, double > &matrix_free_data, 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 dealii::MatrixFree< 3, double > &matrix_free_data, 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..8801c834b --- /dev/null +++ b/classdftfe_1_1vself_bins_manager.html @@ -0,0 +1,1560 @@ + + + + + + + +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 dealii::MatrixFree< 3, double > &matrix_free_data, 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 dealii::MatrixFree< 3, double > &matrix_free_data, 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 int > d_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 dftParametersdftParams 
)
+
+ +

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 dealii::MatrixFree< 3, double > & matrix_free_data,
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 dealii::MatrixFree< 3, double > & matrix_free_data,
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..1ac6ee81b --- /dev/null +++ b/classes.html @@ -0,0 +1,139 @@ + + + + + + + +DFT-FE: Class Index + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
B | C | D | E | F | G | K | L | M | N | O | P | Q | R | S | T | V | X
+
+
+
B
+
BFGSNonLinearSolver (dftfe)
+
+
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)
FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST > (dftfe::basis)
FEBasisOperationsBase (dftfe::basis)
forceClass (dftfe)
+
+
G
+
geometryOptimizationClass (dftfe)
geoOptCell (dftfe)
geoOptIon (dftfe)
+
+
K
+
kerkerSolverProblem (dftfe)
kohnShamDFTOperatorClass (dftfe)
kohnShamDFTOperatorDeviceClass (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
+
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)
symmetryClass (dftfe)
+
+
T
+
triangulationManager (dftfe)
+
+
V
+
vselfBinsManager (dftfe)
+
+
X
+
xmlTodftfeParser (dftfe::pseudoUtils)
+
+
+ + + + 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..a0f77836b --- /dev/null +++ b/constants_8h.html @@ -0,0 +1,154 @@ + + + + + + + +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..e2626cf59 --- /dev/null +++ b/constants_8h_source.html @@ -0,0 +1,303 @@ + + + + + + + +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
+
Definition upfToxml.cc:37
+
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..048badbd7 --- /dev/null +++ b/constraint_matrix_info_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..ff3c3affd --- /dev/null +++ b/constraint_matrix_info_8h_source.html @@ -0,0 +1,266 @@ + + + + + + + +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>
+
63 & 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 const unsigned int blockSize) const;
+
90
+
91 /**
+
92 * @brief transfers the contributions of slave nodes to master nodes using the constraint equation
+
93 * slave nodes are the nodes which are to the right of the constraint
+
94 * equation and master nodes are the nodes which are left of the
+
95 * constraint equation.
+
96 *
+
97 * @param fieldVector parallel dealii vector which is the result of matrix-vector product(vmult) withot taking
+
98 * care of constraints
+
99 * @param blockSize number of components for a given node
+
100 */
+
101 template <typename T>
+
102 void
+ +
104 const unsigned int blockSize) const;
+
105
+
106 template <typename T>
+
107 void
+ +
109 const unsigned int blockSize) const;
+
110
+
111
+
112 /**
+
113 * @brief sets field values at constrained nodes to be zero
+
114 *
+
115 * @param fieldVector parallel dealii vector with fields stored in a flattened format
+
116 * @param blockSize number of field components for a given node
+
117 */
+
118 template <typename T>
+
119 void
+ +
121 const unsigned int blockSize) const;
+
122 template <typename T>
+
123 void
+ +
125 const unsigned int blockSize) const;
+
126
+
127 /**
+
128 * clear data members
+
129 */
+
130 void
+ +
132
+
133
+
134 private:
+
135 std::vector<dealii::types::global_dof_index> d_rowIdsGlobal;
+
136 std::vector<dealii::types::global_dof_index> d_rowIdsLocal;
+
137 std::vector<dealii::types::global_dof_index> d_columnIdsLocal;
+
138 std::vector<dealii::types::global_dof_index> d_columnIdsGlobal;
+
139 std::vector<double> d_columnValues;
+
140 std::vector<double> d_inhomogenities;
+
141 std::vector<dealii::types::global_dof_index> d_rowSizes;
+
142 std::vector<dealii::types::global_dof_index>
+ +
144 };
+
+
145
+
146 } // namespace dftUtils
+
147
+
148} // namespace dftfe
+
149#endif
+
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:42
+
void distribute(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) const
+
std::vector< dealii::types::global_dof_index > d_columnIdsLocal
Definition constraintMatrixInfo.h:137
+ +
std::vector< dealii::types::global_dof_index > d_rowIdsGlobal
Definition constraintMatrixInfo.h:135
+
std::vector< dealii::types::global_dof_index > d_rowIdsLocal
Definition constraintMatrixInfo.h:136
+
std::vector< dealii::types::global_dof_index > d_columnIdsGlobal
Definition constraintMatrixInfo.h:138
+
void distribute_slave_to_master(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) 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:141
+
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
+
void set_zero(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) const
+
std::vector< double > d_inhomogenities
Definition constraintMatrixInfo.h:140
+
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...
+ +
std::vector< dealii::types::global_dof_index > d_localIndexMapUnflattenedToFlattened
Definition constraintMatrixInfo.h:143
+
std::vector< double > d_columnValues
Definition constraintMatrixInfo.h:139
+ +
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+ +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+
+ + + + diff --git a/constraint_matrix_info_device_8h.html b/constraint_matrix_info_device_8h.html new file mode 100644 index 000000000..b9510bcd4 --- /dev/null +++ b/constraint_matrix_info_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..bbc084045 --- /dev/null +++ b/constraint_matrix_info_device_8h_source.html @@ -0,0 +1,307 @@ + + + + + + + +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
+
64 /**
+
65 * @brief overloaded dealii internal function distribute for flattened dealii array which sets
+
66 * the slave node field values from master nodes
+
67 *
+
68 * @param blockSize number of components for a given node
+
69 */
+
70 template <typename NumberType>
+
71 void
+
72 distribute(distributedDeviceVec<NumberType> &fieldVector,
+
73 const unsigned int blockSize) const;
+
74
+
75 /**
+
76 * @brief transfers the contributions of slave nodes to master nodes using the constraint equation
+
77 * slave nodes are the nodes which are to the right of the constraint
+
78 * equation and master nodes are the nodes which are left of the
+
79 * constraint equation.
+
80 *
+
81 * @param fieldVector parallel dealii vector which is the result of matrix-vector product(vmult) withot taking
+
82 * care of constraints
+
83 * @param blockSize number of components for a given node
+
84 */
+
85 void
+
86 distribute_slave_to_master(distributedDeviceVec<double> &fieldVector,
+
87 const unsigned int blockSize) const;
+
88
+
89 inline void
+
90 distribute_slave_to_master(
+
91 distributedDeviceVec<std::complex<double>> &fieldVector,
+
92 const unsigned int blockSize) const
+
93 {}
+
94
+
95 /**
+
96 * @brief transfers the contributions of slave nodes to master nodes using the constraint equation
+
97 * slave nodes are the nodes which are to the right of the constraint
+
98 * equation and master nodes are the nodes which are left of the
+
99 * constraint equation.
+
100 *
+
101 * @param fieldVector parallel dealii vector which is the result of matrix-vector product(vmult) withot taking
+
102 * care of constraints
+
103 * @param blockSize number of components for a given node
+
104 */
+
105 void
+
106 distribute_slave_to_master(
+
107 distributedDeviceVec<std::complex<double>> &fieldVector,
+
108 double * tempReal,
+
109 double * tempImag,
+
110 const unsigned int blockSize) const;
+
111
+
112 inline void
+
113 distribute_slave_to_master(distributedDeviceVec<double> &fieldVector,
+
114 double * tempReal,
+
115 double * tempImag,
+
116 const unsigned int blockSize) const
+
117 {}
+
118
+
119
+
120 /**
+
121 * @brief transfers the contributions of slave nodes to master nodes using the constraint equation
+
122 * slave nodes are the nodes which are to the right of the constraint
+
123 * equation and master nodes are the nodes which are left of the
+
124 * constraint equation.
+
125 *
+
126 * @param fieldVector parallel dealii vector which is the result of matrix-vector product(vmult) withot taking
+
127 * care of constraints
+
128 * @param blockSize number of components for a given node
+
129 */
+
130 void
+
131 distribute_slave_to_master(
+
132 distributedDeviceVec<std::complex<float>> &fieldVector,
+
133 float * tempReal,
+
134 float * tempImag,
+
135 const unsigned int blockSize) const;
+
136
+
137
+
138 /**
+
139 * @brief sets field values at constrained nodes to be zero
+
140 *
+
141 * @param fieldVector parallel dealii vector with fields stored in a flattened format
+
142 * @param blockSize number of field components for a given node
+
143 */
+
144 template <typename NumberType>
+
145 void
+
146 set_zero(distributedDeviceVec<NumberType> &fieldVector,
+
147 const unsigned int blockSize) const;
+
148
+
149 /**
+
150 * clear data members
+
151 */
+
152 void
+
153 clear();
+
154
+
155
+
156 private:
+
157 std::vector<unsigned int> d_rowIdsLocal;
+
158 std::vector<unsigned int> d_columnIdsLocal;
+
159 std::vector<double> d_columnValues;
+
160 std::vector<double> d_inhomogenities;
+
161 std::vector<unsigned int> d_rowSizes;
+
162 std::vector<unsigned int> d_rowSizesAccumulated;
+
163 std::vector<dealii::types::global_dof_index>
+
164 d_localIndexMapUnflattenedToFlattened;
+
165
+
166 dftfe::utils::MemoryStorage<unsigned int,
+ +
168 d_rowIdsLocalDevice;
+
169 dftfe::utils::MemoryStorage<unsigned int,
+ +
171 d_columnIdsLocalDevice;
+ +
173 d_columnValuesDevice;
+ +
175 d_inhomogenitiesDevice;
+
176 dftfe::utils::MemoryStorage<unsigned int,
+ +
178 d_rowSizesDevice;
+
179 dftfe::utils::MemoryStorage<unsigned int,
+ +
181 d_rowSizesAccumulatedDevice;
+
182 dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
+ +
184 d_localIndexMapUnflattenedToFlattenedDevice;
+
185
+
186 std::vector<unsigned int> d_rowIdsLocalBins;
+
187 std::vector<unsigned int> d_columnIdsLocalBins;
+
188 std::vector<unsigned int> d_columnIdToRowIdMapBins;
+
189 std::vector<double> d_columnValuesBins;
+
190 std::vector<unsigned int> d_binColumnSizes;
+
191 std::vector<unsigned int> d_binColumnSizesAccumulated;
+
192
+
193 dftfe::utils::MemoryStorage<unsigned int,
+ +
195 d_rowIdsLocalBinsDevice;
+
196 dftfe::utils::MemoryStorage<unsigned int,
+ +
198 d_columnIdsLocalBinsDevice;
+
199 dftfe::utils::MemoryStorage<unsigned int,
+ +
201 d_columnIdToRowIdMapBinsDevice;
+ +
203 d_columnValuesBinsDevice;
+
204
+
205 unsigned int d_numConstrainedDofs;
+
206 };
+
207 } // namespace dftUtils
+
208
+
209} // namespace dftfe
+
210# endif
+
211#endif
+ +
Definition MemoryStorage.h:33
+ + +
Definition upfToxml.cc:37
+
+ + + + diff --git a/dealii_linear_solver_8h.html b/dealii_linear_solver_8h.html new file mode 100644 index 000000000..4c5570d84 --- /dev/null +++ b/dealii_linear_solver_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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
 
+
+ + + + diff --git a/dealii_linear_solver_8h_source.html b/dealii_linear_solver_8h_source.html new file mode 100644 index 000000000..fc2d86d6c --- /dev/null +++ b/dealii_linear_solver_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + +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 */
+
47 dealiiLinearSolver(const MPI_Comm & mpi_comm_parent,
+
48 const MPI_Comm & mpi_comm_domain,
+
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
+
76 const MPI_Comm d_mpiCommParent;
+
77 const MPI_Comm mpi_communicator;
+
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
+ +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+
+ + + + diff --git a/dealii_linear_solver_problem_8h.html b/dealii_linear_solver_problem_8h.html new file mode 100644 index 000000000..579404ed1 --- /dev/null +++ b/dealii_linear_solver_problem_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..62cf68a5b --- /dev/null +++ b/dealii_linear_solver_problem_8h_source.html @@ -0,0 +1,207 @@ + + + + + + + +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
+ +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+
+ + + + diff --git a/density_calculator_8h.html b/density_calculator_8h.html new file mode 100644 index 000000000..a1a01c527 --- /dev/null +++ b/density_calculator_8h.html @@ -0,0 +1,110 @@ + + + + + + + +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 <operatorDevice.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, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > *rhoValues, std::map< dealii::CellId, std::vector< double > > *gradRhoValues, std::map< dealii::CellId, std::vector< double > > *rhoValuesSpinPolarized, std::map< dealii::CellId, std::vector< double > > *gradRhoValuesSpinPolarized, 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, 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..c6eca57c4 --- /dev/null +++ b/density_calculator_8h_source.html @@ -0,0 +1,201 @@ + + + + + + + +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 densityCalculatorDevice_H_
+
19#define densityCalculatorDevice_H_
+
20
+
21#include <headers.h>
+
22#include <operatorDevice.h>
+
23#include "dftParameters.h"
+
24#include "FEBasisOperations.h"
+
25
+
26namespace dftfe
+
27{
+
28 template <typename NumberType, dftfe::utils::MemorySpace memorySpace>
+
29 void
+ + + +
33 const unsigned int totalNumWaveFunctions,
+
34 const unsigned int Nfr,
+
35 const std::vector<std::vector<double>> &eigenValues,
+
36 const double fermiEnergy,
+
37 const double fermiEnergyUp,
+
38 const double fermiEnergyDown,
+
39 std::shared_ptr<
+ +
41 & basisOperationsPtr,
+
42 const unsigned int matrixFreeDofhandlerIndex,
+
43 const unsigned int quadratureIndex,
+
44 const std::vector<double> & kPointWeights,
+
45 std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
46 std::map<dealii::CellId, std::vector<double>> *gradRhoValues,
+
47 std::map<dealii::CellId, std::vector<double>> *rhoValuesSpinPolarized,
+
48 std::map<dealii::CellId, std::vector<double>> *gradRhoValuesSpinPolarized,
+
49 const bool isEvaluateGradRho,
+
50 const MPI_Comm & mpiCommParent,
+
51 const MPI_Comm & interpoolcomm,
+
52 const MPI_Comm & interBandGroupComm,
+
53 const dftParameters & dftParams,
+
54 const bool spectrumSplit);
+
55
+
56 template <typename NumberType>
+
57 void
+ +
59 std::shared_ptr<
+ +
61 FEBasisOperations<NumberType, double, dftfe::utils::MemorySpace::HOST>>
+
62 & basisOperationsPtr,
+
63 const std::pair<unsigned int, unsigned int> cellRange,
+
64 const std::pair<unsigned int, unsigned int> vecRange,
+
65 double * partialOccupVec,
+
66 NumberType * wfcQuadPointData,
+
67 NumberType * gradWfcQuadPointData,
+
68 double * rhoCellsWfcContributions,
+
69 double * gradRhoCellsWfcContributions,
+
70 double * rho,
+
71 double * gradRho,
+
72 const bool isEvaluateGradRho);
+
73
+
74#if defined(DFTFE_WITH_DEVICE)
+
75 template <typename NumberType>
+
76 void
+ +
78 std::shared_ptr<
+ +
80 double,
+ +
82 & basisOperationsPtr,
+
83 const std::pair<unsigned int, unsigned int> cellRange,
+
84 const std::pair<unsigned int, unsigned int> vecRange,
+
85 double * partialOccupVec,
+
86 NumberType * wfcQuadPointData,
+
87 NumberType * gradWfcQuadPointData,
+
88 double * rhoCellsWfcContributions,
+
89 double * gradRhoCellsWfcContributions,
+
90 double * rho,
+
91 double * gradRho,
+
92 const bool isEvaluateGradRho);
+
93#endif
+
94
+
95} // namespace dftfe
+
96#endif
+ +
Definition FEBasisOperations.h:449
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Definition MemoryStorage.h:33
+ + +
Definition FEBasisOperations.h:30
+ +
Definition upfToxml.cc:37
+ + +
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, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > *rhoValues, std::map< dealii::CellId, std::vector< double > > *gradRhoValues, std::map< dealii::CellId, std::vector< double > > *rhoValuesSpinPolarized, std::map< dealii::CellId, std::vector< double > > *gradRhoValuesSpinPolarized, 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, 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..f61df55dd --- /dev/null +++ b/density_first_order_response_calculator_8h.html @@ -0,0 +1,109 @@ + + + + + + + +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 "operator.h"
+#include "dftParameters.h"
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  dftfe
 
+ + + + + + + +

+Functions

template<typename NumberType >
void dftfe::computeRhoFirstOrderResponseCPU (const NumberType *X, const NumberType *XPrime, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, const unsigned int totalNumWaveFunctions, const unsigned int numLocalDofs, operatorDFTClass &operatorMatrix, const unsigned int matrixFreeDofhandlerIndex, const dealii::DoFHandler< 3 > &dofHandler, const unsigned int totalLocallyOwnedCells, const unsigned int numberNodesPerElement, const unsigned int numQuadPoints, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHam, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergy, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHamSpinPolarized, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergySpinPolarized, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
 
template<typename NumberType , typename NumberTypeLowPrec >
void dftfe::computeRhoFirstOrderResponseCPUMixedPrec (const NumberType *X, const NumberType *XPrime, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, const unsigned int totalNumWaveFunctions, const unsigned int numLocalDofs, operatorDFTClass &operatorMatrix, const unsigned int matrixFreeDofhandlerIndex, const dealii::DoFHandler< 3 > &dofHandler, const unsigned int totalLocallyOwnedCells, const unsigned int numberNodesPerElement, const unsigned int numQuadPoints, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHam, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergy, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHamSpinPolarized, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergySpinPolarized, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
 
+
+ + + + 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..4e1de4097 --- /dev/null +++ b/density_first_order_response_calculator_8h_source.html @@ -0,0 +1,215 @@ + + + + + + + +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 "operator.h"
+
24#include "dftParameters.h"
+
25
+
26#if defined(DFTFE_WITH_DEVICE)
+
27# include "operatorDevice.h"
+
28# include "dftfeDataTypes.h"
+
29#endif
+
30
+
31namespace dftfe
+
32{
+
33 template <typename NumberType>
+
34 void
+ +
36 const NumberType * X,
+
37 const NumberType * XPrime,
+
38 const std::vector<std::vector<double>> & densityMatDerFermiEnergy,
+
39 const unsigned int totalNumWaveFunctions,
+
40 const unsigned int numLocalDofs,
+
41 operatorDFTClass & operatorMatrix,
+
42 const unsigned int matrixFreeDofhandlerIndex,
+
43 const dealii::DoFHandler<3> & dofHandler,
+
44 const unsigned int totalLocallyOwnedCells,
+
45 const unsigned int numberNodesPerElement,
+
46 const unsigned int numQuadPoints,
+
47 const std::vector<double> & kPointWeights,
+
48 std::map<dealii::CellId, std::vector<double>> &rhoResponseValuesHam,
+
49 std::map<dealii::CellId, std::vector<double>> &rhoResponseValuesFermiEnergy,
+
50 std::map<dealii::CellId, std::vector<double>>
+
51 &rhoResponseValuesHamSpinPolarized,
+
52 std::map<dealii::CellId, std::vector<double>>
+
53 & rhoResponseValuesFermiEnergySpinPolarized,
+
54 const MPI_Comm & mpiCommParent,
+
55 const MPI_Comm & interpoolcomm,
+
56 const MPI_Comm & interBandGroupComm,
+
57 const dftParameters &dftParams);
+
58
+
59 template <typename NumberType, typename NumberTypeLowPrec>
+
60 void
+ +
62 const NumberType * X,
+
63 const NumberType * XPrime,
+
64 const std::vector<std::vector<double>> & densityMatDerFermiEnergy,
+
65 const unsigned int totalNumWaveFunctions,
+
66 const unsigned int numLocalDofs,
+
67 operatorDFTClass & operatorMatrix,
+
68 const unsigned int matrixFreeDofhandlerIndex,
+
69 const dealii::DoFHandler<3> & dofHandler,
+
70 const unsigned int totalLocallyOwnedCells,
+
71 const unsigned int numberNodesPerElement,
+
72 const unsigned int numQuadPoints,
+
73 const std::vector<double> & kPointWeights,
+
74 std::map<dealii::CellId, std::vector<double>> &rhoResponseValuesHam,
+
75 std::map<dealii::CellId, std::vector<double>> &rhoResponseValuesFermiEnergy,
+
76 std::map<dealii::CellId, std::vector<double>>
+
77 &rhoResponseValuesHamSpinPolarized,
+
78 std::map<dealii::CellId, std::vector<double>>
+
79 & rhoResponseValuesFermiEnergySpinPolarized,
+
80 const MPI_Comm & mpiCommParent,
+
81 const MPI_Comm & interpoolcomm,
+
82 const MPI_Comm & interBandGroupComm,
+
83 const dftParameters &dftParams);
+
84
+
85
+
86#if defined(DFTFE_WITH_DEVICE)
+
87 template <typename NumberType, typename NumberTypeLowPrec>
+
88 void
+
89 computeRhoFirstOrderResponseDevice(
+
90 const NumberType * X,
+
91 const NumberType * XPrime,
+
92 const std::vector<std::vector<double>> & densityMatDerFermiEnergy,
+
93 const unsigned int totalNumWaveFunctions,
+
94 const unsigned int numLocalDofs,
+
95 operatorDFTDeviceClass & operatorMatrix,
+
96 const unsigned int matrixFreeDofhandlerIndex,
+
97 const dealii::DoFHandler<3> & dofHandler,
+
98 const unsigned int totalLocallyOwnedCells,
+
99 const unsigned int numberNodesPerElement,
+
100 const unsigned int numQuadPoints,
+
101 const std::vector<double> & kPointWeights,
+
102 std::map<dealii::CellId, std::vector<double>> &rhoResponseValuesHam,
+
103 std::map<dealii::CellId, std::vector<double>> &rhoResponseValuesFermiEnergy,
+
104 std::map<dealii::CellId, std::vector<double>>
+
105 &rhoResponseValuesHamSpinPolarized,
+
106 std::map<dealii::CellId, std::vector<double>>
+
107 & rhoResponseValuesFermiEnergySpinPolarized,
+
108 const MPI_Comm & mpiCommParent,
+
109 const MPI_Comm & interpoolcomm,
+
110 const MPI_Comm & interBandGroupComm,
+
111 const dftParameters &dftParams);
+
112#endif
+
113} // namespace dftfe
+
114#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:39
+ + + +
Definition upfToxml.cc:37
+
void computeRhoFirstOrderResponseCPU(const NumberType *X, const NumberType *XPrime, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, const unsigned int totalNumWaveFunctions, const unsigned int numLocalDofs, operatorDFTClass &operatorMatrix, const unsigned int matrixFreeDofhandlerIndex, const dealii::DoFHandler< 3 > &dofHandler, const unsigned int totalLocallyOwnedCells, const unsigned int numberNodesPerElement, const unsigned int numQuadPoints, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHam, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergy, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHamSpinPolarized, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergySpinPolarized, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
+
void computeRhoFirstOrderResponseCPUMixedPrec(const NumberType *X, const NumberType *XPrime, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, const unsigned int totalNumWaveFunctions, const unsigned int numLocalDofs, operatorDFTClass &operatorMatrix, const unsigned int matrixFreeDofhandlerIndex, const dealii::DoFHandler< 3 > &dofHandler, const unsigned int totalLocallyOwnedCells, const unsigned int numberNodesPerElement, const unsigned int numQuadPoints, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHam, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergy, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHamSpinPolarized, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergySpinPolarized, 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..e2ace8c45 --- /dev/null +++ b/device_direct_c_c_l_wrapper_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..9b6526c3a --- /dev/null +++ b/device_direct_c_c_l_wrapper_8h_source.html @@ -0,0 +1,269 @@ + + + + + + + +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
+
26namespace dftfe
+
27{
+
28 namespace utils
+
29 {
+
30 /**
+
31 * @brief Wrapper class for Device Direct collective communications library.
+
32 * Adapted from
+
33 * https://code.ornl.gov/99R/olcf-cookbook/-/blob/develop/comms/nccl_allreduce.rst
+
34 *
+
35 * @author Sambit Das, David M. Rogers
+
36 */
+
37 class DeviceCCLWrapper
+
38 {
+
39 public:
+
40 DeviceCCLWrapper();
+
41
+
42 void
+
43 init(const MPI_Comm &mpiComm);
+
44
+
45 ~DeviceCCLWrapper();
+
46
+
47 int
+
48 deviceDirectAllReduceWrapper(const float * send,
+
49 float * recv,
+
50 int size,
+
51 deviceStream_t &stream);
+
52
+
53
+
54 int
+
55 deviceDirectAllReduceWrapper(const double * send,
+
56 double * recv,
+
57 int size,
+
58 deviceStream_t &stream);
+
59
+
60
+
61 int
+
62 deviceDirectAllReduceWrapper(const std::complex<double> *send,
+
63 std::complex<double> * recv,
+
64 int size,
+
65 double * tempReal,
+
66 double * tempImag,
+
67 deviceStream_t & stream);
+
68
+
69 int
+
70 deviceDirectAllReduceWrapper(const std::complex<float> *send,
+
71 std::complex<float> * recv,
+
72 int size,
+
73 float * tempReal,
+
74 float * tempImag,
+
75 deviceStream_t & stream);
+
76
+
77
+
78 int
+
79 deviceDirectAllReduceMixedPrecGroupWrapper(const double * send1,
+
80 const float * send2,
+
81 double * recv1,
+
82 float * recv2,
+
83 int size1,
+
84 int size2,
+
85 deviceStream_t &stream);
+
86
+
87 int
+
88 deviceDirectAllReduceMixedPrecGroupWrapper(
+
89 const std::complex<double> *send1,
+
90 const std::complex<float> * send2,
+
91 std::complex<double> * recv1,
+
92 std::complex<float> * recv2,
+
93 int size1,
+
94 int size2,
+
95 double * tempReal1,
+
96 float * tempReal2,
+
97 double * tempImag1,
+
98 float * tempImag2,
+
99 deviceStream_t & stream);
+
100
+
101
+
102
+
103 inline void
+
104 deviceDirectAllReduceWrapper(const std::complex<float> *send,
+
105 std::complex<float> * recv,
+
106 int size,
+
107 deviceStream_t & stream)
+
108 {}
+
109
+
110
+
111 inline void
+
112 deviceDirectAllReduceWrapper(const std::complex<double> *send,
+
113 std::complex<double> * recv,
+
114 int size,
+
115 deviceStream_t & stream)
+
116 {}
+
117
+
118 inline void
+
119 deviceDirectAllReduceMixedPrecGroupWrapper(
+
120 const std::complex<double> *send1,
+
121 const std::complex<float> * send2,
+
122 std::complex<double> * recv1,
+
123 std::complex<float> * recv2,
+
124 int size1,
+
125 int size2,
+
126 deviceStream_t & stream)
+
127 {}
+
128
+
129
+
130 inline void
+
131 deviceDirectAllReduceWrapper(const double * send,
+
132 double * recv,
+
133 int size,
+
134 double * tempReal,
+
135 double * tempImag,
+
136 deviceStream_t &stream)
+
137 {}
+
138
+
139 inline void
+
140 deviceDirectAllReduceWrapper(const float * send,
+
141 float * recv,
+
142 int size,
+
143 float * tempReal,
+
144 float * tempImag,
+
145 deviceStream_t &stream)
+
146 {}
+
147
+
148 inline void
+
149 deviceDirectAllReduceMixedPrecGroupWrapper(const double * send1,
+
150 const float * send2,
+
151 double * recv1,
+
152 float * recv2,
+
153 int size1,
+
154 int size2,
+
155 double * tempReal1,
+
156 float * tempReal2,
+
157 double * tempImag1,
+
158 float * tempImag2,
+
159 deviceStream_t &stream)
+
160 {}
+
161
+
162 private:
+
163 int myRank;
+
164 int totalRanks;
+
165 MPI_Comm d_mpiComm;
+
166 bool commCreated;
+
167# if defined(DFTFE_WITH_CUDA_NCCL) || defined(DFTFE_WITH_HIP_RCCL)
+
168 void *ncclIdPtr;
+
169 void *ncclCommPtr;
+
170# endif
+
171 };
+
172 } // namespace utils
+
173} // namespace dftfe
+
174
+
175# endif
+
176#endif
+ +
Definition upfToxml.cc:37
+
+ + + + diff --git a/device_kernels_generic_8h.html b/device_kernels_generic_8h.html new file mode 100644 index 000000000..b96ca8e10 --- /dev/null +++ b/device_kernels_generic_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..98d961241 --- /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
+ + + + + +
__forceinline__ __device__ unsigned int add(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:363
+
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
Definition upfToxml.cc:37
+
unsigned long int global_size_type
Definition TypeConfig.h:7
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + diff --git a/dft_8h.html b/dft_8h.html new file mode 100644 index 000000000..ec53ae0ce --- /dev/null +++ b/dft_8h.html @@ -0,0 +1,133 @@ + + + + + + + +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 <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 <kohnShamDFTOperator.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>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dftClass< FEOrder, FEOrderElectro >
 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..510e88c17 --- /dev/null +++ b/dft_8h_source.html @@ -0,0 +1,2435 @@ + + + + + + + +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
+
28#include <complex>
+
29#include <deque>
+
30#include <iomanip>
+
31#include <iostream>
+
32#include <numeric>
+
33#include <sstream>
+
34
+
35#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>
+
52#include <kohnShamDFTOperator.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
+
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>
+
93 class symmetryClass;
+
94 template <unsigned int T1, unsigned int T2>
+
95 class forceClass;
+
96
+
97#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
98
+
99 /**
+
100 * @brief This class is the primary interface location of all other parts of the DFT-FE code
+
101 * for all steps involved in obtaining the Kohn-Sham DFT ground-state
+
102 * solution.
+
103 *
+
104 * @author Shiva Rudraraju, Phani Motamarri, Sambit Das
+
105 */
+
106 template <unsigned int FEOrder, unsigned int FEOrderElectro>
+
+
107 class dftClass : public dftBase
+
108 {
+
109 friend class kohnShamDFTOperatorClass<FEOrder, FEOrderElectro>;
+
110
+
111#ifdef DFTFE_WITH_DEVICE
+
112 friend class kohnShamDFTOperatorDeviceClass<FEOrder, FEOrderElectro>;
+
113#endif
+
114
+
115 friend class forceClass<FEOrder, FEOrderElectro>;
+
116
+
117 friend class symmetryClass<FEOrder, FEOrderElectro>;
+
118
+
119 public:
+
120 /**
+
121 * @brief dftClass constructor
+
122 *
+
123 * @param[in] mpi_comm_parent parent communicator
+
124 * @param[in] mpi_comm_domain mpi_communicator for domain decomposition
+
125 * parallelization
+
126 * @param[in] interpoolcomm mpi_communicator for parallelization over k
+
127 * points
+
128 * @param[in] interBandGroupComm mpi_communicator for parallelization over
+
129 * bands
+
130 * @param[in] scratchFolderName scratch folder name
+
131 * @param[in] dftParams dftParameters object containg parameter values
+
132 * parsed from an input parameter file in dftfeWrapper class
+
133 */
+
134 dftClass(const MPI_Comm & mpiCommParent,
+
135 const MPI_Comm & mpi_comm_domain,
+
136 const MPI_Comm & interpoolcomm,
+
137 const MPI_Comm & interBandGroupComm,
+
138 const std::string &scratchFolderName,
+
139 dftParameters & dftParams);
+
140
+
141 /**
+
142 * @brief dftClass destructor
+
143 */
+ +
145
+
146 /**
+
147 * @brief atomic system pre-processing steps.
+
148 *
+
149 * Reads the coordinates of the atoms.
+
150 * If periodic calculation, reads fractional coordinates of atoms in the
+
151 * unit-cell, lattice vectors, kPoint quadrature rules to be used and also
+
152 * generates image atoms. Also determines orbital-ordering
+
153 */
+
154 void
+ +
156
+
157 /**
+
158 * @brief Does KSDFT problem pre-processing steps including mesh generation calls.
+
159 */
+
160 void
+ +
162
+
163 /**
+
164 * @brief Does KSDFT problem pre-processing steps but without remeshing.
+
165 */
+
166 void
+
167 initNoRemesh(const bool updateImagesAndKPointsAndVselfBins = true,
+
168 const bool checkSmearedChargeWidthsForOverlap = true,
+
169 const bool useSingleAtomSolutionOverride = false,
+
170 const bool isMeshDeformed = false);
+
171
+
172
+
173
+
174 /**
+
175 * @brief FIXME: legacy call, move to main.cc
+
176 */
+
177 void
+ +
179
+
180 /**
+
181 * @brief Writes inital density and mesh to file.
+
182 */
+
183 void
+ +
185
+
186 /**
+
187 * @brief compute approximation to ground-state without solving the SCF iteration
+
188 */
+
189 void
+ +
191 /**
+
192 * @brief Kohn-Sham ground-state solve using SCF iteration
+
193 *
+
194 * @return tuple of boolean flag on whether scf converged,
+
195 * and L2 norm of residual electron-density of the last SCF iteration step
+
196 *
+
197 */
+
198 std::tuple<bool, double>
+
199 solve(const bool computeForces = true,
+
200 const bool computestress = true,
+
201 const bool restartGroundStateCalcFromChk = false);
+
202
+
203 void
+ +
205
+
206 void
+ +
208
+
209
+
210 void
+ + +
213 const distributedCPUVec<double> &vSpin0,
+
214 const distributedCPUVec<double> &vSpin1,
+ + +
217 distributedCPUVec<double> & fvSpin1);
+
218
+
219 /**
+
220 * @brief Copies the density stored in std::map<dealii:cellId, std::vector<double>> into a flattened std::vector<double> format
+
221 *
+
222 *
+
223 */
+
224 void
+ +
226 const std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+
227 & rhoValues,
+
228 std::vector<double> &rhoValuesVector);
+
229
+
230 /**
+
231 * @brief Copies the density stored in a flattened std::vector<double> format to std::map<dealii:cellId, std::vector<double>>
+
232 *
+
233 */
+
234 void
+ +
236 const std::vector<double> &rhoValuesVector,
+
237 std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+
238 &rhoValues);
+
239
+
240 /**
+
241 * @brief Copies the gradient of density stored in a std::map<dealii:cellId, std::vector<double>>
+
242 * into a flattened std::vector<double> format
+
243 *
+
244 *
+
245 */
+
246 void
+ +
248 const std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+
249 & gradRhoValues,
+
250 std::vector<double> &gradRhoValuesVector);
+
251
+
252 /**
+
253 * @brief Copies the gradient of density stored in a flattened std::vector<double> format
+
254 * to std::map<dealii:cellId, std::vector<double>>
+
255 *
+
256 */
+
257 void
+ +
259 const std::vector<double> &gradRhoValuesVector,
+
260 std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+
261 &gradRhoValues);
+
262
+
263 /**
+
264 * @brief Computes the total density from the spin polarised densities
+
265 *
+
266 */
+
267 void
+ +
269 const std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+
270 &rhoSpinValues,
+
271 std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+
272 &rhoValues);
+
273
+
274 /**
+
275 * @brief Computes the total gradient of density from the spin polarised densities
+
276 *
+
277 */
+
278 void
+ +
280 const std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+
281 &gradRhoSpinValues,
+
282 std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+
283 &gradRhoValues);
+
284
+
285 /**
+
286 * @brief Computes the JxW values used in the \int \rho
+
287 *
+
288 */
+
289 void
+
290 computeJxWForRho(std::vector<double> &vecJxW);
+
291 void
+
292 initializeKohnShamDFTOperator(const bool initializeCublas = true);
+
293
+
294
+
295 void
+ +
297
+
298
+
299 void
+ +
301
+
302
+
303 double
+ +
305
+
306 double
+ +
308
+
309 double
+ +
311
+ + +
314
+ + +
317
+
318 double
+ +
320
+
321 void
+ +
323
+
324 virtual void
+ +
326
+
327 /**
+
328 * @brief Number of Kohn-Sham eigen values to be computed
+
329 */
+
330 unsigned int d_numEigenValues;
+
331
+
332 /**
+
333 * @brief Number of Kohn-Sham eigen values to be computed in the Rayleigh-Ritz step
+
334 * after spectrum splitting.
+
335 */
+
336 unsigned int d_numEigenValuesRR;
+
337
+
338 /**
+
339 * @brief Number of random wavefunctions
+
340 */
+ +
342
+
343 void
+ +
345
+
346 /**
+
347 *@brief Get local dofs global indices real
+
348 */
+
349 const std::vector<dealii::types::global_dof_index> &
+ +
351
+
352 /**
+
353 *@brief Get local dofs global indices imag
+
354 */
+
355 const std::vector<dealii::types::global_dof_index> &
+ +
357
+
358 /**
+
359 *@brief Get local dofs local proc indices real
+
360 */
+
361 const std::vector<dealii::types::global_dof_index> &
+ +
363
+
364 /**
+
365 *@brief Get local dofs local proc indices imag
+
366 */
+
367 const std::vector<dealii::types::global_dof_index> &
+ +
369
+
370 /**
+
371 *@brief Get matrix free data object
+
372 */
+
373 const dealii::MatrixFree<3, double> &
+ +
375
+
376
+
377 /** @brief Updates atom positions, remeshes/moves mesh and calls appropriate reinits.
+
378 *
+
379 * Function to update the atom positions and mesh based on the provided
+
380 * displacement input. Depending on the maximum displacement magnitude this
+
381 * function decides wether to do auto remeshing or move mesh using Gaussian
+
382 * functions. Additionaly this function also wraps the atom position across
+
383 * the periodic boundary if the atom moves across it beyond a certain
+
384 * magnitude. In case of floating atoms, only the atomic positions are
+
385 * updated keeping the mesh fixed. This function also calls initNoRemesh to
+
386 * reinitialize all the required FEM and KSDFT objects.
+
387 *
+
388 * @param[in] globalAtomsDisplacements vector containing the displacements
+
389 * (from current position) of all atoms (global).
+
390 * @return void.
+
391 */
+
392 void
+ +
394 const std::vector<dealii::Tensor<1, 3, double>> &globalAtomsDisplacements,
+
395 const double maxJacobianRatioFactor = 1.25,
+
396 const bool useSingleAtomSolutionsOverride = false);
+
397
+
398
+
399 /**
+
400 * @brief writes the current domain bounding vectors and atom coordinates to files, which are required for
+
401 * geometry relaxation restart
+
402
+
403 */
+
404 void
+ +
406
+
407 /**
+
408 * @brief writes the current domain bounding vectors and atom coordinates to files for
+
409 * structural optimization and dynamics restarts. The coordinates are stored
+
410 * as: 1. fractional for semi-periodic/periodic 2. Cartesian for
+
411 * non-periodic.
+
412 * @param[in] Path The folder path to store the atom coordinates required
+
413 * during restart.
+
414 */
+
415 void
+
416 writeDomainAndAtomCoordinates(const std::string Path) const;
+
417
+
418 /**
+
419 * @brief writes atomistics data for subsequent post-processing. Related to
+
420 * WRITE STRUCTURE ENERGY FORCES DATA POST PROCESS input parameter.
+
421 * @param[in] Path The folder path to store the atomistics data.
+
422 */
+
423 void
+
424 writeStructureEnergyForcesDataPostProcess(const std::string Path) const;
+
425
+
426 /**
+
427 * @brief writes quadrature grid information and associated spin-up
+
428 * and spin-down electron-density for post-processing
+
429 * @param[in] Path The folder path to store the atomistics data.
+
430 */
+
431 virtual void
+
432 writeGSElectronDensity(const std::string Path) const;
+
433
+
434
+
435 /**
+
436 * @brief Gets the current atom Locations in cartesian form
+
437 * (origin at center of domain) from dftClass
+
438 */
+
439 std::vector<std::vector<double>>
+ +
441
+
442 /**
+
443 * @brief Gets the current atom Locations in fractional form
+
444 * from dftClass (only applicable for periodic and semi-periodic BCs)
+
445 */
+
446 std::vector<std::vector<double>>
+ +
448
+
449
+
450
+
451 /**
+
452 * @brief Gets the current cell lattice vectors
+
453 *
+
454 * @return std::vector<std::vector<double>> 3 \times 3 matrix,lattice[i][j]
+
455 * corresponds to jth component of ith lattice vector
+
456 */
+
457 std::vector<std::vector<double>>
+
458 getCell() const;
+
459
+
460 /**
+
461 * @brief Gets the current cell volume
+
462 *
+
463 */
+
464 double
+ +
466
+
467 /**
+
468 * @brief Gets the current atom types from dftClass
+
469 */
+
470 std::set<unsigned int>
+ +
472
+
473 /**
+
474 * @brief Gets the current atomic forces from dftClass
+
475 */
+
476 std::vector<double>
+ +
478
+
479 /**
+
480 * @brief Gets the current cell stress from dftClass
+
481 */
+
482 dealii::Tensor<2, 3, double>
+ +
484
+
485 /**
+
486 * @brief Get reference to dftParameters object
+
487 */
+ + +
490
+
491 private:
+
492 /**
+
493 * @brief generate image charges and update k point cartesian coordinates based
+
494 * on current lattice vectors
+
495 */
+
496 void
+ +
498
+
499
+
500 /**
+
501 *@brief project ground state electron density from previous mesh into
+
502 * the new mesh to be used as initial guess for the new ground state solve
+
503 */
+
504 void
+ +
506
+
507 /**
+
508 *@brief save triangulation information and rho quadrature data to checkpoint file for restarts
+
509 */
+
510 void
+ +
512
+
513 /**
+
514 *@brief load triangulation information rho quadrature data from checkpoint file for restarted run
+
515 */
+
516 void
+ +
518
+
519 void
+ +
521 void
+ +
523
+
524 /// creates datastructures related to periodic image charges
+
525 void
+ +
527 std::vector<int> & imageIds,
+
528 std::vector<double> & imageCharges,
+
529 std::vector<std::vector<double>> &imagePositions);
+
530
+
531 void
+ +
533 const double pspCutOff,
+
534 const std::vector<int> & imageIds,
+
535 const std::vector<std::vector<double>> &imagePositions,
+
536 std::vector<std::vector<int>> & globalChargeIdToImageIdMap);
+
537
+
538 void
+ +
540
+
541 //
+
542 // generate mesh using a-posteriori error estimates
+
543 //
+
544 void
+ + + +
548 double
+ +
550
+
551
+
552 /**
+
553 *@brief moves the triangulation vertices using Gaussians such that the all atoms are on triangulation vertices
+
554 */
+
555 void moveMeshToAtoms(dealii::Triangulation<3, 3> &triangulationMove,
+
556 dealii::Triangulation<3, 3> &triangulationSerial,
+
557 bool reuseFlag = false,
+
558 bool moveSubdivided = false);
+
559
+
560 /**
+
561 *@brief a
+
562 */
+
563 void
+ +
565
+
566 /**
+
567 *@brief a
+
568 */
+
569 void
+ +
571
+
572 /**
+
573 * Initializes the guess of electron-density and single-atom wavefunctions
+
574 * on the mesh, maps finite-element nodes to given atomic positions,
+
575 * initializes pseudopotential files and exchange-correlation functionals to
+
576 * be used based on user-choice. In periodic problems, periodic faces are
+
577 * mapped here. Further finite-element nodes to be pinned for solving the
+
578 * Poisson problem electro-static potential is set here
+
579 */
+ +
581 dealii::parallel::distributed::Triangulation<3> &triangulation);
+
582 void
+ +
584 const bool vselfPerturbationUpdateForStress = false);
+
585 void
+ +
587 void
+ +
589
+
590 /**
+
591 * create a dofHandler containing finite-element interpolating polynomial
+
592 * twice of the original polynomial required for Kerker mixing and
+
593 * initialize various objects related to this refined dofHandler
+
594 */
+ +
596 dealii::parallel::distributed::Triangulation<3> &triangulation);
+
597 void
+ +
599 const bool vselfPerturbationUpdateForStress = false);
+
600
+
601 /**
+
602 *@brief interpolate rho nodal data to quadrature data using FEEvaluation
+
603 *
+
604 *@param[in] matrixFreeData matrix free data object
+
605 *@param[in] nodalField nodal data to be interpolated
+
606 *@param[out] quadratureValueData to be computed at quadrature points
+
607 *@param[out] quadratureGradValueData to be computed at quadrature points
+
608 *@param[in] isEvaluateGradData denotes a flag to evaluate gradients or not
+
609 */
+ +
611 dealii::MatrixFree<3, double> & matrixFreeData,
+
612 const unsigned int dofHandlerId,
+
613 const unsigned int quadratureId,
+ +
615 std::map<dealii::CellId, std::vector<double>> &quadratureValueData,
+
616 std::map<dealii::CellId, std::vector<double>> &quadratureGradValueData,
+
617 std::map<dealii::CellId, std::vector<double>> &quadratureHessianValueData,
+
618 const bool isEvaluateGradData = false,
+
619 const bool isEvaluateHessianData = false);
+
620
+
621 /**
+
622 *@brief interpolate spin rho nodal data to quadrature data using FEEvaluation
+
623 *
+
624 */
+ +
626 dealii::MatrixFree<3, double> & matrixFreeData,
+
627 const unsigned int dofHandlerId,
+
628 const unsigned int quadratureId,
+ + +
631 std::map<dealii::CellId, std::vector<double>> &quadratureValueData,
+
632 std::map<dealii::CellId, std::vector<double>> &quadratureGradValueData,
+
633 std::map<dealii::CellId, std::vector<double>> &quadratureHessianValueData,
+
634 const bool isEvaluateGradData = false,
+
635 const bool isEvaluateHessianData = false);
+
636
+
637 /**
+
638 *@brief interpolate nodal data to quadrature data using FEEvaluation
+
639 *
+
640 *@param[in] matrixFreeData matrix free data object
+
641 *@param[in] nodalField nodal data to be interpolated
+
642 *@param[out] quadratureValueData to be computed at quadrature points
+
643 *@param[out] quadratureGradValueData to be computed at quadrature points
+
644 *@param[in] isEvaluateGradData denotes a flag to evaluate gradients or not
+
645 */
+ +
647 dealii::MatrixFree<3, double> & matrixFreeData,
+
648 const unsigned int dofHandlerId,
+
649 const unsigned int quadratureId,
+ +
651 std::map<dealii::CellId, std::vector<double>> &quadratureValueData,
+
652 std::map<dealii::CellId, std::vector<double>> &quadratureGradValueData,
+
653 const bool isEvaluateGradData = false);
+
654
+
655
+
656 /**
+
657 *@brief interpolate nodal data to quadrature data using FEEvaluation
+
658 *
+
659 *@param[in] matrixFreeData matrix free data object
+
660 *@param[in] nodalField nodal data to be interpolated
+
661 *@param[in] matrix free dofHandler id
+
662 *@param[in] matrix free quadrature id
+
663 *@param[out] quadratureValueData to be computed at quadrature points
+
664 *@param[out] quadratureGradValueData to be computed at quadrature points
+
665 *@param[in] isEvaluateGradData denotes a flag to evaluate gradients or not
+
666 */
+ +
668 dealii::MatrixFree<3, double> & matrixFreeData,
+
669 const unsigned int dofHandlerId,
+
670 const unsigned int quadratureId,
+ +
672 std::map<dealii::CellId, std::vector<double>> &quadratureValueData,
+
673 std::map<dealii::CellId, std::vector<double>> &quadratureGradValueData,
+
674 const bool isEvaluateGradData);
+
675
+
676 /**
+
677 *@brief add atomic densities at quadrature points
+
678 *
+
679 */
+
680 void
+ +
682 std::map<dealii::CellId, std::vector<double>> &quadratureValueData,
+
683 std::map<dealii::CellId, std::vector<double>> &quadratureGradValueData,
+
684 const bool isConsiderGradData = false);
+
685
+
686 /**
+
687 *@brief subtract atomic densities at quadrature points
+
688 *
+
689 */
+
690 void
+ +
692 std::map<dealii::CellId, std::vector<double>> &quadratureValueData,
+
693 std::map<dealii::CellId, std::vector<double>> &quadratureGradValueData,
+
694 const bool isConsiderGradData = false);
+
695
+
696
+
697 /**
+
698 *@brief Finds the global dof ids of the nodes containing atoms.
+
699 *
+
700 * @param[in] dofHandler
+
701 * @param[out] atomNodeIdToChargeValueMap local map of global dof id to atom
+
702 *charge id
+
703 */
+
704 void
+
705 locateAtomCoreNodes(const dealii::DoFHandler<3> &_dofHandler,
+
706 std::map<dealii::types::global_dof_index, double>
+ +
708
+
709 /**
+
710 *@brief Sets homogeneous dirichlet boundary conditions on a node farthest from
+
711 * all atoms (pinned node). This is only done in case of periodic boundary
+
712 *conditions to get an unique solution to the total electrostatic potential
+
713 *problem.
+
714 *
+
715 * @param[in] dofHandler
+
716 * @param[in] constraintMatrixBase base dealii::AffineConstraints<double>
+
717 *object
+
718 * @param[out] constraintMatrix dealii::AffineConstraints<double> object
+
719 *with homogeneous Dirichlet boundary condition entries added
+
720 */
+
721 void
+ +
723 const dealii::DoFHandler<3> & _dofHandler,
+
724 const dealii::AffineConstraints<double> &constraintMatrixBase,
+
725 dealii::AffineConstraints<double> & constraintMatrix);
+
726
+
727 void
+ +
729
+ +
731
+
732 void
+ +
734 void
+ +
736 void
+ +
738 std::vector<std::vector<distributedCPUVec<double>>> eigenVectors);
+
739 void
+ +
741
+
742 /**
+
743 *@brief computes nodal electron-density from cell quadrature data using project function of dealii
+
744 */
+
745 void
+ +
747
+
748
+
749 /**
+
750 *@brief computes density nodal data from wavefunctions
+
751 */
+
752 void
+ + + + +
757#endif
+ + + +
761
+
762
+
763 void
+ + + + +
768#endif
+ + + + + +
774
+
775 void
+ +
777 void
+ +
779 void
+ +
781 void
+
782 loadPSIFiles(unsigned int Z,
+
783 unsigned int n,
+
784 unsigned int l,
+
785 unsigned int &flag);
+
786 void
+ +
788 const dealii::DoFHandler<3> & _dofHandler,
+
789 const unsigned int lpspQuadratureId,
+
790 const dealii::MatrixFree<3, double> & _matrix_free_data,
+
791 const unsigned int _phiExtDofHandlerIndex,
+
792 const dealii::AffineConstraints<double> &phiExtConstraintMatrix,
+
793 const std::map<dealii::types::global_dof_index, dealii::Point<3>>
+ + + +
797 std::map<dealii::CellId, std::vector<double>> & _pseudoValues,
+
798 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ +
800 void
+ +
802 void
+ +
804
+
805
+
806 /**
+
807 *@brief Sets homegeneous dirichlet boundary conditions for total potential constraints on
+
808 * non-periodic boundary (boundary id==0).
+
809 *
+
810 * @param[in] dofHandler
+
811 * @param[out] constraintMatrix dealii::AffineConstraints<double> object
+
812 *with homogeneous Dirichlet boundary condition entries added
+
813 */
+
814 void
+ +
816 const dealii::DoFHandler<3> & _dofHandler,
+
817 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
+
818 dealii::AffineConstraints<double> & constraintMatrix);
+
819
+
820 void
+ +
822
+
823 /**
+
824 *@brief Computes total charge by integrating the electron-density
+
825 */
+
826 double
+
827 totalCharge(const dealii::DoFHandler<3> & dofHandlerOfField,
+ +
829 std::map<dealii::CellId, std::vector<double>> &rhoQuadValues);
+
830
+
831
+
832 double
+
833 totalCharge(const dealii::DoFHandler<3> & dofHandlerOfField,
+ +
835
+
836
+
837 double
+ +
839 const dealii::DoFHandler<3> & dofHandlerOfField,
+
840 const std::map<dealii::CellId, std::vector<double>> *rhoQuadValues);
+
841
+
842
+
843 double
+
844 totalCharge(const dealii::MatrixFree<3, double> &matrixFreeDataObject,
+ +
846
+
847
+
848 void
+
849 dipole(const dealii::DoFHandler<3> &dofHandlerOfField,
+
850 const std::map<dealii::CellId, std::vector<double>> *rhoQuadValues,
+
851 bool centerofCharge);
+
852
+
853 double
+
854 rhofieldl2Norm(const dealii::MatrixFree<3, double> &matrixFreeDataObject,
+ +
856 const unsigned int dofHandlerId,
+
857 const unsigned int quadratureId);
+
858
+
859 double
+ +
861 const dealii::MatrixFree<3, double> &matrixFreeDataObject,
+ + +
864 const unsigned int dofHandlerId,
+
865 const unsigned int quadratureId);
+
866
+
867
+
868 double
+
869 fieldGradl2Norm(const dealii::MatrixFree<3, double> &matrixFreeDataObject,
+ +
871
+
872 /**
+
873 *@brief l2 projection
+
874 */
+
875 void
+ +
877 const dealii::MatrixFree<3, double> & matrixFreeDataObject,
+
878 const dealii::AffineConstraints<double> & constraintMatrix,
+
879 const unsigned int dofHandlerId,
+
880 const unsigned int quadratureId,
+
881 const std::map<dealii::CellId, std::vector<double>> &quadratureValueData,
+ +
883
+
884 /**
+
885 *@brief l2 projection
+
886 */
+
887 void
+ +
889 const dealii::MatrixFree<3, double> & matrixFreeDataObject,
+
890 const dealii::AffineConstraints<double> & constraintMatrix,
+
891 const unsigned int dofHandlerId,
+
892 const unsigned int quadratureId,
+
893 const std::map<dealii::CellId, std::vector<double>> &quadratureValueData,
+ +
895
+
896 /**
+
897 *@brief Computes net magnetization from the difference of local spin densities
+
898 */
+
899 double
+ +
901 const std::map<dealii::CellId, std::vector<double>> *rhoQuadValues);
+
902
+
903 /**
+
904 *@brief normalize the input electron density
+
905 */
+
906 void
+ +
908
+
909 /**
+
910 *@brief normalize the output electron density in each scf
+
911 */
+
912 void
+ +
914
+
915 /**
+
916 *@brief normalize the electron density
+
917 */
+
918 void
+ +
920
+
921 /**
+
922 *@brief Computes output electron-density from wavefunctions
+
923 */
+
924 void
+ + + + +
929#endif
+ + + +
933 const bool isGroundState = false);
+
934
+
935
+
936 void
+ +
938
+
939 /**
+
940 *@brief Mixing schemes for mixing electron-density
+
941 */
+
942 double
+ +
944
+
945 double
+ +
947
+
948 double
+ + + + + +
954#endif
+ + + +
958
+
959 double
+ + + + + +
965#endif
+ + + +
969
+
970 double
+ +
972
+
973 double
+ +
975 const unsigned int scfIter);
+
976
+
977 /**
+
978 * Re solves the all electrostatics on a h refined mesh, and computes
+
979 * the corresponding energy. This function
+
980 * is called after reaching the ground state electron density. Currently the
+
981 * h refinement is hardcoded to a one subdivison of carser mesh
+
982 * FIXME: The function is not yet extened to the case when point group
+
983 * symmetry is used. However, it works for time reversal symmetry.
+
984 *
+
985 */
+
986 void
+ + + + +
991#endif
+
992 );
+
993
+
994 /**
+
995 *@brief Computes Fermi-energy obtained by imposing constraint on the number of electrons
+
996 */
+
997 void
+ +
999 const std::vector<std::vector<double>> &eigenValuesInput,
+
1000 const double numElectronsInput);
+
1001 /**
+
1002 *@brief Computes Fermi-energy obtained by imposing separate constraints on the number of spin-up and spin-down electrons
+
1003 */
+
1004 void
+ +
1006 const std::vector<std::vector<double>> &eigenValuesInput);
+
1007
+
1008 /**
+
1009 *@brief compute density of states and local density of states
+
1010 */
+
1011 void
+
1012 compute_tdos(const std::vector<std::vector<double>> &eigenValuesInput,
+
1013 const unsigned int highestStateOfInterest,
+
1014 const std::string & fileName);
+
1015
+
1016 void
+
1017 compute_ldos(const std::vector<std::vector<double>> &eigenValuesInput,
+
1018 const std::string & fileName);
+
1019
+
1020 void
+
1021 compute_pdos(const std::vector<std::vector<double>> &eigenValuesInput,
+
1022 const std::string & fileName);
+
1023
+
1024
+
1025 /**
+
1026 *@brief compute localization length
+
1027 */
+
1028 void
+ +
1030
+
1031 /**
+
1032 *@brief write wavefunction solution fields
+
1033 */
+
1034 void
+ +
1036
+
1037 /**
+
1038 *@brief write electron density solution fields
+
1039 */
+
1040 void
+ +
1042
+
1043 /**
+
1044 *@brief write the KS eigen values for given BZ sampling/path
+
1045 */
+
1046 void
+ +
1048
+
1049 /**
+
1050 *@brief Computes the volume of the domain
+
1051 */
+
1052 double
+
1053 computeVolume(const dealii::DoFHandler<3> &_dofHandler);
+
1054
+
1055 /**
+
1056 *@brief Deforms the domain by the given deformation gradient and reinitializes the
+
1057 * dftClass datastructures.
+
1058 */
+
1059 void
+
1060 deformDomain(const dealii::Tensor<2, 3, double> &deformationGradient,
+
1061 const bool vselfPerturbationUpdateForStress = false,
+
1062 const bool useSingleAtomSolutionsOverride = false,
+
1063 const bool print = true);
+
1064
+
1065 /**
+
1066 *@brief Computes inner Product and Y = alpha*X + Y for complex vectors used during
+
1067 * periodic boundary conditions
+
1068 */
+
1069
+
1070#ifdef USE_COMPLEX
+
1071 std::complex<double>
+ +
1073
+
1074 void
+
1075 alphaTimesXPlusY(std::complex<double> alpha,
+ + +
1078
+
1079#endif
+
1080 /**
+
1081 *@brief Sets dirichlet boundary conditions for total potential constraints on
+
1082 * non-periodic boundary (boundary id==0). Currently setting homogeneous bc
+
1083 *
+
1084 */
+
1085 void
+ +
1087
+
1088
+
1089
+ + +
1092
+
1093 /**
+
1094 * stores required data for Kohn-Sham problem
+
1095 */
+ +
1097 std::set<unsigned int> atomTypes;
+
1098
+
1099 /// FIXME: eventually it should be a map of atomic number to struct-
+
1100 /// {valence number, mesh input etc}
+
1101 std::map<unsigned int, unsigned int> d_atomTypeAtributes;
+
1102
+
1103 /// FIXME: remove atom type atributes from atomLocations
+
1104 std::vector<std::vector<double>> atomLocations, atomLocationsFractional,
+ +
1106 std::vector<std::vector<double>> d_atomLocationsAutoMesh;
+
1107 std::vector<std::vector<double>> d_imagePositionsAutoMesh;
+
1108
+
1109 /// Gaussian displacements of atoms read from file
+
1110 std::vector<dealii::Tensor<1, 3, double>> d_atomsDisplacementsGaussianRead;
+
1111
+
1112 ///
+ +
1114
+
1115 ///
+ +
1117
+ +
1119
+
1120 /// Gaussian generator parameter for force computation and Gaussian
+
1121 /// deformation of atoms and FEM mesh Gaussian generator: Gamma(r)=
+
1122 /// exp(-(r/d_gaussianConstant)^2) Stored for all domain atoms
+
1123 std::vector<double> d_gaussianConstantsForce;
+
1124
+
1125 /// Gaussian constants for automesh mesh movement stored for all domain
+
1126 /// atoms
+
1127 std::vector<double> d_gaussianConstantsAutoMesh;
+
1128
+
1129 /// composite generator flat top widths for all domain atoms
+
1130 std::vector<double> d_generatorFlatTopWidths;
+
1131
+
1132 /// flat top widths for all domain atoms in case of automesh mesh movement
+
1133 /// composite gaussian
+
1134 std::vector<double> d_flatTopWidthsAutoMeshMove;
+
1135
+
1136 /// smeared charge widths for all domain atoms
+
1137 std::vector<double> d_smearedChargeWidths;
+
1138
+
1139 /// smeared charge normalization scaling for all domain atoms
+
1140 std::vector<double> d_smearedChargeScaling;
+
1141
+
1142 /// nearest atom ids for all domain atoms
+
1143 std::vector<unsigned int> d_nearestAtomIds;
+
1144
+
1145 /// nearest atom distances for all domain atoms
+
1146 std::vector<double> d_nearestAtomDistances;
+
1147
+
1148 ///
+ +
1150
+
1151 /// vector of lendth number of periodic image charges with corresponding
+
1152 /// master chargeIds
+
1153 std::vector<int> d_imageIds;
+
1154 // std::vector<int> d_imageIdsAutoMesh;
+
1155
+
1156
+
1157 /// vector of length number of periodic image charges with corresponding
+
1158 /// charge values
+
1159 std::vector<double> d_imageCharges;
+
1160
+
1161 /// vector of length number of periodic image charges with corresponding
+
1162 /// positions in cartesian coordinates
+
1163 std::vector<std::vector<double>> d_imagePositions;
+
1164
+
1165 /// globalChargeId to ImageChargeId Map
+
1166 std::vector<std::vector<int>> d_globalChargeIdToImageIdMap;
+
1167
+
1168 /// vector of lendth number of periodic image charges with corresponding
+
1169 /// master chargeIds , generated with a truncated pspCutoff
+
1170 std::vector<int> d_imageIdsTrunc;
+
1171
+
1172 /// vector of length number of periodic image charges with corresponding
+
1173 /// charge values , generated with a truncated pspCutoff
+
1174 std::vector<double> d_imageChargesTrunc;
+
1175
+
1176 /// vector of length number of periodic image charges with corresponding
+
1177 /// positions in cartesian coordinates, generated with a truncated pspCutOff
+
1178 std::vector<std::vector<double>> d_imagePositionsTrunc;
+
1179
+
1180 /// globalChargeId to ImageChargeId Map generated with a truncated pspCutOff
+
1181 std::vector<std::vector<int>> d_globalChargeIdToImageIdMapTrunc;
+
1182
+
1183 /// distance from the domain till which periodic images will be considered
+
1184 double d_pspCutOff = 15.0;
+
1185
+
1186 /// distance from the domain till which periodic images will be considered
+
1187 const double d_pspCutOffTrunc = 15.0;
+
1188
+
1189 /// cut-off distance from atom till which non-local projectors are
+
1190 /// non-trivial
+
1191 double d_nlPSPCutOff = 8.0;
+
1192
+
1193 /// non-intersecting smeared charges of all atoms at quad points
+
1194 std::map<dealii::CellId, std::vector<double>> d_bQuadValuesAllAtoms;
+
1195
+
1196 /// non-intersecting smeared charge gradients of all atoms at quad points
+
1197 std::map<dealii::CellId, std::vector<double>> d_gradbQuadValuesAllAtoms;
+
1198
+
1199 /// non-intersecting smeared charges atom ids of all atoms at quad points
+
1200 std::map<dealii::CellId, std::vector<int>> d_bQuadAtomIdsAllAtoms;
+
1201
+
1202 /// non-intersecting smeared charges atom ids of all atoms (with image atom
+
1203 /// ids separately accounted) at quad points
+
1204 std::map<dealii::CellId, std::vector<int>> d_bQuadAtomIdsAllAtomsImages;
+
1205
+
1206 /// map of cell and non-trivial global atom ids (no images) for smeared
+
1207 /// charges for each bin
+
1208 std::map<dealii::CellId, std::vector<unsigned int>>
+ +
1210
+
1211 /// map of cell and non-trivial global atom ids (no images) for smeared
+
1212 /// charge for each bin
+
1213 std::vector<std::map<dealii::CellId, std::vector<unsigned int>>>
+ +
1215
+
1216 /// map of cell and non-trivial global atom and image ids for smeared
+
1217 /// charges for each bin
+
1218 std::map<dealii::CellId, std::vector<unsigned int>>
+ +
1220
+
1221 /// map of cell and non-trivial global atom and image ids for smeared charge
+
1222 /// for each bin
+
1223 std::vector<std::map<dealii::CellId, std::vector<unsigned int>>>
+ +
1225
+
1226 /// minimum smeared charge width
+
1227 const double d_smearedChargeWidthMin = 0.4;
+
1228
+
1229 std::vector<orbital> waveFunctionsVector;
+
1230 std::map<unsigned int,
+
1231 std::map<unsigned int,
+
1232 std::map<unsigned int, alglib::spline1dinterpolant>>>
+ +
1234 std::map<unsigned int,
+
1235 std::map<unsigned int, std::map<unsigned int, double>>>
+ +
1237
+
1238 /**
+
1239 * meshGenerator based object
+
1240 */
+ +
1242
+ +
1244 unsigned int d_autoMesh;
+
1245
+
1246
+
1247 /// affine transformation object
+ +
1249
+
1250 /// meshMovementGaussianClass object
+ +
1252
+
1253 std::vector<dealii::Tensor<1, 3, double>>
+ +
1255 std::vector<dealii::Point<3>> d_controlPointLocationsCurrentMove;
+
1256
+
1257 /// volume of the domain
+ +
1259
+
1260 /// init wfc trunctation radius
+ +
1262
+
1263 /**
+
1264 * dealii based FE data structres
+
1265 */
+
1266 dealii::FESystem<3> FE, FEEigen;
+ + + + + + + + + + + + + +
1280 unsigned int d_gllQuadratureId;
+ + + + + + +
1287 dealii::MatrixFree<3, double> matrix_free_data, d_matrixFreeDataPRefined;
+
1288 std::shared_ptr<
+ +
1290 double,
+ + +
1293#if defined(DFTFE_WITH_DEVICE)
+
1294 std::shared_ptr<
+ +
1296 double,
+ +
1298 basisOperationsPtrDevice;
+
1299#endif
+
1300 std::map<dealii::types::global_dof_index, dealii::Point<3>> d_supportPoints,
+ +
1302 std::vector<const dealii::AffineConstraints<double> *> d_constraintsVector;
+
1303 std::vector<const dealii::AffineConstraints<double> *>
+ +
1305
+
1306 /**
+
1307 * parallel objects
+
1308 */
+ +
1310#if defined(DFTFE_WITH_DEVICE)
+
1311 utils::DeviceCCLWrapper *d_devicecclMpiCommDomainPtr;
+
1312#endif
+ + + +
1316 const unsigned int n_mpi_processes;
+
1317 const unsigned int this_mpi_process;
+ + + +
1321 std::vector<dealii::types::global_dof_index> local_dof_indicesReal,
+ +
1323 std::vector<dealii::types::global_dof_index> localProc_dof_indicesReal,
+ +
1325 std::vector<bool> selectedDofsHanging;
+
1326
+ + +
1329
+ +
1331
+ +
1333#ifdef DFTFE_WITH_DEVICE
+ + +
1336#endif
+
1337
+ +
1339
+ +
1341#ifdef DFTFE_WITH_DEVICE
+ + +
1344#endif
+
1345
+
1346 const std::string d_dftfeScratchFolderName;
+
1347
+
1348 /**
+
1349 * chebyshev subspace iteration solver objects
+
1350 *
+
1351 */
+ +
1353#ifdef DFTFE_WITH_DEVICE
+ + +
1356#endif
+
1357
+
1358 /**
+
1359 * constraint Matrices
+
1360 */
+
1361
+
1362 /**
+
1363 *object which is used to store dealii constraint matrix information
+
1364 *using STL vectors. The relevant dealii constraint matrix
+
1365 *has hanging node constraints and periodic constraints(for periodic
+
1366 *problems) used in eigen solve
+
1367 */
+ +
1369
+
1370
+
1371 /**
+
1372 *object which is used to store dealii constraint matrix information
+
1373 *using STL vectors. The relevant dealii constraint matrix
+
1374 *has hanging node constraints used in Poisson problem solution
+
1375 *
+
1376 */
+ +
1378
+
1379
+
1380#ifdef DFTFE_WITH_DEVICE
+
1381 dftUtils::constraintMatrixInfoDevice d_constraintsNoneDataInfoDevice;
+
1382#endif
+
1383
+
1384
+
1385 dealii::AffineConstraints<double> constraintsNone, constraintsNoneEigen,
+ +
1387
+
1388 dealii::AffineConstraints<double> d_constraintsForTotalPotentialElectro;
+
1389
+
1390 dealii::AffineConstraints<double> d_constraintsForHelmholtzRhoNodal;
+
1391
+
1392 dealii::AffineConstraints<double> d_constraintsPRefined;
+
1393
+
1394 dealii::AffineConstraints<double> d_constraintsPRefinedOnlyHanging;
+
1395
+
1396 dealii::AffineConstraints<double> d_constraintsRhoNodal;
+
1397
+
1398 dealii::AffineConstraints<double> d_constraintsRhoNodalOnlyHanging;
+
1399
+ +
1401
+
1402 /**
+
1403 * data storage for Kohn-Sham wavefunctions
+
1404 */
+
1405 std::vector<std::vector<double>> eigenValues;
+
1406
+
1407 std::vector<std::vector<double>> d_densityMatDerFermiEnergy;
+
1408
+
1409 /// Spectrum split higher eigenvalues computed in Rayleigh-Ritz step
+
1410 std::vector<std::vector<double>> eigenValuesRRSplit;
+
1411
+
1412 /**
+
1413 * The indexing of d_eigenVectorsFlattenedHost and
+
1414 * d_eigenVectorsFlattenedDevice [kPoint * numSpinComponents *
+
1415 * numLocallyOwnedNodes * numWaveFunctions + iSpin * numLocallyOwnedNodes *
+
1416 * numWaveFunctions + iNode * numWaveFunctions + iWaveFunction]
+
1417 */
+ + + +
1421
+ + + + + + +
1428
+
1429 /// device eigenvectors
+
1430#ifdef DFTFE_WITH_DEVICE
+ + + + + + + + + +
1440#endif
+
1441
+
1442 /// parallel message stream
+
1443 dealii::ConditionalOStream pcout;
+
1444
+
1445 /// compute-time logger
+
1446 dealii::TimerOutput computing_timer;
+
1447 dealii::TimerOutput computingTimerStandard;
+
1448
+
1449 /// A plain global timer to track only the total elapsed time after every
+
1450 /// ground-state solve
+
1451 dealii::Timer d_globalTimer;
+
1452
+
1453 // dft related objects
+
1454 std::shared_ptr<std::map<dealii::CellId, std::vector<double>>> rhoInValues,
+ +
1456
+
1457 std::map<dealii::CellId, std::vector<double>> d_phiInValues, d_phiOutValues;
+
1458
+ +
1460
+ + + +
1464 std::deque<distributedCPUVec<double>> d_rhoInNodalVals, d_rhoOutNodalVals;
+
1465
+ + +
1468
+ + +
1471
+ + +
1474
+
1475 std::deque<distributedCPUVec<double>> d_rhoInSpin0NodalVals,
+ +
1477 std::deque<distributedCPUVec<double>> d_rhoInSpin1NodalVals,
+ +
1479
+
1480 std::map<dealii::CellId, std::vector<double>> d_rhoOutValuesLpspQuad,
+ + +
1483
+
1484 /// for low rank jacobian inverse approximation
+
1485 std::deque<distributedCPUVec<double>> d_vcontainerVals;
+
1486 std::deque<distributedCPUVec<double>> d_fvcontainerVals;
+
1487 std::deque<distributedCPUVec<double>> d_vSpin0containerVals;
+
1488 std::deque<distributedCPUVec<double>> d_fvSpin0containerVals;
+
1489 std::deque<distributedCPUVec<double>> d_vSpin1containerVals;
+
1490 std::deque<distributedCPUVec<double>> d_fvSpin1containerVals;
+ +
1492 unsigned int d_rankCurrentLRD;
+ + + +
1496
+
1497 /// for xl-bomd
+
1498 std::map<dealii::CellId, std::vector<double>> d_rhoAtomsValues,
+ +
1500 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ + +
1503
+
1504 std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+ +
1506 std::shared_ptr<std::map<dealii::CellId, std::vector<double>>>
+ +
1508
+
1509
+
1510 // storage for total electrostatic potential solution vector corresponding
+
1511 // to input scf electron density
+ +
1513
+
1514 // storage for total electrostatic potential solution vector corresponding
+
1515 // to output scf electron density
+ +
1517
+
1518 // storage for sum of nuclear electrostatic potential
+ +
1520
+
1521 // storage for projection of rho cell quadrature data to nodal field
+ +
1523
+
1524 // storage for projection of rho cell quadrature data to nodal field
+ +
1526
+
1527 // storage for projection of rho cell quadrature data to nodal field
+ +
1529
+
1530 // storage of densities for xl-bomd
+
1531 std::deque<distributedCPUVec<double>> d_groundStateDensityHistory;
+
1532
+
1533 std::map<dealii::CellId, std::vector<double>> d_pseudoVLoc;
+
1534
+
1535 /// Internal data:: map for cell id to Vpseudo local of individual atoms.
+
1536 /// Only for atoms whose psp tail intersects the local domain.
+
1537 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ +
1539
+
1540
+
1541 std::vector<std::vector<double>> d_localVselfs;
+
1542
+
1543 // nonlocal pseudopotential related objects used only for pseudopotential
+
1544 // calculation
+
1545 std::map<dealii::CellId, std::vector<double>> d_rhoCore;
+
1546
+
1547 std::map<dealii::CellId, std::vector<double>> d_gradRhoCore;
+
1548
+
1549 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ +
1551
+
1552 std::map<dealii::CellId, std::vector<double>> d_hessianRhoCore;
+
1553
+
1554 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ +
1556
+
1557 //
+
1558 // Store the map between the "pseudo" wave function Id and the function Id
+
1559 // details (i.e., global splineId, l quantum number, m quantum number)
+
1560 //
+
1561 std::vector<std::vector<int>> d_pseudoWaveFunctionIdToFunctionIdDetails;
+
1562
+
1563 //
+
1564 // Store the map between the "pseudo" potential Id and the function Id
+
1565 // details (i.e., global splineId, l quantum number)
+
1566 //
+
1567 std::vector<std::vector<int>> d_deltaVlIdToFunctionIdDetails;
+
1568
+
1569 //
+
1570 // vector to store the number of pseudowave functions/pseudo potentials
+
1571 // associated with an atom (global nonlocal psp atom id)
+
1572 //
+ + + +
1576
+
1577 //
+
1578 // matrices denoting the sparsity of nonlocal projectors and elemental
+
1579 // projector matrices
+
1580 //
+
1581 std::map<unsigned int, std::vector<int>> d_sparsityPattern;
+
1582 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
1584 std::vector<std::vector<unsigned int>> d_elementIdsInAtomCompactSupport;
+
1585 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
1587 std::vector<std::vector<int>> d_nonLocalAtomIdsInElement;
+
1588 std::vector<unsigned int> d_nonLocalAtomIdsInCurrentProcess;
+ + +
1591 std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+ +
1593#ifdef USE_COMPLEX
+
1594 std::vector<std::vector<std::vector<std::complex<double>>>>
+ + +
1597
+
1598
+
1599 std::vector<distributedCPUVec<std::complex<double>>>
+ +
1601
+
1602 /// parallel vector used in nonLocalHamiltionian times wavefunction vector
+
1603 /// computation pre-initialization of the parallel layout is more efficient
+
1604 /// than creating the parallel layout for every nonLocalHamiltionan times
+
1605 /// wavefunction computation
+ + +
1608#else
+
1609 std::vector<std::vector<std::vector<double>>>
+ + +
1612
+
1613
+
1614 std::vector<distributedCPUVec<double>> d_projectorKetTimesVectorPar;
+
1615
+
1616 /// parallel vector used in nonLocalHamiltionian times wavefunction vector
+
1617 /// computation pre-initialization of the parallel layout is more efficient
+
1618 /// than creating the parallel layout for every nonLocalHamiltionan times
+
1619 /// wavefunction computation
+ +
1621#endif
+
1622
+
1623 //
+
1624 // storage for nonlocal pseudopotential constants
+
1625 //
+
1626 std::vector<std::vector<double>> d_nonLocalPseudoPotentialConstants;
+
1627
+
1628 //
+
1629 // spline vector for data corresponding to each spline of pseudo
+
1630 // wavefunctions
+
1631 //
+
1632 std::vector<alglib::spline1dinterpolant> d_pseudoWaveFunctionSplines;
+
1633
+
1634 //
+
1635 // spline vector for data corresponding to each spline of delta Vl
+
1636 //
+
1637 std::vector<alglib::spline1dinterpolant> d_deltaVlSplines;
+
1638
+
1639 /* Flattened Storage for precomputed nonlocal pseudopotential quadrature
+
1640 * data. This is to speedup the configurational force computation. Data
+
1641 * format: vector(numNonLocalAtomsCurrentProcess with non-zero compact
+
1642 * support, vector(number pseudo wave
+
1643 * functions,map<cellid,num_quad_points*2>)). Refer to
+
1644 * (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for details of the
+
1645 * expression of the configurational force terms for the norm-conserving
+
1646 * Troullier-Martins pseudopotential in the Kleinman-Bylander form. The same
+
1647 * expressions also extend to the Optimized Norm-Conserving Vanderbilt
+
1648 * (ONCV) pseudopotentials.
+
1649 */
+
1650 std::vector<dataTypes::number> d_nonLocalPSP_ZetalmDeltaVl;
+
1651
+
1652
+
1653 /* Flattened Storage for precomputed nonlocal pseudopotential quadrature
+
1654 * data. This is to speedup the configurational stress computation. Data
+
1655 * format: vector(numNonLocalAtomsCurrentProcess with non-zero compact
+
1656 * support, vector(number pseudo wave
+
1657 * functions,map<cellid,num_quad_points*num_k_points*3*2>)). Refer to
+
1658 * (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for details of the
+
1659 * expression of the configurational force terms for the norm-conserving
+
1660 * Troullier-Martins pseudopotential in the Kleinman-Bylander form. The same
+
1661 * expressions also extend to the Optimized Norm-Conserving Vanderbilt
+
1662 * (ONCV) pseudopotentials.
+
1663 */
+
1664 std::vector<dataTypes::number>
+ +
1666
+
1667
+
1668 /// map from cell number to set of non local atom ids (local numbering)
+
1669 std::map<unsigned int, std::vector<unsigned int>>
+ +
1671
+
1672 /// vector of size num physical cells
+ +
1674
+
1675 /// vector of size num physical cell with starting index for each cell for
+
1676 /// the above array
+
1677 std::vector<unsigned int>
+ +
1679
+ +
1681
+
1682 /// map from local nonlocal atomid to vector over cells
+
1683 std::map<unsigned int, std::vector<unsigned int>>
+ +
1685
+ +
1687
+
1688
+ +
1690 std::vector<std::vector<unsigned int>> d_projectorKetTimesVectorLocalIds;
+
1691 //
+
1692 // vector of outermost Points for various radial Data
+
1693 //
+ + + +
1697
+
1698 /// map of atom node number and atomic weight
+
1699 std::map<dealii::types::global_dof_index, double> d_atomNodeIdToChargeMap;
+
1700
+
1701 /// vselfBinsManager object
+ +
1703
+
1704 /// Gateaux derivative of vself field with respect to affine strain tensor
+
1705 /// components using central finite difference. This is used for cell stress
+
1706 /// computation
+
1707 std::vector<distributedCPUVec<double>> d_vselfFieldGateauxDerStrainFDBins;
+
1708
+
1709 /// Compute Gateaux derivative of vself field in bins with respect to affine
+
1710 /// strain tensor components
+
1711 void
+ + + + +
1716#endif
+
1717 );
+
1718
+
1719 /// dftParameters object
+ +
1721
+
1722 /// kPoint cartesian coordinates
+
1723 std::vector<double> d_kPointCoordinates;
+
1724
+
1725 /// k point crystal coordinates
+
1726 std::vector<double> kPointReducedCoordinates;
+
1727
+
1728 /// k point weights
+
1729 std::vector<double> d_kPointWeights;
+
1730
+
1731 /// closest tria vertex
+
1732 std::vector<dealii::Point<3>> d_closestTriaVertexToAtomsLocation;
+
1733 std::vector<dealii::Tensor<1, 3, double>> d_dispClosestTriaVerticesToAtoms;
+
1734
+
1735 /// global k index of lower bound of the local k point set
+
1736 unsigned int lowerBoundKindex = 0;
+
1737 /**
+
1738 * Recomputes the k point cartesian coordinates from the crystal k point
+
1739 * coordinates and the current lattice vectors, which can change in each
+
1740 * ground state solve dutring cell optimization.
+
1741 */
+
1742 void
+ +
1744
+
1745 /// fermi energy
+ +
1747
+ +
1749
+ +
1751
+
1752 /// entropic energy
+ +
1754
+
1755 // chebyshev filter variables and functions
+
1756 // int numPass ; // number of filter passes
+
1757
+
1758 std::vector<double> a0;
+
1759 std::vector<double> bLow;
+
1760
+
1761 /// stores flag for first ever call to chebyshev filtering for a given FEM
+
1762 /// mesh vector for each k point and spin
+
1763 std::vector<bool> d_isFirstFilteringCall;
+
1764
+ +
1766
+ +
1768
+ +
1770
+
1771 /**
+
1772 * @ nscf variables
+
1773 */
+ +
1775 void
+ + + + +
1780 void
+ + + + + +
1786
+
1787 /**
+
1788 * @brief compute the maximum of the residual norm of the highest occupied state among all k points
+
1789 */
+
1790 double
+ +
1792 const std::vector<std::vector<double>>
+ +
1794 const std::vector<std::vector<double>> &eigenValuesAllkPoints,
+
1795 const double _fermiEnergy);
+
1796
+
1797
+
1798 /**
+
1799 * @brief compute the maximum of the residual norm of the highest state of interest among all k points
+
1800 */
+
1801 double
+ +
1803 const std::vector<std::vector<double>>
+ +
1805 const std::vector<std::vector<double>> &eigenValuesAllkPoints,
+
1806 const unsigned int highestState);
+
1807
+
1808
+
1809 void
+ +
1811 const unsigned int s,
+
1812 const unsigned int kPointIndex,
+ + + + +
1817 std::vector<double> & residualNormWaveFunctions,
+
1818 const bool computeResidual,
+
1819 const bool isSpectrumSplit = false,
+
1820 const bool useMixedPrec = false,
+
1821 const bool isFirstScf = false);
+
1822
+
1823
+
1824#ifdef DFTFE_WITH_DEVICE
+
1825 void
+ +
1827 const unsigned int s,
+
1828 const unsigned int kPointIndex,
+ + + + + +
1834 std::vector<double> &residualNormWaveFunctions,
+
1835 const bool computeResidual,
+
1836 const unsigned int numberRayleighRitzAvoidancePasses = 0,
+
1837 const bool isSpectrumSplit = false,
+
1838 const bool useMixedPrec = false,
+
1839 const bool isFirstScf = false);
+
1840#endif
+
1841
+
1842
+
1843#ifdef DFTFE_WITH_DEVICE
+
1844 void
+ +
1846 const unsigned int s,
+
1847 const unsigned int kPointIndex,
+ + + + + +
1853
+
1854#endif
+
1855
+
1856 void
+ +
1858 const unsigned int s,
+
1859 const unsigned int kPointIndex,
+ + + +
1863
+
1864 void
+ +
1866 const unsigned int spinType,
+
1867 const unsigned int kPointIndex,
+ + + +
1871 std::vector<double> & residualNormWaveFunctions,
+
1872 unsigned int ipass);
+
1873 };
+
+
1874
+
1875} // namespace dftfe
+
1876
+
1877#endif
+ + + + + +
This class performs the anderson mixing in a variable agnostic way This class takes can take differen...
Definition mixingClass.h:45
+
Definition FEBasisOperations.h:449
+
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:108
+
virtual void resetRhoNodalSplitIn(distributedCPUVec< double > &OutDensity)
+
unsigned int d_lpspQuadratureId
Definition dft.h:1278
+
unsigned int d_nonAtomicWaveFunctions
Number of random wavefunctions.
Definition dft.h:341
+
unsigned int d_densityQuadratureIdElectro
Definition dft.h:1286
+
dataTypes::number computeTraceXtHX(unsigned int numberWaveFunctionsEstimate)
+
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
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoCoreAtoms
Definition dft.h:1555
+
std::vector< unsigned int > d_nonLocalAtomIdsInCurrentProcess
Definition dft.h:1588
+
dealii::AffineConstraints< double > d_constraintsRhoNodal
Definition dft.h:1396
+
void resetRhoNodalIn(distributedCPUVec< double > &OutDensity)
+
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.
+
unsigned int d_smearedChargeQuadratureIdElectro
Definition dft.h:1276
+
std::vector< alglib::spline1dinterpolant > d_deltaVlSplines
Definition dft.h:1637
+
double fermiEnergyDown
Definition dft.h:1746
+ +
dealii::FESystem< 3 > FEEigen
Definition dft.h:1266
+
double totalMagnetization(const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)
Computes net magnetization from the difference of local spin densities.
+
std::map< dealii::CellId, std::vector< double > > d_rhoCore
Definition dft.h:1545
+
void normalizeRhoOutQuadValues()
normalize the output electron density in each scf
+
distributedCPUVec< double > d_rhoInNodalValuesRead
Definition dft.h:1461
+
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
+
const MPI_Comm mpi_communicator
Definition dft.h:1309
+
double d_entropicEnergy
entropic energy
Definition dft.h:1753
+
distributedCPUVec< double > d_phiTotRhoOut
Definition dft.h:1516
+
std::map< dealii::CellId, std::vector< double > > d_gradRhoAtomsValues
Definition dft.h:1499
+
void l2ProjectionQuadDensityMinusAtomicDensity(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const std::map< dealii::CellId, std::vector< double > > &quadratureValueData, distributedCPUVec< double > &nodalField)
l2 projection
+
dealii::MatrixFree< 3, double > d_matrixFreeDataPRefined
Definition dft.h:1287
+
void normalizeAtomicRhoQuadValues()
normalize the electron density
+
dftParameters * d_dftParamsPtr
dftParameters object
Definition dft.h:1720
+
dealii::IndexSet locally_relevant_dofsEigen
Definition dft.h:1319
+
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > rhoInValuesSpinPolarized
Definition dft.h:1455
+
distributedCPUVec< double > d_rhoNodalFieldRefined
Definition dft.h:1463
+
std::map< unsigned int, std::map< unsigned int, std::map< unsigned int, alglib::spline1dinterpolant > > > radValues
Definition dft.h:1233
+
bool d_isAtomsGaussianDisplacementsReadFromFile
Definition dft.h:1118
+
std::map< dealii::CellId, std::vector< double > > d_hessianRhoAtomsValues
Definition dft.h:1499
+
std::vector< bool > selectedDofsHanging
Definition dft.h:1325
+
std::vector< std::vector< std::vector< double > > > d_nonLocalProjectorElementMatricesConjugate
Definition dft.h:1610
+
std::map< dealii::CellId, std::vector< int > > d_bQuadAtomIdsAllAtoms
non-intersecting smeared charges atom ids of all atoms at quad points
Definition dft.h:1200
+
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsPRefined
Definition dft.h:1301
+
elpaScalaManager * d_elpaScala
Definition dft.h:1330
+
double d_groundStateEnergy
Definition dft.h:1746
+
unsigned int numElectronsDown
Definition dft.h:1096
+
dealii::Tensor< 2, 3, double > getCellStress() const
Gets the current cell stress from dftClass.
+ +
distributedCPUVec< double > d_rhoNodalFieldSpin0
Definition dft.h:1525
+
void writeDomainAndAtomCoordinates(const std::string Path) const
writes the current domain bounding vectors and atom coordinates to files for structural optimization ...
+
void writeBands()
write the KS eigen values for given BZ sampling/path
+
std::map< unsigned int, unsigned int > d_atomTypeAtributes
Definition dft.h:1101
+
std::deque< distributedCPUVec< double > > d_rhoInSpin0NodalVals
Definition dft.h:1475
+
double computeTraceXtKX(unsigned int numberWaveFunctionsEstimate)
+
std::map< unsigned int, std::vector< unsigned int > > d_cellIdToNonlocalAtomIdsLocalCompactSupportMap
map from cell number to set of non local atom ids (local numbering)
Definition dft.h:1670
+
distributedCPUVec< double > d_preCondResidualVector
Definition dft.h:1462
+
double getFreeEnergy() const
+
MixingScheme d_mixingScheme
Definition dft.h:1459
+
std::map< dealii::CellId, std::vector< double > > d_rhoInValuesLpspQuad
Definition dft.h:1481
+
unsigned int d_phiTotAXQuadratureIdElectro
Definition dft.h:1282
+
double d_domainVolume
volume of the domain
Definition dft.h:1258
+
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.
+
std::vector< std::vector< int > > d_globalChargeIdToImageIdMapTrunc
globalChargeId to ImageChargeId Map generated with a truncated pspCutOff
Definition dft.h:1181
+
const std::string d_dftfeScratchFolderName
Definition dft.h:1346
+
double nodalDensity_mixing_anderson_kerker(kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver)
+
std::vector< dealii::Point< 3 > > d_controlPointLocationsCurrentMove
Definition dft.h:1255
+
void run()
FIXME: legacy call, move to main.cc.
+
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(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, poissonSolverProblem< FEOrder, FEOrderElectro > &phiTotalSolverProblem, dealiiLinearSolver &CGSolver)
+
unsigned int d_densityDofHandlerIndexElectro
Definition dft.h:1272
+
std::map< unsigned int, std::map< unsigned int, std::map< unsigned int, double > > > outerValues
Definition dft.h:1236
+
dealii::DoFHandler< 3 > dofHandlerEigen
Definition dft.h:1267
+
unsigned int d_rankCurrentLRD
Definition dft.h:1492
+
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > d_bCellNonTrivialAtomIdsBins
Definition dft.h:1214
+
std::map< dealii::CellId, std::vector< double > > d_hessianRhoCore
Definition dft.h:1552
+
std::vector< std::vector< double > > atomLocationsFractional
Definition dft.h:1104
+
unsigned int d_helmholtzDofHandlerIndexElectro
Definition dft.h:1283
+
double getEntropicEnergy() const
+
std::deque< distributedCPUVec< double > > d_rhoOutSpin0NodalVals
Definition dft.h:1476
+
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > rhoOutValuesSpinPolarized
Definition dft.h:1455
+
void interpolateRhoNodalDataToQuadratureDataGeneral(dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, std::map< dealii::CellId, std::vector< double > > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)
interpolate rho nodal data to quadrature data using FEEvaluation
+
unsigned int d_nlpspQuadratureId
Definition dft.h:1277
+
void computeElectrostaticEnergyHRefined()
+
dealii::AffineConstraints< double > d_noConstraints
Definition dft.h:1386
+
std::vector< std::vector< double > > eigenValues
Definition dft.h:1405
+
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)....
+
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVector
Definition dft.h:1302
+
const unsigned int n_mpi_processes
Definition dft.h:1316
+
std::vector< double > d_outerMostPointPseudoProjectorData
Definition dft.h:1696
+
const MPI_Comm interBandGroupComm
Definition dft.h:1315
+
void computeJxWForRho(std::vector< double > &vecJxW)
Computes the JxW values used in the \int \rho.
+
distributedCPUVec< double > d_rhoInSpin0NodalValuesRead
Definition dft.h:1469
+
excManager * d_excManagerPtr
Definition dft.h:1090
+
dealii::IndexSet d_locallyRelevantDofsPRefined
Definition dft.h:1320
+
std::vector< std::vector< double > > getAtomLocationsFrac() const
Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and se...
+
distributedCPUVec< double > d_rhoInSpin1NodalValuesRead
Definition dft.h:1470
+
std::map< dealii::CellId, std::vector< double > > d_rhoAtomsValues
for xl-bomd
Definition dft.h:1498
+
void writeStructureEnergyForcesDataPostProcess(const std::string Path) const
writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA ...
+
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)
+
unsigned int d_eigenDofHandlerIndex
Definition dft.h:1269
+
dealii::IndexSet d_ghostProjectorIdsCurrentProcess
Definition dft.h:1590
+
std::vector< alglib::spline1dinterpolant > d_pseudoWaveFunctionSplines
Definition dft.h:1632
+
double d_minDist
Definition dft.h:1149
+
std::vector< std::vector< unsigned int > > d_projectorKetTimesVectorLocalIds
Definition dft.h:1690
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_gradRhoCoreAtoms
Definition dft.h:1550
+
std::vector< double > d_kPointCoordinates
kPoint cartesian coordinates
Definition dft.h:1723
+
std::vector< orbital > waveFunctionsVector
Definition dft.h:1229
+
double mixing_simple_spinPolarized()
+
void interpolateRhoNodalDataToQuadratureDataLpsp(dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isEvaluateGradData)
interpolate nodal data to quadrature data using FEEvaluation
+
chebyshevOrthogonalizedSubspaceIterationSolver d_subspaceIterationSolver
Definition dft.h:1352
+
std::vector< std::vector< double > > d_domainBoundingVectors
Definition dft.h:1105
+
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > rhoInValues
Definition dft.h:1454
+
unsigned int lowerBoundKindex
global k index of lower bound of the local k point set
Definition dft.h:1736
+
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 kohnShamEigenSpaceCompute(const unsigned int s, const unsigned int kPointIndex, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &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::vector< unsigned int > d_nonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads
Definition dft.h:1678
+
double computeVolume(const dealii::DoFHandler< 3 > &_dofHandler)
Computes the volume of the domain.
+
std::vector< distributedCPUVec< double > > d_vselfFieldGateauxDerStrainFDBins
Definition dft.h:1707
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_elementOneFieldIteratorsInAtomCompactSupport
Definition dft.h:1586
+
distributedCPUVec< double > getRhoNodalSplitOut() const
+
void interpolateElectroNodalDataToQuadratureDataGeneral(dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isEvaluateGradData=false)
interpolate nodal data to quadrature data using FEEvaluation
+
std::deque< distributedCPUVec< double > > d_groundStateDensityHistory
Definition dft.h:1531
+
std::vector< std::vector< unsigned int > > d_elementIdsInAtomCompactSupport
Definition dft.h:1584
+
void set()
atomic system pre-processing steps.
+
vselfBinsManager< FEOrder, FEOrderElectro > d_vselfBinsManager
vselfBinsManager object
Definition dft.h:1702
+
unsigned int d_phiTotDofHandlerIndexElectro
Definition dft.h:1281
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsDensityMatrixPrimeHost
Definition dft.h:1427
+
std::deque< distributedCPUVec< double > > d_vSpin0containerVals
Definition dft.h:1487
+
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
+
double fieldGradl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &field)
+
std::vector< std::vector< int > > d_deltaVlIdToFunctionIdDetails
Definition dft.h:1567
+
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesReal() const
Get local dofs local proc indices real.
+
unsigned int d_numEigenValues
Number of Kohn-Sham eigen values to be computed.
Definition dft.h:330
+
dealii::AffineConstraints< double > d_constraintsForTotalPotentialElectro
Definition dft.h:1388
+
std::vector< double > d_gaussianConstantsAutoMesh
Definition dft.h:1127
+
std::set< unsigned int > atomTypes
Definition dft.h:1097
+
std::map< dealii::CellId, std::vector< unsigned int > > d_bCellNonTrivialAtomIds
Definition dft.h:1209
+
void saveTriaInfoAndRhoNodalData()
save triangulation information and rho quadrature data to checkpoint file for restarts
+
void computeVselfFieldGateauxDerFD()
+
std::deque< distributedCPUVec< double > > d_vcontainerVals
for low rank jacobian inverse approximation
Definition dft.h:1485
+
dealii::TimerOutput computingTimerStandard
Definition dft.h:1447
+
void initializeKohnShamDFTOperator(const bool initializeCublas=true)
+
double d_freeEnergyInitial
Definition dft.h:1748
+
distributedCPUVec< double > d_phiExt
Definition dft.h:1519
+
std::deque< distributedCPUVec< double > > d_rhoOutSpin1NodalVals
Definition dft.h:1478
+
std::vector< double > d_smearedChargeWidths
smeared charge widths for all domain atoms
Definition dft.h:1137
+
dealii::IndexSet d_locallyOwnedProjectorIdsCurrentProcess
Definition dft.h:1589
+
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > rhoOutValues
Definition dft.h:1455
+
std::vector< dataTypes::number > d_nonLocalPSP_zetalmDeltaVlProductDistImageAtoms
Definition dft.h:1665
+
void applyPeriodicBCHigherOrderNodes()
Computes inner Product and Y = alpha*X + Y for complex vectors used during periodic boundary conditio...
+
distributedCPUVec< double > d_rhoOutSpin0NodalValues
Definition dft.h:1472
+
void interpolateRhoSpinNodalDataToQuadratureDataGeneral(dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalFieldSpin0, const distributedCPUVec< double > &nodalFieldSpin1, std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, std::map< dealii::CellId, std::vector< double > > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)
interpolate spin rho nodal data to quadrature data using FEEvaluation
+
unsigned int numLevels
Definition dft.h:1096
+
double d_residualNormPredicted
Definition dft.h:1494
+
void copyDensityFromVector(const std::vector< double > &rhoValuesVector, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues)
Copies the density stored in a flattened std::vector<double> format to std::map<dealii:cellId,...
+
dealii::IndexSet locally_owned_dofsEigen
Definition dft.h:1318
+
void calculateSmearedChargeWidths()
a
+
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField, std::map< dealii::CellId, std::vector< double > > &rhoQuadValues)
Computes total charge by integrating the electron-density.
+
std::vector< unsigned int > d_projecterKetTimesFlattenedVectorLocalIds
Definition dft.h:1689
+
std::vector< double > d_smearedChargeScaling
smeared charge normalization scaling for all domain atoms
Definition dft.h:1140
+
void kohnShamEigenSpaceFirstOrderDensityMatResponse(const unsigned int s, const unsigned int kPointIndex, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala)
+
bool d_kohnShamDFTOperatorsInitialized
Definition dft.h:1338
+
void writeMesh(std::string meshFileName)
+
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)
+
std::map< dealii::CellId, std::vector< double > > d_gradRhoOutValuesLpspQuad
Definition dft.h:1481
+
void compute_ldos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
+
double d_freeEnergy
Definition dft.h:1750
+
~dftClass()
dftClass destructor
+
double getCellVolume() const
Gets the current cell volume.
+
void initAtomicRho()
+
std::vector< int > d_numberPseudoAtomicWaveFunctions
Definition dft.h:1573
+
std::vector< double > kPointReducedCoordinates
k point crystal coordinates
Definition dft.h:1726
+
std::vector< double > d_kPointWeights
k point weights
Definition dft.h:1729
+
distributedCPUVec< double > d_rhoOutNodalValuesDistributed
Definition dft.h:1463
+
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPoints
Definition dft.h:1300
+
void trivialSolveForStress()
+
double fermiEnergyUp
Definition dft.h:1746
+
std::vector< std::vector< double > > d_imagePositionsTrunc
Definition dft.h:1178
+
std::vector< double > d_gaussianConstantsForce
Definition dft.h:1123
+
double nodalDensity_mixing_simple_kerker(kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver)
+
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...
+
void copyGradDensityToVector(const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues, std::vector< double > &gradRhoValuesVector)
Copies the gradient of density stored in a std::map<dealii:cellId, std::vector<double>> into a flatte...
+
void recomputeKPointCoordinates()
+
void nscf(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver)
+
dealii::DoFHandler< 3 > d_dofHandlerPRefined
Definition dft.h:1267
+
void kohnShamEigenSpaceComputeNSCF(const unsigned int spinType, const unsigned int kPointIndex, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, unsigned int ipass)
+
unsigned int d_phiExtDofHandlerIndexElectro
Definition dft.h:1269
+
double rhofieldl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField, const unsigned int dofHandlerId, const unsigned int quadratureId)
+
void noRemeshRhoDataInit()
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoAtomsValuesSeparate
Definition dft.h:1502
+
void determineOrbitalFilling()
+
void outputDensity()
write electron density solution fields
+
meshMovementAffineTransform d_affineTransformMesh
affine transformation object
Definition dft.h:1248
+
meshMovementGaussianClass d_gaussianMovePar
meshMovementGaussianClass object
Definition dft.h:1251
+
std::vector< std::vector< double > > getAtomLocationsCart() const
Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.
+
dftUtils::constraintMatrixInfo constraintsNoneEigenDataInfo
Definition dft.h:1368
+
std::deque< distributedCPUVec< double > > d_rhoOutNodalVals
Definition dft.h:1464
+
void computeTotalGradDensityFromSpinPolarised(const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoSpinValues, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues)
Computes the total gradient of density from the spin polarised densities.
+
void compute_pdos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
+
std::vector< double > d_upperBoundUnwantedSpectrumValues
Definition dft.h:1765
+
std::vector< double > d_nearestAtomDistances
nearest atom distances for all domain atoms
Definition dft.h:1146
+
std::deque< distributedCPUVec< double > > d_fvSpin0containerVals
Definition dft.h:1488
+
void initUnmovedTriangulation(dealii::parallel::distributed::Triangulation< 3 > &triangulation)
+
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > gradRhoInValues
Definition dft.h:1505
+
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...
+
void computeNodalRhoFromQuadData()
computes nodal electron-density from cell quadrature data using project function of dealii
+
forceClass< FEOrder, FEOrderElectro > * forcePtr
Definition dft.h:1327
+
kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > * d_kohnShamDFTOperatorPtr
Definition dft.h:1340
+
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.
+
std::deque< distributedCPUVec< double > > d_fvcontainerVals
Definition dft.h:1486
+
void calculateNearestAtomDistances()
a
+ +
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_gradRhoAtomsValuesSeparate
Definition dft.h:1501
+
unsigned int numElectronsUp
Definition dft.h:1096
+
void reInitializeKohnShamDFTOperator()
+
unsigned int d_numEigenValuesRR
Number of Kohn-Sham eigen values to be computed in the Rayleigh-Ritz step after spectrum splitting.
Definition dft.h:336
+
std::vector< int > d_imageIdsTrunc
Definition dft.h:1170
+
std::vector< dataTypes::number > d_nonLocalPSP_ZetalmDeltaVl
Definition dft.h:1650
+
dispersionCorrection d_dispersionCorr
Definition dft.h:1091
+
void writeDomainAndAtomCoordinates()
writes the current domain bounding vectors and atom coordinates to files, which are required for geom...
+
dealii::IndexSet d_locallyRelevantDofsRhoNodal
Definition dft.h:1320
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_rhoAtomsValuesSeparate
Definition dft.h:1501
+
double d_pspCutOff
distance from the domain till which periodic images will be considered
Definition dft.h:1184
+
std::vector< std::vector< double > > d_nonLocalPseudoPotentialConstants
Definition dft.h:1626
+
void initElectronicFields()
+
void loadTriaInfoAndRhoNodalData()
load triangulation information rho quadrature data from checkpoint file for restarted run
+
std::vector< std::vector< double > > getCell() const
Gets the current cell lattice vectors.
+
dealii::IndexSet locally_owned_dofs
Definition dft.h:1318
+
std::vector< double > getForceonAtoms() const
Gets the current atomic forces from dftClass.
+
unsigned int d_densityQuadratureId
Definition dft.h:1285
+
void computeRhoInitialGuessFromPSI(std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)
+
void computeSparseStructureNonLocalProjectors_OV()
+
void projectPreviousGroundStateRho()
project ground state electron density from previous mesh into the new mesh to be used as initial gues...
+
std::map< dealii::CellId, std::vector< double > > d_phiOutValues
Definition dft.h:1457
+
std::map< dealii::CellId, std::vector< double > > d_gradRhoInValuesLpspQuad
Definition dft.h:1482
+
double mixing_simple()
Mixing schemes for mixing electron-density.
+
void outputWfc()
write wavefunction solution fields
+
std::vector< int > d_imageIds
Definition dft.h:1153
+
std::vector< std::vector< int > > d_nonLocalAtomIdsInElement
Definition dft.h:1587
+
std::map< dealii::CellId, std::vector< double > > d_gradbQuadValuesAllAtoms
non-intersecting smeared charge gradients of all atoms at quad points
Definition dft.h:1197
+
distributedCPUVec< double > d_rhoOutSpin1NodalValues
Definition dft.h:1473
+
void initNonLocalPseudoPotential_OV()
+
std::vector< unsigned int > d_nonTrivialPseudoWfcsPerCellZetaDeltaVQuads
vector of size num physical cells
Definition dft.h:1673
+
std::vector< double > d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps
Definition dft.h:1116
+
std::vector< bool > d_isFirstFilteringCall
Definition dft.h:1763
+
void computeStress()
+
std::vector< double > a0
Definition dft.h:1758
+
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
+
dealii::DoFHandler< 3 > dofHandler
Definition dft.h:1267
+
std::vector< double > d_outerMostPointPseudoPotData
Definition dft.h:1695
+
dealii::AffineConstraints< double > d_constraintsPRefinedOnlyHanging
Definition dft.h:1394
+
std::vector< dealii::Tensor< 1, 3, double > > d_dispClosestTriaVerticesToAtoms
Definition dft.h:1733
+
std::vector< dealii::types::global_dof_index > local_dof_indicesImag
Definition dft.h:1322
+
double getTotalChargeforRhoSplit()
+
std::vector< std::vector< double > > d_atomLocationsAutoMesh
Definition dft.h:1106
+
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 copyDensityToVector(const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues, std::vector< double > &rhoValuesVector)
Copies the density stored in std::map<dealii:cellId, std::vector<double>> into a flattened std::vecto...
+
std::vector< double > d_imageCharges
Definition dft.h:1159
+
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.
+
unsigned int d_sumNonTrivialPseudoWfcsOverAllCellsZetaDeltaVQuads
Definition dft.h:1686
+
std::vector< distributedCPUVec< double > > d_projectorKetTimesVectorPar
Definition dft.h:1614
+
std::set< unsigned int > getAtomTypes() const
Gets the current atom types from dftClass.
+
std::vector< dealii::types::global_dof_index > local_dof_indicesReal
Definition dft.h:1321
+
std::vector< double > d_outerMostPointPseudoWaveFunctionsData
Definition dft.h:1694
+
void l2ProjectionQuadToNodal(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const std::map< dealii::CellId, std::vector< double > > &quadratureValueData, distributedCPUVec< double > &nodalField)
l2 projection
+
unsigned int d_forceDofHandlerIndexElectro
Definition dft.h:1275
+
unsigned int d_baseDofHandlerIndexElectro
Definition dft.h:1274
+
void initPseudoPotentialAll(const bool updateNonlocalSparsity=true)
+
std::vector< dealii::types::global_dof_index > localProc_dof_indicesImag
Definition dft.h:1324
+
distributedCPUVec< double > d_rhoNodalField
Definition dft.h:1522
+
void readPSIRadialValues()
+
std::map< dealii::CellId, std::vector< double > > d_gradRhoCore
Definition dft.h:1547
+
std::vector< std::vector< double > > atomLocations
FIXME: remove atom type atributes from atomLocations.
Definition dft.h:1104
+
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsEigen
Definition dft.h:1301
+
distributedCPUVec< double > d_rhoInSpin0NodalValues
Definition dft.h:1466
+
unsigned int d_densityDofHandlerIndex
Definition dft.h:1271
+
dftUtils::constraintMatrixInfo d_constraintsRhoNodalInfo
Definition dft.h:1400
+
const double d_smearedChargeWidthMin
minimum smeared charge width
Definition dft.h:1227
+
void createpRefinedDofHandler(dealii::parallel::distributed::Triangulation< 3 > &triangulation)
+
double d_atomicRhoScalingFac
Definition dft.h:730
+
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< double > > d_bQuadValuesAllAtoms
non-intersecting smeared charges of all atoms at quad points
Definition dft.h:1194
+
unsigned int d_forceDofHandlerIndex
Definition dft.h:1270
+
std::deque< distributedCPUVec< double > > d_fvSpin1containerVals
Definition dft.h:1490
+
std::vector< std::vector< double > > d_densityMatDerFermiEnergy
Definition dft.h:1407
+
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesImag() const
Get local dofs local proc indices imag.
+
unsigned int d_gllQuadratureId
Definition dft.h:1280
+
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
+
std::map< unsigned int, std::vector< unsigned int > > d_atomIdToNonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads
map from local nonlocal atomid to vector over cells
Definition dft.h:1684
+
distributedCPUMultiVec< double > d_projectorKetTimesVectorParFlattened
Definition dft.h:1620
+
std::vector< std::vector< double > > d_imagePositions
Definition dft.h:1163
+
std::vector< std::vector< int > > d_pseudoWaveFunctionIdToFunctionIdDetails
Definition dft.h:1561
+
void aposterioriMeshGenerate()
+
double rhofieldInnerProduct(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField1, const distributedCPUVec< double > &rhoNodalField2, const unsigned int dofHandlerId, const unsigned int quadratureId)
+
void finalizeKohnShamDFTOperator()
+
unsigned int d_nonPeriodicDensityDofHandlerIndexElectro
Definition dft.h:1273
+
std::vector< unsigned int > d_nearestAtomIds
nearest atom ids for all domain atoms
Definition dft.h:1143
+
double d_relativeErrorJacInvApproxPrevScfLRD
Definition dft.h:1493
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsRotFracDensityFlattenedHost
Definition dft.h:1424
+
void dipole(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues, bool centerofCharge)
+
poissonSolverProblem< FEOrder, FEOrderElectro > d_phiTotalSolverProblem
Definition dft.h:1332
+
distributedCPUVec< double > d_residualPredicted
Definition dft.h:1491
+
void writeMesh()
Writes inital density and mesh to file.
+
distributedCPUVec< double > d_rhoOutNodalValues
Definition dft.h:1462
+
void compute_localizationLength(const std::string &locLengthFileName)
compute localization length
+
std::vector< double > d_generatorFlatTopWidths
composite generator flat top widths for all domain atoms
Definition dft.h:1130
+
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > gradRhoInValuesSpinPolarized
Definition dft.h:1505
+
std::map< unsigned int, std::vector< int > > d_sparsityPattern
Definition dft.h:1581
+
void initpRefinedObjects(const bool meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false)
+
std::vector< dealii::Tensor< 1, 3, double > > d_atomsDisplacementsGaussianRead
Gaussian displacements of atoms read from file.
Definition dft.h:1110
+
std::vector< dealii::Point< 3 > > d_closestTriaVertexToAtomsLocation
closest tria vertex
Definition dft.h:1732
+
symmetryClass< FEOrder, FEOrderElectro > * symmetryPtr
Definition dft.h:1328
+
std::map< dealii::types::global_dof_index, double > d_atomNodeIdToChargeMap
map of atom node number and atomic weight
Definition dft.h:1699
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_pseudoVLocAtoms
Definition dft.h:1538
+
void init()
Does KSDFT problem pre-processing steps including mesh generation calls.
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_elementIteratorsInAtomCompactSupport
Definition dft.h:1583
+
double d_wfcInitTruncation
init wfc trunctation radius
Definition dft.h:1261
+
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost
Definition dft.h:1292
+
distributedCPUVec< double > d_phiTotRhoIn
Definition dft.h:1512
+
std::vector< std::vector< double > > eigenValuesRRSplit
Spectrum split higher eigenvalues computed in Rayleigh-Ritz step.
Definition dft.h:1410
+
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_projectorIdsNumberingMapCurrentProcess
Definition dft.h:1592
+
void readkPointData()
+
std::vector< std::vector< double > > d_localVselfs
Definition dft.h:1541
+
void popOutRhoInRhoOutVals()
+
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.
+
distributedCPUVec< double > d_rhoOutNodalValuesSplit
Definition dft.h:1462
+
bool d_tolReached
Definition dft.h:1495
+
void copyGradDensityFromVector(const std::vector< double > &gradRhoValuesVector, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &gradRhoValues)
Copies the gradient of density stored in a flattened std::vector<double> format to std::map<dealii:ce...
+
std::vector< double > d_flatTopWidthsAutoMeshMove
Definition dft.h:1134
+
std::vector< std::vector< int > > d_globalChargeIdToImageIdMap
globalChargeId to ImageChargeId Map
Definition dft.h:1166
+
void generateMPGrid()
+
double totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)
+
dealii::AffineConstraints< double > d_constraintsPRefined
Definition dft.h:1392
+
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > gradRhoOutValues
Definition dft.h:1507
+
const double d_pspCutOffTrunc
distance from the domain till which periodic images will be considered
Definition dft.h:1187
+
distributedCPUVec< double > getRhoNodalOut() const
+
void subtractAtomicRhoQuadValuesGradients(std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isConsiderGradData=false)
subtract atomic densities at quadrature points
+
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesReal() const
Get local dofs global indices real.
+
dealii::AffineConstraints< double > d_constraintsRhoNodalOnlyHanging
Definition dft.h:1398
+
std::vector< unsigned int > d_nonTrivialAllCellsPseudoWfcIdToElemIdMap
Definition dft.h:1680
+
double lowrankApproxScfDielectricMatrixInv(const unsigned int scfIter)
+
bool scfConverged
Definition dft.h:1774
+
std::map< dealii::CellId, std::vector< double > > d_pseudoVLoc
Definition dft.h:1533
+
dealii::AffineConstraints< double > constraintsNoneEigen
Definition dft.h:1385
+
std::vector< dealii::Tensor< 1, 3, double > > d_gaussianMovementAtomsNetDisplacements
Definition dft.h:1254
+
void addAtomicRhoQuadValuesGradients(std::map< dealii::CellId, std::vector< double > > &quadratureValueData, std::map< dealii::CellId, std::vector< double > > &quadratureGradValueData, const bool isConsiderGradData=false)
add atomic densities at quadrature points
+
std::vector< dealii::types::global_dof_index > localProc_dof_indicesReal
Definition dft.h:1323
+
dealii::IndexSet locally_relevant_dofs
Definition dft.h:1319
+
std::vector< int > d_numberPseudoPotentials
Definition dft.h:1574
+
std::map< dealii::CellId, std::vector< double > > d_phiInValues
Definition dft.h:1457
+
std::map< dealii::CellId, std::vector< int > > d_bQuadAtomIdsAllAtomsImages
Definition dft.h:1204
+
double getInternalEnergy() const
+
std::deque< distributedCPUVec< double > > d_vSpin1containerVals
Definition dft.h:1489
+
void computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
+
triangulationManager d_mesh
Definition dft.h:1241
+
dealii::MatrixFree< 3, double > matrix_free_data
Definition dft.h:1287
+
double fermiEnergy
fermi energy
Definition dft.h:1746
+
double lowrankApproxScfDielectricMatrixInvSpinPolarized(const unsigned int scfIter)
+
double d_autoMeshMaxJacobianRatio
Definition dft.h:1243
+
std::deque< distributedCPUVec< double > > d_rhoInNodalVals
Definition dft.h:1464
+
std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > gradRhoOutValuesSpinPolarized
Definition dft.h:1507
+
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVectorElectro
Definition dft.h:1304
+
double d_nlPSPCutOff
Definition dft.h:1191
+
bool d_isRestartGroundStateCalcFromChk
Definition dft.h:1769
+
distributedCPUVec< double > d_rhoInNodalValues
Definition dft.h:1461
+
const MPI_Comm interpoolcomm
Definition dft.h:1314
+
dealii::FESystem< 3 > FE
Definition dft.h:1266
+
void computeElementalOVProjectorKets()
+
const MPI_Comm d_mpiCommParent
Definition dft.h:1313
+
distributedCPUVec< double > d_rhoInSpin1NodalValues
Definition dft.h:1467
+
std::vector< double > d_imageChargesTrunc
Definition dft.h:1174
+
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...
+
distributedCPUVec< double > d_tempEigenVec
Definition dft.h:1767
+
std::vector< double > bLow
Definition dft.h:1759
+
void computeRhoNodalFromPSI(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, bool isConsiderSpectrumSplitting)
computes density nodal data from wavefunctions
+
const dealii::MatrixFree< 3, double > & getMatrixFreeData() const
Get matrix free data object.
+
std::vector< std::vector< std::vector< double > > > d_nonLocalProjectorElementMatricesTranspose
Definition dft.h:1611
+
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > d_bCellNonTrivialAtomImageIdsBins
Definition dft.h:1224
+
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 > constraintsNone
Definition dft.h:1385
+
std::vector< int > d_nonLocalAtomGlobalChargeIds
Definition dft.h:1575
+
unsigned int d_binsStartDofHandlerIndexElectro
Definition dft.h:1284
+
unsigned int numElectrons
Definition dft.h:1096
+
std::vector< std::vector< double > > d_imagePositionsAutoMesh
Definition dft.h:1107
+
dealii::TimerOutput computing_timer
compute-time logger
Definition dft.h:1446
+
void initImageChargesUpdateKPoints(bool flag=true)
generate image charges and update k point cartesian coordinates based on current lattice vectors
+
void normalizeRhoInQuadValues()
normalize the input electron density
+
dealii::AffineConstraints< double > d_constraintsForHelmholtzRhoNodal
Definition dft.h:1390
+
distributedCPUVec< double > d_rhoNodalFieldSpin1
Definition dft.h:1528
+
dftUtils::constraintMatrixInfo constraintsNoneDataInfo
Definition dft.h:1377
+
const unsigned int this_mpi_process
Definition dft.h:1317
+
std::vector< double > d_netFloatingDispSinceLastBinsUpdate
Definition dft.h:1113
+
void initBoundaryConditions(const bool meshOnlyDeformed=false, const bool vselfPerturbationUpdateForStress=false)
+
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesImag() const
Get local dofs global indices imag.
+
std::map< dealii::CellId, std::vector< unsigned int > > d_bCellNonTrivialAtomImageIds
Definition dft.h:1219
+ +
void solveNoSCF()
compute approximation to ground-state without solving the SCF iteration
+
void computeTotalDensityFromSpinPolarised(const std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoSpinValues, std::shared_ptr< std::map< dealii::CellId, std::vector< double > > > &rhoValues)
Computes the total density from the spin polarised densities.
+
std::map< dealii::CellId, std::vector< double > > d_rhoOutValuesLpspQuad
Definition dft.h:1480
+
dealii::Timer d_globalTimer
Definition dft.h:1451
+
unsigned int d_lpspQuadratureIdElectro
Definition dft.h:1279
+
dealii::DoFHandler< 3 > d_dofHandlerRhoNodal
Definition dft.h:1268
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsFlattenedHost
Definition dft.h:1420
+
void loadPSIFiles(unsigned int Z, unsigned int n, unsigned int l, unsigned int &flag)
+
unsigned int d_autoMesh
Definition dft.h:1244
+
void compute_rhoOut(kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperatorCPU, const bool isConsiderSpectrumSplitting, const bool isGroundState=false)
Computes output electron-density from wavefunctions.
+
std::vector< std::vector< double > > d_reciprocalLatticeVectors
Definition dft.h:1105
+
dftParameters & getParametersObject() const
Get reference to dftParameters object.
+
std::deque< distributedCPUVec< double > > d_rhoInSpin1NodalVals
Definition dft.h:1477
+
dealii::ConditionalOStream pcout
device eigenvectors
Definition dft.h:1443
+
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
+
Definition excManager.h:27
+
computes configurational forces in KSDFT
Definition force.h:53
+
poisson solver problem class template. template parameter FEOrderElectro is the finite element polyno...
Definition kerkerSolverProblem.h:35
+
Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete ...
Definition kohnShamDFTOperator.h:44
+
Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete ...
Definition kohnShamDFTOperatorDevice.h:44
+
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+
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
+
poisson solver problem class template. template parameter FEOrderElectro is the finite element polyno...
Definition poissonSolverProblem.h:37
+
density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculation...
Definition symmetry.h:39
+
This class generates and stores adaptive finite element meshes for the real-space dft problem.
Definition triangulationManager.h:42
+
Definition MemoryStorage.h:33
+
Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential....
Definition vselfBinsManager.h:38
+ + + + + + + + + + + + + + + + + + + + + + +
double number
Definition dftfeDataTypes.h:44
+ + +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+ + + + +
+ + + + diff --git a/dft_base_8h.html b/dft_base_8h.html new file mode 100644 index 000000000..2c742406d --- /dev/null +++ b/dft_base_8h.html @@ -0,0 +1,107 @@ + + + + + + + +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..59f266f16 --- /dev/null +++ b/dft_base_8h_source.html @@ -0,0 +1,331 @@ + + + + + + + +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
+ +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+
+ + + + diff --git a/dft_parameters_8h.html b/dft_parameters_8h.html new file mode 100644 index 000000000..02773fc9b --- /dev/null +++ b/dft_parameters_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..ac35d5e57 --- /dev/null +++ b/dft_parameters_8h_source.html @@ -0,0 +1,502 @@ + + + + + + + +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
+ +
47 std::string modelXCInputFile;
+
48
+ + + +
52
+ + + + +
57
+
58
+
59 /** parameters for LRD preconditioner **/
+
60
+ +
62 std::string methodSubTypeLRD;
+ +
64 double betaTol;
+ + + +
68
+
69 /**********************************************/
+
70
+ + + +
74
+ +
76
+ + + + + +
82
+
83
+ + + +
87 unsigned int cellConstraintType;
+
88
+ +
90 std::string solverMode;
+ + + + + +
96
+ +
98
+ +
100
+ +
102
+ +
104
+
105 std::string startingWFCType;
+ +
107 unsigned int numCoreWfcRR;
+
108 unsigned int numCoreWfcXtHX;
+
109 unsigned int wfcBlockSize;
+
110 unsigned int chebyWfcBlockSize;
+ +
112 unsigned int nbandGrps;
+ + +
115 unsigned int scalapackBlockSize;
+
116 unsigned int natoms;
+
117 unsigned int natomTypes;
+ +
119 unsigned int reuseDensityGeoOpt;
+ + + + + + + + + + + + + + + + + + + + + + + + + +
145 unsigned int numberStepsBOMD;
+
146 unsigned int TotalImages;
+ + + + + + + + + + + + + + +
161 std::string atomicMassesFile;
+ + + + + + + +
169
+
170
+ +
172 unsigned int dc_d3dampingtype;
+ + + + + + +
179
+
180
+
181 std::string bfgsStepMethod;
+ +
183 unsigned int lbfgsNumPastSteps;
+
184 unsigned int maxOptIter;
+
185 unsigned int maxStaggeredCycles;
+ +
187
+
188 // New Paramters for moleculardyynamics class
+ + + + + +
194
+ +
196
+ +
198
+
199 /**
+
200 * Parse parameters.
+
201 */
+
202 void
+
203 parse_parameters(const std::string &parameter_file,
+
204 const MPI_Comm & mpi_comm_parent,
+
205 const bool printParams = false,
+
206 const std::string mode = "GS",
+
207 const std::string restartFilesPath = ".",
+
208 const int _verbosity = 1);
+
209
+
210 /**
+
211 * Check parameters
+
212 */
+
213 void
+
214 check_parameters(const MPI_Comm &mpi_comm_parent) const;
+
215
+
216 /**
+
217 * Set automated choices for parameters
+
218 */
+
219 void
+
220 setAutoParameters(const MPI_Comm &mpi_comm_parent);
+
221
+
222 }; // class dftParameters
+
+
223
+
224} // namespace dftfe
+
225#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:145
+
unsigned int finiteElementPolynomialOrderElectrostatics
Definition dftParameters.h:38
+
bool floatingNuclearCharges
Definition dftParameters.h:158
+
bool useDeviceDirectAllReduce
Definition dftParameters.h:162
+
bool pseudoTestsFlag
Definition dftParameters.h:54
+
unsigned int numCoreWfcRR
Definition dftParameters.h:107
+
unsigned int cellConstraintType
Definition dftParameters.h:87
+
double diracDeltaKernelScalingConstant
Definition dftParameters.h:151
+
double startingTempBOMD
Definition dftParameters.h:189
+
unsigned int maxOptIter
Definition dftParameters.h:184
+
std::string orthogType
Definition dftParameters.h:72
+
std::string coordinatesFile
Definition dftParameters.h:71
+
bool periodicX
Definition dftParameters.h:53
+
double innerAtomBallRadius
Definition dftParameters.h:77
+
void check_parameters(const MPI_Comm &mpi_comm_parent) const
+
double absLinearSolverToleranceHelmholtz
Definition dftParameters.h:51
+
bool usePreconditioner
Definition dftParameters.h:182
+
double gaussianConstantForce
Definition dftParameters.h:147
+
bool writePdosFile
Definition dftParameters.h:56
+
double dc_d3cutoff2
Definition dftParameters.h:176
+
double forceRelaxTol
Definition dftParameters.h:86
+
bool writeDosFile
Definition dftParameters.h:54
+
unsigned int scalapackBlockSize
Definition dftParameters.h:115
+
std::string pseudoPotentialFile
Definition dftParameters.h:72
+
std::string cellOptSolver
Definition dftParameters.h:81
+
double stressRelaxTol
Definition dftParameters.h:86
+
bool saveRhoData
Definition dftParameters.h:92
+
bool smearedNuclearCharges
Definition dftParameters.h:156
+
bool createConstraintsFromSerialDofhandler
Definition dftParameters.h:130
+
unsigned int chebyWfcBlockSize
Definition dftParameters.h:110
+
bool nonSelfConsistentForce
Definition dftParameters.h:85
+
unsigned int npool
Definition dftParameters.h:42
+
unsigned int nbandGrps
Definition dftParameters.h:112
+
std::string bfgsStepMethod
Definition dftParameters.h:181
+
bool periodicY
Definition dftParameters.h:53
+
bool HXOptimFlag
Definition dftParameters.h:157
+
double xlbomdRestartChebyTol
Definition dftParameters.h:153
+
bool deviceMemOptMode
Definition dftParameters.h:168
+
bool restartSpinFromNoSpin
Definition dftParameters.h:94
+
bool dc_d4MBD
Definition dftParameters.h:174
+
unsigned int offsetFlagX
Definition dftParameters.h:39
+
bool singlePrecLRD
Definition dftParameters.h:66
+
bool reuseLanczosUpperBoundFromFirstCall
Definition dftParameters.h:164
+
std::string modelXCInputFile
Definition dftParameters.h:47
+
double kerkerParameter
Definition dftParameters.h:80
+
double absLinearSolverTolerance
Definition dftParameters.h:50
+
std::string algoType
Definition dftParameters.h:72
+
unsigned int natomTypes
Definition dftParameters.h:117
+
double chebyshevFilterPolyDegreeFirstScfScalingFactor
Definition dftParameters.h:142
+
bool isBOMD
Definition dftParameters.h:84
+
bool useMixedPrecCheby
Definition dftParameters.h:136
+
bool useSubspaceProjectedSHEPGPU
Definition dftParameters.h:121
+
bool allowFullCPUMemSubspaceRot
Definition dftParameters.h:135
+
unsigned int reuseDensityGeoOpt
Definition dftParameters.h:119
+
double mixingParameter
Definition dftParameters.h:49
+
bool readWfcForPdosPspFile
Definition dftParameters.h:140
+
bool useTF32Device
Definition dftParameters.h:133
+
void setAutoParameters(const MPI_Comm &mpi_comm_parent)
+
bool constraintsParallelCheck
Definition dftParameters.h:129
+
double start_magnetization
Definition dftParameters.h:51
+
bool reproducible_output
Definition dftParameters.h:97
+
unsigned int numLevels
Definition dftParameters.h:43
+
bool writeLocalizationLengths
Definition dftParameters.h:55
+
bool autoAdaptBaseMeshSize
Definition dftParameters.h:78
+
unsigned int nky
Definition dftParameters.h:39
+
bool electrostaticsHRefinement
Definition dftParameters.h:95
+
double pspCutoffImageCharges
Definition dftParameters.h:163
+
double meshSizeInnerBall
Definition dftParameters.h:79
+
double thermostatTimeConstantBOMD
Definition dftParameters.h:191
+
unsigned int wfcBlockSize
Definition dftParameters.h:109
+
unsigned int subspaceRotDofsBlockSize
Definition dftParameters.h:111
+
unsigned int nkz
Definition dftParameters.h:39
+
unsigned int mixingHistory
Definition dftParameters.h:42
+
std::string mixingMethod
Definition dftParameters.h:81
+
double timeStepBOMD
Definition dftParameters.h:144
+
double radiusAtomBall
Definition dftParameters.h:49
+
bool allowMultipleFilteringPassesAfterFirstScf
Definition dftParameters.h:165
+
bool overlapComputeCommunCheby
Definition dftParameters.h:137
+
unsigned int numberEigenValues
Definition dftParameters.h:39
+
double maxCellUpdateStep
Definition dftParameters.h:186
+
double maxIonUpdateStep
Definition dftParameters.h:186
+ +
double dc_d3cutoff3
Definition dftParameters.h:177
+
unsigned int scalapackParalProcs
Definition dftParameters.h:114
+
bool meshAdaption
Definition dftParameters.h:85
+
double topfrac
Definition dftParameters.h:80
+
double gaussianOrderForce
Definition dftParameters.h:148
+
unsigned int spinPolarized
Definition dftParameters.h:39
+
std::string atomicMassesFile
Definition dftParameters.h:161
+
std::string ionOptSolver
Definition dftParameters.h:81
+
std::string restartFolder
Definition dftParameters.h:73
+
unsigned int maxLineSearchIterCGPRP
Definition dftParameters.h:160
+
double MaxWallTime
Definition dftParameters.h:190
+
double TVal
Definition dftParameters.h:50
+
std::string startingWFCType
Definition dftParameters.h:105
+
bool useELPA
Definition dftParameters.h:128
+
double xlbomdKernelRankUpdateFDParameter
Definition dftParameters.h:155
+
bool computeEnergyEverySCF
Definition dftParameters.h:113
+
bool writeBandsFile
Definition dftParameters.h:55
+
double outerAtomBallRadius
Definition dftParameters.h:77
+
bool isIonForce
Definition dftParameters.h:84
+
bool useMixedPrecXTHXSpectrumSplit
Definition dftParameters.h:124
+
bool useSymm
Definition dftParameters.h:53
+
bool poissonGPU
Definition dftParameters.h:46
+
unsigned int finiteElementPolynomialOrder
Definition dftParameters.h:37
+
std::string dc_dampingParameterFilename
Definition dftParameters.h:175
+
bool loadRhoData
Definition dftParameters.h:93
+
bool nonLinearCoreCorrection
Definition dftParameters.h:159
+
double selfConsistentSolverTolerance
Definition dftParameters.h:50
+
bool keepScratchFolder
Definition dftParameters.h:91
+
double mpiAllReduceMessageBlockSizeMB
Definition dftParameters.h:120
+
unsigned int highestStateOfInterestForChebFiltering
Definition dftParameters.h:166
+
double maxJacobianRatioFactorForMD
Definition dftParameters.h:141
+
std::string solverMode
Definition dftParameters.h:90
+
bool constraintMagnetization
Definition dftParameters.h:54
+
bool reuseWfcGeoOpt
Definition dftParameters.h:118
+
bool pinnedNodeForPBC
Definition dftParameters.h:55
+
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)
+
std::string domainBoundingVectorsFile
Definition dftParameters.h:71
+
double adaptiveRankRelTolLRD
Definition dftParameters.h:63
+
int extrapolateDensity
Definition dftParameters.h:143
+
bool writeDensitySolutionFields
Definition dftParameters.h:101
+
bool writeStructreEnergyForcesFileForPostProcess
Definition dftParameters.h:195
+
bool isPseudopotential
Definition dftParameters.h:53
+
unsigned int dc_dispersioncorrectiontype
Definition dftParameters.h:171
+
bool useMeshSizesFromAtomsFile
Definition dftParameters.h:152
+
bool bandParalOpt
Definition dftParameters.h:131
+
unsigned int spectrumSplitStartingScfIter
Definition dftParameters.h:127
+
unsigned int maxStaggeredCycles
Definition dftParameters.h:185
+
bool periodicZ
Definition dftParameters.h:53
+
bool useMixedPrecCGS_O
Definition dftParameters.h:123
+
unsigned int lbfgsNumPastSteps
Definition dftParameters.h:183
+
bool isCellStress
Definition dftParameters.h:84
+
unsigned int numSCFIterations
Definition dftParameters.h:41
+
std::string ionRelaxFlagsFile
Definition dftParameters.h:72
+
unsigned int natoms
Definition dftParameters.h:116
+
bool writeLdosFile
Definition dftParameters.h:55
+
bool useDensityMatrixPerturbationRankUpdates
Definition dftParameters.h:154
+
std::string kPointDataFile
Definition dftParameters.h:71
+
bool useDevice
Definition dftParameters.h:132
+
unsigned int nkx
Definition dftParameters.h:39
+
bool useMixedPrecCommunOnlyXTHXCGSO
Definition dftParameters.h:126
+
bool dc_d3ATM
Definition dftParameters.h:173
+
unsigned int offsetFlagY
Definition dftParameters.h:40
+
int MDTrack
Definition dftParameters.h:193
+
int verbosity
Definition dftParameters.h:89
+
double betaTol
Definition dftParameters.h:64
+
double dc_d3cutoffCN
Definition dftParameters.h:178
+
double gaussianOrderMoveMeshToAtoms
Definition dftParameters.h:149
+
double chebyshevTolerance
Definition dftParameters.h:80
+
std::string methodSubTypeLRD
Definition dftParameters.h:62
+
bool deviceFineGrainedTimings
Definition dftParameters.h:134
+
bool restrictToOnePass
Definition dftParameters.h:106
+
std::string optimizationMode
Definition dftParameters.h:81
+
double absPoissonSolverToleranceLRD
Definition dftParameters.h:65
+
double toleranceKinetic
Definition dftParameters.h:86
+
bool timeReversal
Definition dftParameters.h:54
+
bool useELPADeviceKernel
Definition dftParameters.h:167
+
unsigned int offsetFlagZ
Definition dftParameters.h:40
+
unsigned int maxLinearSolverIterations
Definition dftParameters.h:42
+
bool useMixedPrecSubspaceRotRR
Definition dftParameters.h:125
+
bool useFlatTopGenerator
Definition dftParameters.h:150
+
std::string tempControllerTypeBOMD
Definition dftParameters.h:192
+
unsigned int xc_id
Definition dftParameters.h:39
+
unsigned int numberWaveFunctionsForEstimate
Definition dftParameters.h:43
+
bool autoDeviceBlockSizes
Definition dftParameters.h:139
+
bool useMixedPrecCGS_SR
Definition dftParameters.h:122
+
unsigned int TotalImages
Definition dftParameters.h:146
+
bool estimateJacCondNoFinalSCFIter
Definition dftParameters.h:67
+
unsigned int dc_d3dampingtype
Definition dftParameters.h:172
+
unsigned int chebyshevOrder
Definition dftParameters.h:41
+
unsigned int maxLinearSolverIterationsHelmholtz
Definition dftParameters.h:44
+
std::string coordinatesGaussianDispFile
Definition dftParameters.h:75
+
unsigned int numCoreWfcXtHX
Definition dftParameters.h:108
+
double meshSizeOuterDomain
Definition dftParameters.h:77
+
double meshSizeOuterBall
Definition dftParameters.h:79
+
double startingNormLRDLargeDamping
Definition dftParameters.h:61
+
bool writeDensityQuadData
Definition dftParameters.h:103
+
bool writeWfcSolutionFields
Definition dftParameters.h:99
+
bool overlapComputeCommunOrthoRR
Definition dftParameters.h:138
+
Definition upfToxml.cc:37
+
+ + + + diff --git a/dft_utils_8h.html b/dft_utils_8h.html new file mode 100644 index 000000000..8512dcb75 --- /dev/null +++ b/dft_utils_8h.html @@ -0,0 +1,158 @@ + + + + + + + +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< double > dftfe::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..c319586ae --- /dev/null +++ b/dft_utils_8h_source.html @@ -0,0 +1,441 @@ + + + + + + + +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,
+
142 &latticeVectorsDup[0],
+
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
+
183 getPartialOccupancy(const double eigenValue,
+
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
+
198 getPartialOccupancyDer(const double eigenValue,
+
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
+ +
260 const MPI_Comm & interKptPoolComm,
+
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
+
273 printCurrentMemoryUsage(const MPI_Comm &mpiComm, const std::string message);
+
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
+ +
304 ExcNotImplementedYet,
+
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
+ +
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 upfToxml.cc:37
+ +
+ + + + diff --git a/dftd_8h.html b/dftd_8h.html new file mode 100644 index 000000000..af4fcea3b --- /dev/null +++ b/dftd_8h.html @@ -0,0 +1,126 @@ + + + + + + + +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..5984cc9c8 --- /dev/null +++ b/dftd_8h_source.html @@ -0,0 +1,218 @@ + + + + + + + +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 */
+
43 dispersionCorrection(const MPI_Comm & mpi_comm_parent,
+
44 const MPI_Comm & mpi_comm_domain,
+
45 const MPI_Comm & interpool_comm,
+
46 const MPI_Comm & interBandGroupComm,
+
47 const dftParameters &dftParams);
+
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
+ + +
82 const MPI_Comm interpoolcomm;
+
83 const MPI_Comm interBandGroupComm;
+ +
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
+ + +
Definition upfToxml.cc:37
+
+ + + + diff --git a/dftfe_data_types_8h.html b/dftfe_data_types_8h.html new file mode 100644 index 000000000..5f247b241 --- /dev/null +++ b/dftfe_data_types_8h.html @@ -0,0 +1,143 @@ + + + + + + + +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
+
+
+
#include <deal.II/base/config.h>
+#include <deal.II/base/types.h>
+#include <fstream>
+#include <iostream>
+#include <fenv.h>
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::dataTypes
 
+ + + + + + + + + + + + + +

+Typedefs

typedef dealii::types::global_dof_index dftfe::dataTypes::global_size_type
 
typedef unsigned int dftfe::dataTypes::local_size_type
 
typedef double dftfe::dataTypes::number
 
typedef float dftfe::dataTypes::numberFP32
 
typedef double dftfe::dataTypes::numberValueType
 
typedef float dftfe::dataTypes::numberFP32ValueType
 
+ + + + + + + + + + + + + + + + + + + + + +

+Functions

MPI_Datatype dftfe::dataTypes::mpi_type_id (const int *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const long int *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const unsigned int *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const unsigned long int *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const unsigned long long int *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const float *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const double *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const long double *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const std::complex< float > *)
 
MPI_Datatype dftfe::dataTypes::mpi_type_id (const std::complex< double > *)
 
+
+ + + + diff --git a/dftfe_data_types_8h_source.html b/dftfe_data_types_8h_source.html new file mode 100644 index 000000000..c7a2e061a --- /dev/null +++ b/dftfe_data_types_8h_source.html @@ -0,0 +1,235 @@ + + + + + + + +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 {
+
77 return MPI_UNSIGNED_LONG_LONG;
+
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
+
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 upfToxml.cc:37
+
+ + + + diff --git a/dftfe_wrapper_8h.html b/dftfe_wrapper_8h.html new file mode 100644 index 000000000..614f2306c --- /dev/null +++ b/dftfe_wrapper_8h.html @@ -0,0 +1,106 @@ + + + + + + + +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..b2df4a072 --- /dev/null +++ b/dftfe_wrapper_8h_source.html @@ -0,0 +1,518 @@ + + + + + + + +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
+
42 globalHandlesInitialize(const MPI_Comm &mpi_comm_world);
+
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,
+
61 const MPI_Comm & mpi_comm_parent,
+
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
+
68 /**
+
69 * @brief constructor based on input parameter_file and restart
+
70 * coordinates and domain vectors file paths
+
71 */
+
72 dftfeWrapper(const std::string parameter_file,
+
73 const std::string restartCoordsFile,
+
74 const std::string restartDomainVectorsFile,
+
75 const MPI_Comm & mpi_comm_parent,
+
76 const bool printParams = false,
+
77 const bool setDeviceToMPITaskBindingInternally = false,
+
78 const std::string solverMode = "GS",
+
79 const std::string restartFilesPath = ".",
+
80 const int _verbosity = 1,
+
81 const bool isScfRestart = true);
+
82
+
83
+
84 /**
+
85 * @brief constructor based on input list of atomic coordinates,
+
86 * list of atomic numbers,cell, boundary conditions,
+
87 * Monkhorst-Pack k-point grid, and other optional parameters.
+
88 * This constructor currently only sets up GGA PBE pseudopotential
+
89 * DFT calculations using ONCV pseudopotentials in .upf format
+
90 * (read from DFTFE_PSP_PATH folder provided as an environment
+
91 * variable). The pseudpotential directory must contain files in the
+
92 * format: AtomicSymbol.upf
+
93 *
+
94 * @param[in] mpi_comm_parent mpi communicator to be used by the
+
95 * dftfeWrapper.
+
96 * @param[in] useDevice toggle use of Device accelerated DFT-FE
+
97 * @param[in] atomicPositionsCart vector of atomic positions for
+
98 * each atom (in Bohr units), Origin is at cell corner
+
99 * @param[in] atomicNumbers vector of atomic numbers
+
100 * @param[in] cell 3 \times 3 matrix in Bohr units, cell[i] denotes the ith
+
101 * cell vector. DFT-FE requires the cell vectors to form a
+
102 * right-handed coordinate system i.e.
+
103 * dotProduct(crossProduct(cell[0],cell[1]),cell[2])>0
+
104 * @param[in] pbc vector of bools denoting periodic boundary conditions
+
105 * along the three cell vectors, false denotes non-periodic and true is
+
106 * periodic
+
107 * @param[in] mpgrid vector of Monkhorst-Pack grid points along the
+
108 * reciprocal lattice vector directions for sampling the Brillouin zone
+
109 * along periodic directions. Default value is a Gamma point.
+
110 * @param[in] mpgridShift vector of bools where false denotes no shift and
+
111 * true denotes shift by half the Monkhost-Pack grid spacing. Default value
+
112 * is no shift.
+
113 * @param[in] spinPolarizedDFT toggles spin-polarized DFT calculations.
+
114 * Default value is false
+
115 * @param[in] startMagnetization Starting magnetization to be used for
+
116 * spin-polarized DFT calculations (must be between -0.5 and +0.5).
+
117 * Corresponding magnetization per simulation domain will be
+
118 * (2 x START MAGNETIZATION x Number of electrons) in Bohr magneton units.
+
119 * @param[in] fermiDiracSmearingTemp Fermi-Dirac smearing temperature in
+
120 * Kelvin. Default value is 500 K.
+
121 * @param[in] npkpt Number of groups of MPI tasks across which the work load
+
122 * of the irreducible k-points is parallelised. npkpt must be a divisor of
+
123 * total number of MPI tasks. Default value of 0 internally sets npkt to an
+
124 * heuristically determined value.
+
125 * @param[in] meshSize Finite-element mesh size around the atoms in Bohr
+
126 * units. The default value of 0.8 is sufficient to achieve chemical
+
127 * accuracy in energy (0.1 mHa/atom discretization error) and forces (0.1
+
128 * mHa/Bohr discretization error) for the ONCV pseudo-dojo
+
129 * pseudopotentials. Note that this function assumes a sixth order
+
130 * finite-element interpolating polynomial
+
131 * @param[in] scfMixingParameter mixing paramter for SCF fixed point
+
132 * iteration. Currently the Anderson mixing strategy is used.
+
133 * @param[in] verbosity printing verbosity. Default value is -1: no printing
+
134 * @param[in] setDeviceToMPITaskBindingInternally This option is only valid
+
135 * for Device runs. If set to true Device to MPI task binding is set inside
+
136 * the DFT-FE code. Default behaviour is false which assumes the binding has
+
137 * been externally set.
+
138 */
+
139 dftfeWrapper(const MPI_Comm & mpi_comm_parent,
+
140 const bool useDevice,
+
141 const std::vector<std::vector<double>> atomicPositionsCart,
+
142 const std::vector<unsigned int> atomicNumbers,
+
143 const std::vector<std::vector<double>> cell,
+
144 const std::vector<bool> pbc,
+
145 const std::vector<unsigned int> mpGrid =
+
146 std::vector<unsigned int>{1, 1, 1},
+
147 const std::vector<bool> mpGridShift = std::vector<bool>{false,
+
148 false,
+
149 false},
+
150 const bool spinPolarizedDFT = false,
+
151 const double startMagnetization = 0.0,
+
152 const double fermiDiracSmearingTemp = 500.0,
+
153 const unsigned int npkpt = 0,
+
154 const double meshSize = 0.8,
+
155 const double scfMixingParameter = 0.2,
+
156 const int verbosity = -1,
+
157 const bool setDeviceToMPITaskBindingInternally = false);
+
158
+
159
+ +
161
+
162 /**
+
163 * @brief clear and reinitialize based on input parameter_file
+
164 */
+
165 void
+
166 reinit(const std::string parameter_file,
+
167 const MPI_Comm & mpi_comm_parent,
+
168 const bool printParams = false,
+
169 const bool setDeviceToMPITaskBindingInternally = false,
+
170 const std::string solverMode = "GS",
+
171 const std::string restartFilesPath = ".",
+
172 const int _verbosity = 1);
+
173
+
174 /**
+
175 * @brief clear and reinitialize based on input parameter_file and restart
+
176 * coordinates and domain vectors file paths
+
177 */
+
178 void
+
179 reinit(const std::string parameter_file,
+
180 const std::string restartCoordsFile,
+
181 const std::string restartDomainVectorsFile,
+
182 const MPI_Comm & mpi_comm_parent,
+
183 const bool printParams = false,
+
184 const bool setDeviceToMPITaskBindingInternally = false,
+
185 const std::string solverMode = "GS",
+
186 const std::string restartFilesPath = ".",
+
187 const int _verbosity = 1,
+
188 const bool isScfRestart = true);
+
189
+
190 void
+
191 reinit(const MPI_Comm & mpi_comm_parent,
+
192 const bool useDevice,
+
193 const std::vector<std::vector<double>> atomicPositionsCart,
+
194 const std::vector<unsigned int> atomicNumbers,
+
195 const std::vector<std::vector<double>> cell,
+
196 const std::vector<bool> pbc,
+
197 const std::vector<unsigned int> mpGrid =
+
198 std::vector<unsigned int>{1, 1, 1},
+
199 const std::vector<bool> mpGridShift = std::vector<bool>{false,
+
200 false,
+
201 false},
+
202 const bool spinPolarizedDFT = false,
+
203 const double startMagnetization = 0.0,
+
204 const double fermiDiracSmearingTemp = 500.0,
+
205 const unsigned int npkpt = 0,
+
206 const double meshSize = 0.8,
+
207 const double scfMixingParameter = 0.2,
+
208 const int verbosity = -1,
+
209 const bool setDeviceToMPITaskBindingInternally = false);
+
210
+
211 void
+ +
213
+
214 /**
+
215 * @brief Legacy function (to be deprecated)
+
216 */
+
217 void
+ +
219
+
220 /**
+
221 * @brief Calls dftBasepointer public function writeMesh(). Here the inital density and mesh are stored in a file. Useful for visluiing meshes without running solve.
+
222 */
+
223 void
+ +
225
+
226
+
227 /**
+
228 * @brief solve ground-state and return DFT free energy which is sum of internal
+
229 * energy and negative of electronic entropic energy (in Hartree units)
+
230 *
+
231 * @return tuple of ground-state energy, boolean flag on whether scf converged,
+
232 * and L2 norm of residual electron-density of the last SCF iteration
+
233 */
+
234 std::tuple<double, bool, double>
+
235 computeDFTFreeEnergy(const bool computeIonForces = true,
+
236 const bool computeCellStress = false);
+
237
+
238 void
+ +
240
+
241 /**
+
242 * @brief Get DFT free energy (in Hartree units). This function can
+
243 * only be called after calling computeDFTFreeEnergy
+
244 */
+
245 double
+ +
247
+
248 /**
+
249 * @brief Get electronic entropic energy (in Hartree units). This function can
+
250 * only be called after calling computeDFTFreeEnergy
+
251 */
+
252 double
+ +
254
+
255 /**
+
256 * @brief Get ionic forces: negative of gradient of DFT free energy with
+
257 * respect to ionic positions (in Hartree/Bohr units). This function can
+
258 * only be called after calling computeDFTFreeEnergy
+
259 *
+
260 * @return vector of forces on each atom
+
261 */
+
262 std::vector<std::vector<double>>
+ +
264
+
265 /**
+
266 * @brief Get cell stress: negative of gradient of DFT free energy
+
267 * with respect to affine strain components scaled by volume
+
268 * (Hartree/Bohr^3) units. This function can only
+
269 * be called after calling computeDFTFreeEnergy
+
270 *
+
271 * @return cell stress 3 \times 3 matrix given by
+
272 * sigma[i][j]=\frac{1}{\Omega}\frac{\partial E}{\partial \epsilon_{ij}}
+
273 */
+
274 std::vector<std::vector<double>>
+ +
276
+
277 /**
+
278 * @brief update atom positions and reinitialize all related data-structures
+
279 *
+
280 * @param[in] atomsDisplacements vector of displacements for
+
281 * each atom (in Bohr units)
+
282 */
+
283 void
+ +
285 const std::vector<std::vector<double>> atomsDisplacements);
+
286
+
287
+
288 /**
+
289 *@brief Deforms the cell by applying the given affine deformation gradient and
+
290 * reinitializes the underlying data-structures.
+
291 *
+
292 *@param[in] deformationGradient deformation gradient
+
293 * matrix given by F[i][j]=\frac{\partial x_i}{\partial X_j}
+
294 */
+
295 void
+
296 deformCell(const std::vector<std::vector<double>> deformationGradient);
+
297
+
298 /**
+
299 * @brief Gets the current atom Positions in cartesian form (in Bohr units)
+
300 * (origin at corner of cell against which the cell vectors are defined)
+
301 *
+
302 * @return array of coords for each atom
+
303 */
+
304 std::vector<std::vector<double>>
+ +
306
+
307 /**
+
308 * @brief Gets the current atom Positions in fractional form
+
309 * (only applicable for periodic and semi-periodic BCs).
+
310 * CAUTION: during relaxation and MD fractional coordinates may have negaive
+
311 * values
+
312 *
+
313 * @return array of coords for each atom
+
314 */
+
315 std::vector<std::vector<double>>
+ +
317
+
318
+
319
+
320 /**
+
321 * @brief Gets the current cell vectors
+
322 *
+
323 * @return 3 \times 3 matrix, cell[i][j] corresponds to jth component of
+
324 * ith cell vector (in Bohr units)
+
325 */
+
326 std::vector<std::vector<double>>
+
327 getCell() const;
+
328
+
329
+
330 /**
+
331 * @brief Gets the boundary conditions for each cell vector direction
+
332 *
+
333 * @return vector of bools, false denotes non-periodic BC and true denotes periodic BC
+
334 */
+
335 std::vector<bool>
+
336 getPBC() const;
+
337
+
338 /**
+
339 * @brief Gets the atomic numbers vector
+
340 *
+
341 * @return vector of atomic numbers
+
342 */
+
343 std::vector<int>
+ +
345
+
346
+
347 /**
+
348 * @brief Gets the number of valence electrons for each atom
+
349 *
+
350 * @return array of number of valence for each atom
+
351 */
+
352 std::vector<int>
+ +
354
+
355
+
356 /**
+
357 * @brief writes the current domain bounding vectors and atom coordinates to files for
+
358 * structural optimization and dynamics restarts. The coordinates are stored
+
359 * as: 1. fractional for semi-periodic/periodic 2. Cartesian for
+
360 * non-periodic.
+
361 * @param[in] Path The folder path to store the atom coordinates required
+
362 * during restart.
+
363 */
+
364 void
+
365 writeDomainAndAtomCoordinates(const std::string Path) const;
+
366
+
367
+
368 dftBase *
+ +
370
+
371 private:
+
372 void
+ +
374
+
375 void
+
376 initialize(const bool setDeviceToMPITaskBindingInternally);
+
377
+ + + + + +
383 };
+
+
384} // namespace dftfe
+
385#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 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 isScfRestart=true)
clear and reinitialize based on input parameter_file and restart coordinates and domain vectors 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 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
+
std::vector< std::vector< double > > getCellStress() const
Get cell stress: negative of gradient of DFT free energy with respect to affine strain components sca...
+
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 isScfRestart=true)
constructor based on input parameter_file and restart coordinates and domain vectors file paths
+
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()
+
void initialize(const bool setDeviceToMPITaskBindingInternally)
+
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.
+ +
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:381
+
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:380
+
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)
clear and reinitialize based on input parameter_file
+ +
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:379
+ +
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:378
+
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:382
+
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)
constructor based on input parameter_file
+ +
Definition upfToxml.cc:37
+
+ + + + diff --git a/dir_3e0e28f287a7eabeca6cb1997599e376.html b/dir_3e0e28f287a7eabeca6cb1997599e376.html new file mode 100644 index 000000000..2c0968d8f --- /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

 upfToxml.cc
 
 upfToxml.h
 
+
+ + + + diff --git a/dir_7d1659e50fc771a7918f965a6f1404ad.html b/dir_7d1659e50fc771a7918f965a6f1404ad.html new file mode 100644 index 000000000..900f58815 --- /dev/null +++ b/dir_7d1659e50fc771a7918f965a6f1404ad.html @@ -0,0 +1,322 @@ + + + + + + + +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

 BFGSNonLinearSolver.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
 
 FEBasisOperationsKernelsDevice.h
 
 fileReaders.h
 Contains commonly used I/O file utils functions.
 
 force.h
 
 forceWfcContractions.h
 
 forceWfcContractionsDevice.h
 
 geometryOptimizationClass.h
 
 geoOptCell.h
 
 geoOptIon.h
 
 headers.h
 
 kerkerSolverProblem.h
 
 kerkerSolverProblemDevice.h
 
 kohnShamDFTOperator.h
 
 kohnShamDFTOperatorDevice.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
 
 operator.h
 
 operatorDevice.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
 
 symmetry.h
 
 triangulationManager.h
 
 TypeConfig.h
 
 vectorUtilities.h
 
 vselfBinsManager.h
 
 xmlTodftfeParser.h
 
+
+ + + + diff --git a/dir_a5be7bbed3ff2f129951759fe96bf5d5.html b/dir_a5be7bbed3ff2f129951759fe96bf5d5.html new file mode 100644 index 000000000..2f33f883a --- /dev/null +++ b/dir_a5be7bbed3ff2f129951759fe96bf5d5.html @@ -0,0 +1,94 @@ + + + + + + + +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..009a9b554 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +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; +--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; + +} + +@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: black; +--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; +--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; + +}} +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-weight: 400; + font-size: 14px; + 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: underline; +} + +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; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-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.formulaDsp { + +} + +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; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.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; + text-decoration: none; + 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.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +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.section dd { + margin-bottom: 6px; +} + + +#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/dynsections.js b/dynsections.js new file mode 100644 index 000000000..b73c82889 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,192 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var 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; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var 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 + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var 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 + var 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',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..eb5136600 --- /dev/null +++ b/eigen_solver_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..e40b4aa64 --- /dev/null +++ b/eigen_solver_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +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
+
57 solve(operatorDFTClass & operatorMatrix,
+
58 std::vector<distributedCPUVec<double>> &eigenVectors,
+
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 void solve(operatorDFTClass &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)=0
Solve eigen problem.
+
virtual ~eigenSolverClass()=0
Destructor.
+
ReturnValueType
Definition eigenSolver.h:37
+ + + +
eigenSolverClass()
Constructor.
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:39
+ +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+ +
+ + + + diff --git a/elpa_scala_manager_8h.html b/elpa_scala_manager_8h.html new file mode 100644 index 000000000..b2e006669 --- /dev/null +++ b/elpa_scala_manager_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..11b2d7b19 --- /dev/null +++ b/elpa_scala_manager_8h_source.html @@ -0,0 +1,274 @@ + + + + + + + +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,
+
52 const dftParameters &dftParams);
+
53 void
+ +
55
+
56 elpa_t &
+ +
58
+
59 elpa_t &
+ +
61
+
62 elpa_autotune_t &
+ +
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 */
+
78 elpaScalaManager(const MPI_Comm &mpi_comm_replica);
+
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
+
97 elpa_autotune_t d_elpaAutoTuneHandle;
+
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
+ + +
Definition upfToxml.cc:37
+ +
+ + + + diff --git a/energy_calculator_8h.html b/energy_calculator_8h.html new file mode 100644 index 000000000..d7f862603 --- /dev/null +++ b/energy_calculator_8h.html @@ -0,0 +1,107 @@ + + + + + + + +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"
+
+

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..bfa9977e4 --- /dev/null +++ b/energy_calculator_8h_source.html @@ -0,0 +1,387 @@ + + + + + + + +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
+
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 */
+
44 energyCalculator(const MPI_Comm & mpi_comm_parent,
+
45 const MPI_Comm & mpi_comm_domain,
+
46 const MPI_Comm & interpool_comm,
+
47 const MPI_Comm & interBandGroupComm,
+
48 const dftParameters &dftParams);
+
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 dealii::DoFHandler<3> & dofHandlerElectrostatic,
+
97 const dealii::DoFHandler<3> & dofHandlerElectronic,
+
98 const dealii::Quadrature<3> & quadratureElectrostatic,
+
99 const dealii::Quadrature<3> & quadratureElectronic,
+
100 const dealii::Quadrature<3> & quadratureSmearedCharge,
+
101 const dealii::Quadrature<3> & quadratureLpsp,
+
102 const std::vector<std::vector<double>> &eigenValues,
+
103 const std::vector<double> & kPointWeights,
+
104 const double fermiEnergy,
+
105 const excManager * excManagerPtr,
+
106 const dispersionCorrection & dispersionCorr,
+
107 const std::map<dealii::CellId, std::vector<double>> &phiTotRhoInValues,
+
108 const distributedCPUVec<double> & phiTotRhoOut,
+
109 const std::map<dealii::CellId, std::vector<double>> &rhoInValues,
+
110 const std::map<dealii::CellId, std::vector<double>> &rhoOutValues,
+
111 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesLpsp,
+
112 const std::map<dealii::CellId, std::vector<double>>
+
113 &rhoOutValuesElectrostatic,
+
114 const std::map<dealii::CellId, std::vector<double>>
+
115 &rhoOutValuesElectrostaticLpsp,
+
116 const std::map<dealii::CellId, std::vector<double>> &gradRhoInValues,
+
117 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValues,
+
118 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
119 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
120 const std::map<dealii::CellId, std::vector<double>> &smearedbValues,
+
121 const std::map<dealii::CellId, std::vector<unsigned int>>
+
122 & smearedbNonTrivialAtomIds,
+
123 const std::vector<std::vector<double>> &localVselfs,
+
124 const std::map<dealii::CellId, std::vector<double>>
+
125 &pseudoValuesElectronic,
+
126 const std::map<dealii::CellId, std::vector<double>>
+
127 &pseudoValuesElectrostatic,
+
128 const std::map<dealii::types::global_dof_index, double>
+
129 & atomElectrostaticNodeIdToChargeMap,
+
130 const unsigned int numberGlobalAtoms,
+
131 const unsigned int lowerBoundKindex,
+
132 const unsigned int scfConverged,
+
133 const bool print,
+
134 const bool smearedNuclearCharges = false) const;
+
135
+
136
+
137
+
138 /**
+
139 * Computes total energy of the spin polarized ksdft problem in the current
+
140 * state and also prints the individual components of the energy
+
141 *
+
142 * @param dofHandlerElectrostatic p refined DoFHandler object used for re-computing
+
143 * the electrostatic fields using the ground state electron density. If
+
144 * electrostatics is not recomputed on p refined mesh, use
+
145 * dofHandlerElectronic for this argument.
+
146 * @param dofHandlerElectronic DoFHandler object on which the electrostatics for the
+
147 * eigen solve are computed.
+
148 * @param quadratureElectrostatic qudarature object for dofHandlerElectrostatic.
+
149 * @param quadratureElectronic qudarature object for dofHandlerElectronic.
+
150 * @param eigenValues eigenValues for each k point.
+
151 * @param kPointWeights
+
152 * @param fermiEnergy
+
153 * @param fermiEnergyUp
+
154 * @param fermiEnergyDown
+
155 * @param funcX exchange functional object.
+
156 * @param funcC correlation functional object.
+
157 * @param phiTotRhoIn nodal vector field of total electrostatic potential using input
+
158 * electron density to an eigensolve. This vector field is based on
+
159 * dofHandlerElectronic.
+
160 * @param phiTotRhoOut nodal vector field of total electrostatic potential using output
+
161 * electron density to an eigensolve. This vector field is based on
+
162 * dofHandlerElectrostatic.
+
163 * @param rhoInValues cell quadrature data of input electron density to an eigensolve. This
+
164 * data must correspond to quadratureElectronic.
+
165 * @param rhoOutValues cell quadrature data of output electron density of an eigensolve. This
+
166 * data must correspond to quadratureElectronic.
+
167 * @param rhoOutValuesElectrostatic cell quadrature data of output electron density of an eigensolve
+
168 * evaluated on a p refined mesh. This data corresponds to
+
169 * quadratureElectrostatic.
+
170 * @param gradRhoInValues cell quadrature data of input gradient electron density
+
171 * to an eigensolve. This data must correspond to quadratureElectronic.
+
172 * @param gradRhoOutValues cell quadrature data of output gradient electron density
+
173 * of an eigensolve. This data must correspond to quadratureElectronic.
+
174 * @param rhoInValuesSpinPolarized cell quadrature data of input spin polarized
+
175 * electron density to an eigensolve. This data must correspond to
+
176 * quadratureElectronic.
+
177 * @param rhoOutValuesSpinPolarized cell quadrature data of output spin polarized
+
178 * electron density of an eigensolve. This data must correspond to
+
179 * quadratureElectronic.
+
180 * @param gradRhoInValuesSpinPolarized cell quadrature data of input gradient spin polarized
+
181 * electron density to an eigensolve. This data must correspond to
+
182 * quadratureElectronic.
+
183 * @param gradRhoOutValuesSpinPolarized cell quadrature data of output gradient spin polarized
+
184 * electron density of an eigensolve. This data must correspond to
+
185 * quadratureElectronic.
+
186 * @param localVselfs peak vselfs of local atoms in each vself bin
+
187 * @param atomElectrostaticNodeIdToChargeMap map between locally processor atom global node ids
+
188 * of dofHandlerElectrostatic to atom charge value.
+
189 * @param numberGlobalAtoms
+
190 * @param lowerBoundKindex global k index of lower bound of the local k point set in the current pool
+
191 * @param if scf is converged
+
192 * @param print
+
193 *
+
194 * @return total energy
+
195 */
+
196 double
+ +
198 const dealii::DoFHandler<3> & dofHandlerElectrostatic,
+
199 const dealii::DoFHandler<3> & dofHandlerElectronic,
+
200 const dealii::Quadrature<3> & quadratureElectrostatic,
+
201 const dealii::Quadrature<3> & quadratureElectronic,
+
202 const dealii::Quadrature<3> & quadratureSmearedCharge,
+
203 const dealii::Quadrature<3> & quadratureLpsp,
+
204 const std::vector<std::vector<double>> &eigenValues,
+
205 const std::vector<double> & kPointWeights,
+
206 const double fermiEnergy,
+
207 const double fermiEnergyUp,
+
208 const double fermiEnergyDown,
+
209 const excManager * excManagerPtr,
+
210 const dispersionCorrection & dispersionCorr,
+
211 const std::map<dealii::CellId, std::vector<double>> &phiTotRhoInValues,
+
212 const distributedCPUVec<double> & phiTotRhoOut,
+
213 const std::map<dealii::CellId, std::vector<double>> &rhoInValues,
+
214 const std::map<dealii::CellId, std::vector<double>> &rhoOutValues,
+
215 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesLpsp,
+
216 const std::map<dealii::CellId, std::vector<double>>
+
217 &rhoOutValuesElectrostatic,
+
218 const std::map<dealii::CellId, std::vector<double>>
+
219 &rhoOutValuesElectrostaticLpsp,
+
220 const std::map<dealii::CellId, std::vector<double>> &gradRhoInValues,
+
221 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValues,
+
222 const std::map<dealii::CellId, std::vector<double>>
+
223 &rhoInValuesSpinPolarized,
+
224 const std::map<dealii::CellId, std::vector<double>>
+
225 &rhoOutValuesSpinPolarized,
+
226 const std::map<dealii::CellId, std::vector<double>>
+
227 &gradRhoInValuesSpinPolarized,
+
228 const std::map<dealii::CellId, std::vector<double>>
+
229 &gradRhoOutValuesSpinPolarized,
+
230 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
231 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
232 const std::map<dealii::CellId, std::vector<double>> &smearedbValues,
+
233 const std::map<dealii::CellId, std::vector<unsigned int>>
+
234 & smearedbNonTrivialAtomIds,
+
235 const std::vector<std::vector<double>> &localVselfs,
+
236 const std::map<dealii::CellId, std::vector<double>>
+
237 &pseudoValuesElectronic,
+
238 const std::map<dealii::CellId, std::vector<double>>
+
239 &pseudoValuesElectrostatic,
+
240 const std::map<dealii::types::global_dof_index, double>
+
241 & atomElectrostaticNodeIdToChargeMap,
+
242 const unsigned int numberGlobalAtoms,
+
243 const unsigned int lowerBoundKindex,
+
244 const unsigned int scfConverged,
+
245 const bool print,
+
246 const bool smearedNuclearCharges = false) const;
+
247
+
248
+
249 double
+
250 computeEntropicEnergy(const std::vector<std::vector<double>> &eigenValues,
+
251 const std::vector<double> & kPointWeights,
+
252 const double fermiEnergy,
+
253 const double fermiEnergyUp,
+
254 const double fermiEnergyDown,
+
255 const bool isSpinPolarized,
+
256 const bool isConstraintMagnetization,
+
257 const double temperature) const;
+
258
+
259
+
260
+
261 private:
+
262 const MPI_Comm d_mpiCommParent;
+
263 const MPI_Comm mpi_communicator;
+
264 const MPI_Comm interpoolcomm;
+
265 const MPI_Comm interBandGroupComm;
+
266
+ +
268
+
269 /// parallel message stream
+
270 dealii::ConditionalOStream pcout;
+
271 };
+
+
272
+
273} // namespace dftfe
+
274#endif // energyCalculator_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
+
Calculates the ksdft problem total energy and its components.
Definition energyCalculator.h:34
+
const MPI_Comm interBandGroupComm
Definition energyCalculator.h:265
+
const MPI_Comm d_mpiCommParent
Definition energyCalculator.h:262
+
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:267
+
const MPI_Comm interpoolcomm
Definition energyCalculator.h:264
+
dealii::ConditionalOStream pcout
parallel message stream
Definition energyCalculator.h:270
+
const MPI_Comm mpi_communicator
Definition energyCalculator.h:263
+
double computeEnergySpinPolarized(const dealii::DoFHandler< 3 > &dofHandlerElectrostatic, const dealii::DoFHandler< 3 > &dofHandlerElectronic, const dealii::Quadrature< 3 > &quadratureElectrostatic, const dealii::Quadrature< 3 > &quadratureElectronic, const dealii::Quadrature< 3 > &quadratureSmearedCharge, const dealii::Quadrature< 3 > &quadratureLpsp, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const excManager *excManagerPtr, const dispersionCorrection &dispersionCorr, const std::map< dealii::CellId, std::vector< double > > &phiTotRhoInValues, const distributedCPUVec< double > &phiTotRhoOut, const std::map< dealii::CellId, std::vector< double > > &rhoInValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostatic, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostaticLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoInValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValuesSpinPolarized, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesSpinPolarized, 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 > > &pseudoValuesElectronic, const std::map< dealii::CellId, std::vector< double > > &pseudoValuesElectrostatic, 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) const
+
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 dealii::DoFHandler< 3 > &dofHandlerElectrostatic, const dealii::DoFHandler< 3 > &dofHandlerElectronic, const dealii::Quadrature< 3 > &quadratureElectrostatic, const dealii::Quadrature< 3 > &quadratureElectronic, const dealii::Quadrature< 3 > &quadratureSmearedCharge, const dealii::Quadrature< 3 > &quadratureLpsp, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const excManager *excManagerPtr, const dispersionCorrection &dispersionCorr, const std::map< dealii::CellId, std::vector< double > > &phiTotRhoInValues, const distributedCPUVec< double > &phiTotRhoOut, const std::map< dealii::CellId, std::vector< double > > &rhoInValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostatic, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectrostaticLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoInValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, 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 > > &pseudoValuesElectronic, const std::map< dealii::CellId, std::vector< double > > &pseudoValuesElectrostatic, 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) const
+
Definition excManager.h:27
+ + + + +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+
+ + + + diff --git a/eshelby_tensor_8h.html b/eshelby_tensor_8h.html new file mode 100644 index 000000000..a84d48d73 --- /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, double > dftfe::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::getShadowPotentialForceRhoDiffXcEshelbyTensor (const dealii::VectorizedArray< double > &shadowKSRhoMinMinusRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &shadowKSGradRhoMinMinusGradRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRho, const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derVxcGradRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &der2ExcGradRho)
 
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..55f8d5219 --- /dev/null +++ b/eshelby_tensor_8h_source.html @@ -0,0 +1,256 @@ + + + + + + + +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>>
+
99 &derExcGradRho);
+
100
+
101
+
102 /// exchange-correlation part of the shadow potential (XL-BOMD) Eshelby
+
103 /// tensor
+
104 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+ +
106 const dealii::VectorizedArray<double> &shadowKSRhoMinMinusRho,
+
107 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+
108 &shadowKSGradRhoMinMinusGradRho,
+
109 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradRho,
+
110 const dealii::VectorizedArray<double> & vxc,
+
111 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+
112 &derVxcGradRho,
+
113 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+
114 &derExcGradRho,
+
115 const dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+
116 &der2ExcGradRho);
+
117
+
118 /// psp part of the ELoc Eshelby tensor
+
119 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+
120 getELocPspEshelbyTensor(const dealii::VectorizedArray<double> &rho,
+
121 const dealii::VectorizedArray<double> &pseudoVLoc,
+
122 const dealii::VectorizedArray<double> &phiExt);
+
123
+
124 /// Local pseudopotential force contribution
+
125 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
127 const dealii::VectorizedArray<double> rho,
+
128 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+
129 &gradPseudoVLoc,
+
130 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradPhiExt);
+
131
+
132
+
133 /// Nonlocal core correction pseudopotential force contribution
+
134 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
136 const dealii::VectorizedArray<double> & vxc,
+
137 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradRhoCore);
+
138
+
139 /// Nonlocal core correction pseudopotential force contribution
+
140 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
142 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+
143 &derExcGradRho,
+
144 const dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+
145 &hessianRhoCore);
+
146
+
147 }; // namespace eshelbyTensor
+
+
148
+
149} // namespace dftfe
+
150#endif
+ + +
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getShadowPotentialForceRhoDiffXcEshelbyTensor(const dealii::VectorizedArray< double > &shadowKSRhoMinMinusRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &shadowKSGradRhoMinMinusGradRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRho, const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derVxcGradRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &der2ExcGradRho)
+
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 upfToxml.cc:37
+ + +
+ + + + diff --git a/eshelby_tensor_spin_polarized_8h.html b/eshelby_tensor_spin_polarized_8h.html new file mode 100644 index 000000000..97fc4eac6 --- /dev/null +++ b/eshelby_tensor_spin_polarized_8h.html @@ -0,0 +1,111 @@ + + + + + + + +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..7995eb6d9 --- /dev/null +++ b/eshelby_tensor_spin_polarized_8h_source.html @@ -0,0 +1,184 @@ + + + + + + + +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>>
+
63 &derExcGradRhoSpin0,
+
64 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+
65 &derExcGradRhoSpin1);
+
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>>
+
75 &derExcGradRhoSpin0,
+
76 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+
77 &derExcGradRhoSpin1,
+
78 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradRhoCore,
+
79 const dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+
80 & hessianRhoCore,
+
81 const bool isXCGGA);
+
82 }; // namespace eshelbyTensorSP
+
+
83
+
84} // namespace dftfe
+
85#endif
+ + +
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 upfToxml.cc:37
+ +
+ + + + diff --git a/exc_density_base_class_8h.html b/exc_density_base_class_8h.html new file mode 100644 index 000000000..7695bb278 --- /dev/null +++ b/exc_density_base_class_8h.html @@ -0,0 +1,128 @@ + + + + + + + +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..0dcecc596 --- /dev/null +++ b/exc_density_base_class_8h_source.html @@ -0,0 +1,221 @@ + + + + + + + +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:
+
61 excDensityBaseClass(bool isSpinPolarized);
+
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> *>
+
75 &outputDerExchangeEnergy,
+
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> *>
+
84 &outputDer2ExchangeEnergy,
+
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
+
Definition upfToxml.cc:37
+
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..72fe0432c --- /dev/null +++ b/exc_density_g_g_a_class_8h.html @@ -0,0 +1,103 @@ + + + + + + + +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..628d68a1e --- /dev/null +++ b/exc_density_g_g_a_class_8h_source.html @@ -0,0 +1,187 @@ + + + + + + + +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:
+
29 excDensityGGAClass(xc_func_type *funcXPtr,
+
30 xc_func_type *funcCPtr,
+
31 bool isSpinPolarized,
+
32 bool scaleExchange,
+
33 bool computeCorrelation,
+
34 double scaleExchangeFactor);
+
35
+
36 excDensityGGAClass(xc_func_type *funcXPtr,
+
37 xc_func_type *funcCPtr,
+
38 bool isSpinPolarized,
+
39 std::string modelXCInputFile,
+
40 bool scaleExchange,
+
41 bool computeCorrelation,
+
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> *>
+
58 &outputDerExchangeEnergy,
+
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> *>
+
67 &outputDer2ExchangeEnergy,
+
68 std::map<fxcOutputDataAttributes, std::vector<double> *>
+
69 &outputDer2CorrEnergy) const override;
+
70
+
71
+
72 private:
+
73 NNGGA * d_NNGGAPtr;
+
74 xc_func_type *d_funcXPtr;
+
75 xc_func_type *d_funcCPtr;
+
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)
+ +
Definition upfToxml.cc:37
+
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..feb01085c --- /dev/null +++ b/exc_density_l_d_a_class_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..d0c8d2e57 --- /dev/null +++ b/exc_density_l_d_a_class_8h_source.html @@ -0,0 +1,189 @@ + + + + + + + +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:
+
30 excDensityLDAClass(xc_func_type *funcXPtr,
+
31 xc_func_type *funcCPtr,
+
32 bool isSpinPolarized,
+
33 bool scaleExchange,
+
34 bool computeCorrelation,
+
35 double scaleExchangeFactor);
+
36
+
37 excDensityLDAClass(xc_func_type *funcXPtr,
+
38 xc_func_type *funcCPtr,
+
39 bool isSpinPolarized,
+
40 std::string modelXCInputFile,
+
41 bool scaleExchange,
+
42 bool computeCorrelation,
+
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> *>
+
59 &outputDerExchangeEnergy,
+
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> *>
+
68 &outputDer2ExchangeEnergy,
+
69 std::map<fxcOutputDataAttributes, std::vector<double> *>
+
70 &outputDer2CorrEnergy) const override;
+
71
+
72
+
73 private:
+
74 NNLDA * d_NNLDAPtr;
+
75 xc_func_type *d_funcXPtr;
+
76 xc_func_type *d_funcCPtr;
+
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
+ +
Definition upfToxml.cc:37
+
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..d76a73046 --- /dev/null +++ b/exc_density_positivity_check_types_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..66fb4c561 --- /dev/null +++ b/exc_density_positivity_check_types_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +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 upfToxml.cc:37
+
excDensityPositivityCheckTypes
Definition excDensityPositivityCheckTypes.h:6
+ + + +
+ + + + diff --git a/exc_manager_8h.html b/exc_manager_8h.html new file mode 100644 index 000000000..e5470aa30 --- /dev/null +++ b/exc_manager_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..026668c94 --- /dev/null +++ b/exc_manager_8h_source.html @@ -0,0 +1,199 @@ + + + + + + + +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,
+
50 bool computeCorrelation,
+
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)
+
76 xc_func_type *d_funcXPtr;
+
77 xc_func_type *d_funcCPtr;
+
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
+ + +
Definition upfToxml.cc:37
+
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..71b72046a --- /dev/null +++ b/exc_wavefunction_base_class_8h.html @@ -0,0 +1,111 @@ + + + + + + + +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..70fab0423 --- /dev/null +++ b/exc_wavefunction_base_class_8h_source.html @@ -0,0 +1,162 @@ + + + + + + + +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:
+
33 excWavefunctionBaseClass(bool isSpinPolarized);
+
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
+
Definition upfToxml.cc:37
+
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..01c6a8a49 --- /dev/null +++ b/exc_wavefunction_none_class_8h.html @@ -0,0 +1,103 @@ + + + + + + + +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..b8590c65c --- /dev/null +++ b/exc_wavefunction_none_class_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +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:
+
28 excWavefunctionNoneClass(bool isSpinPolarized);
+
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
+ +
Definition upfToxml.cc:37
+
+ + + + diff --git a/file_readers_8h.html b/file_readers_8h.html new file mode 100644 index 000000000..124268f29 --- /dev/null +++ b/file_readers_8h.html @@ -0,0 +1,136 @@ + + + + + + + +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..669ebaefc --- /dev/null +++ b/file_readers_8h_source.html @@ -0,0 +1,202 @@ + + + + + + + +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,
+
62 const MPI_Comm & mpi_comm_parent);
+
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
+
78 readRelaxationFlagsFile(const unsigned int numColumns,
+
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
+
99 verifyCheckpointFileExists(const std::string &filename);
+
100 }; // namespace dftUtils
+
101
+
102} // namespace dftfe
+
103#endif
+
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 upfToxml.cc:37
+
+ + + + diff --git a/files.html b/files.html new file mode 100644 index 000000000..156f256ec --- /dev/null +++ b/files.html @@ -0,0 +1,206 @@ + + + + + + + +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..376004743 --- /dev/null +++ b/force_8h.html @@ -0,0 +1,110 @@ + + + + + + + +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 "kohnShamDFTOperator.h"
+#include <dftd.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::forceClass< FEOrder, FEOrderElectro >
 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..dd094bbf4 --- /dev/null +++ b/force_8h_source.html @@ -0,0 +1,1313 @@ + + + + + + + +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 "kohnShamDFTOperator.h"
+
27#ifdef DFTFE_WITH_DEVICE
+ +
29#endif
+
30#include <dftd.h>
+
31
+
32
+
33
+
34namespace dftfe
+
35{
+
36 // forward declaration
+
37 template <unsigned int T1, unsigned int T2>
+
38 class dftClass;
+
39
+
40 /**
+
41 * @brief computes configurational forces in KSDFT
+
42 *
+
43 * This class computes and stores the configurational forces corresponding to
+
44 * geometry optimization. It uses the formulation in the paper by Motamarri
+
45 * et.al. (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) which provides
+
46 * an unified approach to atomic forces corresponding to internal atomic
+
47 * relaxation and cell stress corresponding to cell relaxation.
+
48 *
+
49 * @author Sambit Das
+
50 */
+
51 template <unsigned int FEOrder, unsigned int FEOrderElectro>
+
+ +
53 {
+
54 friend class dftClass<FEOrder, FEOrderElectro>;
+
55
+
56 public:
+
57 /** @brief Constructor.
+
58 *
+
59 * @param _dftPtr pointer to dftClass
+
60 * @param mpi_comm_parent parent mpi_communicator
+
61 * @param mpi_comm_domain domain decomposition mpi_communicator
+
62 */
+ +
64 const MPI_Comm & mpi_comm_parent,
+
65 const MPI_Comm & mpi_comm_domain,
+
66 const dftParameters & dftParams);
+
67
+
68 /** @brief initializes data structures inside forceClass assuming unmoved triangulation.
+
69 *
+
70 * initUnmoved is the first step of the initialization/reinitialization of
+
71 * force class when starting from a new unmoved triangulation. It creates
+
72 * the dofHandler with linear finite elements and three components
+
73 * corresponding to the three force components. It also creates the
+
74 * corresponding constraint matrices which is why an unmoved triangulation
+
75 * is necessary. Finally this function also initializes the gaussianMovePar
+
76 * data member.
+
77 *
+
78 * @param triangulation reference to unmoved triangulation where the mesh nodes have not
+
79 * been manually moved.
+
80 * @param isElectrostaticsMesh boolean parameter specifying whether this triangulatio is to be used for
+
81 * for the electrostatics part of the configurational force.
+
82 * @return void.
+
83 */
+
84 void
+
85 initUnmoved(const dealii::Triangulation<3, 3> & triangulation,
+
86 const dealii::Triangulation<3, 3> & serialTriangulation,
+
87 const std::vector<std::vector<double>> &domainBoundingVectors,
+
88 const bool isElectrostaticsMesh);
+
89
+
90 /** @brief initializes data structures inside forceClass which depend on the moved mesh.
+
91 *
+
92 * initMoved is the second step (first step call initUnmoved) of the
+
93 * initialization/reinitialization of force class when starting from a new
+
94 * mesh, and the first step when recomputing forces on a perturbed mesh.
+
95 * initMoved assumes that the triangulation whose reference was passed to
+
96 * the forceClass object in the initUnmoved call now has its nodes moved
+
97 * such that all atomic positions lie on nodes.
+
98 *
+
99 * @return void.
+
100 */
+
101 void
+ +
103 std::vector<const dealii::DoFHandler<3> *> &dofHandlerVectorMatrixFree,
+
104 std::vector<const dealii::AffineConstraints<double> *>
+
105 & constraintsVectorMatrixFree,
+
106 const bool isElectrostaticsMesh);
+
107
+
108 /** @brief initializes and precomputes pseudopotential related data structuers required for configurational force
+
109 * and stress computation.
+
110 *
+
111 * This function is only activated for pseudopotential calculations and is
+
112 * currently called when initializing/reinitializing the dftClass object.
+
113 * This function initializes and precomputes the pseudopotential
+
114 * datastructures for local and non-local parts. Separate internal function
+
115 * calls are made for KB and ONCV projectors.
+
116 *
+
117 * @return void.
+
118 */
+
119 void
+ +
121
+
122 /** @brief computes the configurational force on all atoms corresponding to a Gaussian generator,
+
123 * which represents perturbation of the underlying space.
+
124 *
+
125 * The Gaussian generator is taken to be exp(-d_gaussianConstant*r^2), r
+
126 * being the distance from the atom. Currently d_gaussianConstant is
+
127 * hardcoded to be 4.0. To get the computed atomic forces use getAtomsForces
+
128 *
+
129 * @return void.
+
130 */
+
131 void
+ +
133 const dealii::MatrixFree<3, double> &matrixFreeData,
+
134#ifdef DFTFE_WITH_DEVICE
+ +
136 &kohnShamDFTEigenOperatorDevice,
+
137#endif
+ +
139 & kohnShamDFTEigenOperator,
+
140 const dispersionCorrection & dispersionCorr,
+
141 const unsigned int eigenDofHandlerIndex,
+
142 const unsigned int smearedChargeQuadratureId,
+
143 const unsigned int lpspQuadratureIdElectro,
+
144 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
145 const unsigned int phiTotDofHandlerIndexElectro,
+
146 const distributedCPUVec<double> & phiTotRhoOutElectro,
+
147 const std::map<dealii::CellId, std::vector<double>> &rhoOutValues,
+
148 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValues,
+
149 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValuesLpsp,
+
150 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesElectro,
+
151 const std::map<dealii::CellId, std::vector<double>>
+
152 &rhoOutValuesElectroLpsp,
+
153 const std::map<dealii::CellId, std::vector<double>>
+
154 &gradRhoOutValuesElectro,
+
155 const std::map<dealii::CellId, std::vector<double>>
+
156 &gradRhoOutValuesElectroLpsp,
+
157 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
158 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
159 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
160 const std::map<unsigned int,
+
161 std::map<dealii::CellId, std::vector<double>>>
+
162 &gradRhoCoreAtoms,
+
163 const std::map<unsigned int,
+
164 std::map<dealii::CellId, std::vector<double>>>
+
165 & hessianRhoCoreAtoms,
+
166 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
167 const std::map<unsigned int,
+
168 std::map<dealii::CellId, std::vector<double>>>
+
169 & pseudoVLocAtomsElectro,
+
170 const dealii::AffineConstraints<double> &hangingPlusPBCConstraintsElectro,
+
171 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro,
+
172 const std::map<dealii::CellId, std::vector<double>> &shadowKSRhoMinValues,
+
173 const std::map<dealii::CellId, std::vector<double>>
+
174 & shadowKSGradRhoMinValues,
+
175 const distributedCPUVec<double> &phiRhoMinusApproxRho,
+
176 const bool shadowPotentialForce = false);
+
177
+
178 /** @brief returns a copy of the configurational force on all global atoms.
+
179 *
+
180 * computeAtomsForces must be called prior to this function call.
+
181 *
+
182 * @return std::vector<double> flattened array of the configurational force on all atoms,
+
183 * the three force components on each atom being the leading dimension.
+
184 * Units- Hartree/Bohr
+
185 */
+
186 std::vector<double>
+ +
188
+
189 /** @brief prints the currently stored configurational forces on atoms and the Gaussian generator constant
+
190 * used to compute them.
+
191 *
+
192 * @return void.
+
193 */
+
194 void
+ +
196
+
197 /** @brief Update force generator Gaussian constant.
+
198 *
+
199 * @return void.
+
200 */
+
201 // void updateGaussianConstant(const double newGaussianConstant);
+
202
+
203 /** @brief computes the configurational stress on the domain corresponding to
+
204 * affine deformation of the periodic cell.
+
205 *
+
206 * This function cannot be called for fully non-periodic calculations.
+
207 *
+
208 * @return void.
+
209 */
+
210 void
+ +
212 const dealii::MatrixFree<3, double> &matrixFreeData,
+
213#ifdef DFTFE_WITH_DEVICE
+ +
215 &kohnShamDFTEigenOperatorDevice,
+
216#endif
+ +
218 & kohnShamDFTEigenOperator,
+
219 const dispersionCorrection & dispersionCorr,
+
220 const unsigned int eigenDofHandlerIndex,
+
221 const unsigned int smearedChargeQuadratureId,
+
222 const unsigned int lpspQuadratureIdElectro,
+
223 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
224 const unsigned int phiTotDofHandlerIndexElectro,
+
225 const distributedCPUVec<double> & phiTotRhoOutElectro,
+
226 const std::map<dealii::CellId, std::vector<double>> &rhoOutValues,
+
227 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValues,
+
228 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValuesLpsp,
+
229 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesElectro,
+
230 const std::map<dealii::CellId, std::vector<double>>
+
231 &rhoOutValuesElectroLpsp,
+
232 const std::map<dealii::CellId, std::vector<double>>
+
233 &gradRhoOutValuesElectro,
+
234 const std::map<dealii::CellId, std::vector<double>>
+
235 &gradRhoOutValuesElectroLpsp,
+
236 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
237 const std::map<unsigned int,
+
238 std::map<dealii::CellId, std::vector<double>>>
+
239 &pseudoVLocAtomsElectro,
+
240 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
241 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
242 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
243 const std::map<unsigned int,
+
244 std::map<dealii::CellId, std::vector<double>>>
+
245 &gradRhoCoreAtoms,
+
246 const std::map<unsigned int,
+
247 std::map<dealii::CellId, std::vector<double>>>
+
248 & hessianRhoCoreAtoms,
+
249 const dealii::AffineConstraints<double> &hangingPlusPBCConstraintsElectro,
+
250 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro);
+
251
+
252 /** @brief prints the currently stored configurational stress tensor.
+
253 *
+
254 * @return void.
+
255 */
+
256 void
+ +
258
+
259 /** @brief returns a copy of the current stress tensor value.
+
260 *
+
261 * computeStress must be call prior to this function call.
+
262 *
+
263 * @return dealii::Tensor<2,3,double> second order stress Tensor in Hartree/Bohr^3
+
264 */
+
265 dealii::Tensor<2, 3, double>
+ +
267
+
268 /** @brief get the value of Gaussian generator parameter (d_gaussianConstant).
+
269 * Gaussian generator: Gamma(r)= exp(-d_gaussianConstant*r^2).
+
270 *
+
271 */
+
272 // double getGaussianGeneratorParameter() const;
+
273
+
274 private:
+
275 /** @brief Locates and stores the global dof indices of d_dofHandlerForce whose cooridinates match
+
276 * with the atomic positions.
+
277 *
+
278 * @return void.
+
279 */
+
280 void
+
281 locateAtomCoreNodesForce(const dealii::DoFHandler<3> &dofHandlerForce,
+
282 const dealii::IndexSet &locally_owned_dofsForce,
+
283 std::map<std::pair<unsigned int, unsigned int>,
+
284 unsigned int> &atomsForceDofs);
+
285
+
286 void
+ +
288 const dealii::DoFHandler<3> & dofHandler,
+
289 const dealii::DoFHandler<3> & dofHandlerForce,
+
290 const dealii::AffineConstraints<double> &hangingPlusPBCConstraints,
+ +
292 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+
293 &cellsVselfBallsDofHandler,
+
294 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+
295 &cellsVselfBallsDofHandlerForce,
+
296 std::vector<std::map<dealii::CellId, unsigned int>>
+
297 &cellsVselfBallsClosestAtomIdDofHandler,
+
298 std::map<unsigned int, unsigned int> &AtomIdBinIdLocalDofHandler,
+
299 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
300 std::vector<unsigned int>>>
+
301 &cellFacesVselfBallSurfacesDofHandler,
+
302 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
303 std::vector<unsigned int>>>
+
304 &cellFacesVselfBallSurfacesDofHandlerForce);
+
305
+
306 void
+ +
308 const dealii::MatrixFree<3, double> &matrixFreeData,
+
309 const dealii::MatrixFree<3, double> &matrixFreeDataElectro);
+
310
+
311 void
+ +
313
+
314 void
+ +
316 const dealii::MatrixFree<3, double> &matrixFreeData,
+
317#ifdef DFTFE_WITH_DEVICE
+ +
319 &kohnShamDFTEigenOperatorDevice,
+
320#endif
+ +
322 & kohnShamDFTEigenOperator,
+
323 const unsigned int eigenDofHandlerIndex,
+
324 const unsigned int smearedChargeQuadratureId,
+
325 const unsigned int lpspQuadratureIdElectro,
+
326 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
327 const unsigned int phiTotDofHandlerIndexElectro,
+
328 const distributedCPUVec<double> & phiTotRhoOutElectro,
+
329 const std::map<dealii::CellId, std::vector<double>> &rhoOutValues,
+
330 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValues,
+
331 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValuesLpsp,
+
332 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesElectro,
+
333 const std::map<dealii::CellId, std::vector<double>>
+
334 &rhoOutValuesElectroLpsp,
+
335 const std::map<dealii::CellId, std::vector<double>>
+
336 &gradRhoOutValuesElectro,
+
337 const std::map<dealii::CellId, std::vector<double>>
+
338 &gradRhoOutValuesElectroLpsp,
+
339 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
340 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
341 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
342 const std::map<unsigned int,
+
343 std::map<dealii::CellId, std::vector<double>>>
+
344 &gradRhoCoreAtoms,
+
345 const std::map<unsigned int,
+
346 std::map<dealii::CellId, std::vector<double>>>
+
347 & hessianRhoCoreAtoms,
+
348 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
349 const std::map<unsigned int,
+
350 std::map<dealii::CellId, std::vector<double>>>
+
351 & pseudoVLocAtomsElectro,
+
352 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro,
+
353 const std::map<dealii::CellId, std::vector<double>> &shadowKSRhoMinValues,
+
354 const std::map<dealii::CellId, std::vector<double>>
+
355 & shadowKSGradRhoMinValues,
+
356 const distributedCPUVec<double> &phiRhoMinusApproxRho,
+
357 const bool shadowPotentialForce = false);
+
358
+
359 void
+ +
361 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
362 const unsigned int phiTotDofHandlerIndexElectro,
+
363 const unsigned int smearedChargeQuadratureId,
+
364 const unsigned int lpspQuadratureIdElectro,
+
365 const distributedCPUVec<double> & phiTotRhoOutElectro,
+
366 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesElectro,
+
367 const std::map<dealii::CellId, std::vector<double>>
+
368 &rhoOutValuesElectroLpsp,
+
369 const std::map<dealii::CellId, std::vector<double>>
+
370 &gradRhoOutValuesElectro,
+
371 const std::map<dealii::CellId, std::vector<double>>
+
372 &gradRhoOutValuesElectroLpsp,
+
373 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
374 const std::map<unsigned int,
+
375 std::map<dealii::CellId, std::vector<double>>>
+
376 & pseudoVLocAtomsElectro,
+
377 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro,
+
378 const std::map<dealii::CellId, std::vector<double>> &shadowKSRhoMinValues,
+
379 const distributedCPUVec<double> & phiRhoMinusApproxRho,
+
380 const bool shadowPotentialForce = false);
+
381
+
382 void
+ +
384
+
385 void
+ +
387 const dealii::DoFHandler<3> & dofHandlerElectro,
+
388 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro,
+
389 const dealii::MatrixFree<3, double> & matrixFreeDataElectro,
+
390 const unsigned int smearedChargeQuadratureId);
+
391
+
392 void
+ +
394
+
395 void
+ +
397 const dealii::MatrixFree<3, double> &matrixFreeData,
+
398#ifdef DFTFE_WITH_DEVICE
+ +
400 &kohnShamDFTEigenOperatorDevice,
+
401#endif
+ +
403 & kohnShamDFTEigenOperator,
+
404 const unsigned int eigenDofHandlerIndex,
+
405 const unsigned int smearedChargeQuadratureId,
+
406 const unsigned int lpspQuadratureIdElectro,
+
407 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
408 const unsigned int phiTotDofHandlerIndexElectro,
+
409 const distributedCPUVec<double> & phiTotRhoOutElectro,
+
410 const std::map<dealii::CellId, std::vector<double>> &rhoOutValues,
+
411 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValues,
+
412 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValuesLpsp,
+
413 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesElectro,
+
414 const std::map<dealii::CellId, std::vector<double>>
+
415 &rhoOutValuesElectroLpsp,
+
416 const std::map<dealii::CellId, std::vector<double>>
+
417 &gradRhoOutValuesElectro,
+
418 const std::map<dealii::CellId, std::vector<double>>
+
419 &gradRhoOutValuesElectroLpsp,
+
420 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
421 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
422 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
423 const std::map<unsigned int,
+
424 std::map<dealii::CellId, std::vector<double>>>
+
425 &gradRhoCoreAtoms,
+
426 const std::map<unsigned int,
+
427 std::map<dealii::CellId, std::vector<double>>>
+
428 & hessianRhoCoreAtoms,
+
429 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
430 const std::map<unsigned int,
+
431 std::map<dealii::CellId, std::vector<double>>>
+
432 & pseudoVLocAtomsElectro,
+
433 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro,
+
434 const std::map<dealii::CellId, std::vector<double>> &shadowKSRhoMinValues,
+
435 const std::map<dealii::CellId, std::vector<double>>
+
436 & shadowKSGradRhoMinValues,
+
437 const distributedCPUVec<double> &phiRhoMinusApproxRho,
+
438 const bool shadowPotentialForce = false);
+
439
+
440 void
+ +
442 std::map<unsigned int, std::vector<double>>
+
443 & forceContributionFPSPLocalGammaAtoms,
+
444 dealii::FEValues<3> & feValues,
+
445 dealii::FEFaceValues<3> & feFaceValues,
+
446 dealii::FEEvaluation<3,
+
447 1,
+
448 C_num1DQuadLPSP<FEOrder>() * C_numCopies1DQuadLPSP(),
+
449 3> & forceEval,
+
450 const dealii::MatrixFree<3, double> &matrixFreeData,
+
451 const unsigned int phiTotDofHandlerIndexElectro,
+
452 const unsigned int cell,
+
453 const dealii::AlignedVector<dealii::VectorizedArray<double>> &rhoQuads,
+
454 const dealii::AlignedVector<
+
455 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradRhoQuads,
+
456 const std::map<unsigned int,
+
457 std::map<dealii::CellId, std::vector<double>>>
+
458 & pseudoVLocAtoms,
+ +
460 const std::vector<std::map<dealii::CellId, unsigned int>>
+
461 &cellsVselfBallsClosestAtomIdDofHandler);
+
462
+
463 void
+ +
465 std::map<unsigned int, std::vector<double>>
+
466 &forceContributionSmearedChargesGammaAtoms,
+
467 dealii::FEEvaluation<3, -1, 1, 3> & forceEval,
+
468 const dealii::MatrixFree<3, double> &matrixFreeData,
+
469 const unsigned int cell,
+
470 const dealii::AlignedVector<
+
471 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradPhiTotQuads,
+
472 const std::vector<unsigned int> &nonTrivialAtomIdsMacroCell,
+
473 const std::map<dealii::CellId, std::vector<int>> &bQuadAtomIdsAllAtoms,
+
474 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
475 &smearedbQuads);
+
476
+
477 void
+ +
479 std::map<unsigned int, std::vector<double>>
+
480 &forceContributionSmearedChargesGammaAtoms,
+
481 dealii::FEEvaluation<3, -1, 1, 3> & forceEval,
+
482 const dealii::MatrixFree<3, double> &matrixFreeData,
+
483 const unsigned int cell,
+
484 const dealii::AlignedVector<
+
485 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+
486 & gradVselfBinQuads,
+
487 const std::vector<unsigned int> &nonTrivialAtomIdsMacroCell,
+
488 const std::map<dealii::CellId, std::vector<int>> &bQuadAtomIdsAllAtoms,
+
489 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
490 &smearedbQuads);
+
491
+
492 void
+ +
494 std::map<unsigned int, std::vector<double>>
+
495 &forceContributionLocalGammaAtoms,
+
496 dealii::FEEvaluation<
+
497 3,
+
498 1,
+
499 C_num1DQuad<C_rhoNodalPolyOrder<FEOrder, FEOrderElectro>()>(),
+
500 3> & forceEval,
+
501 const dealii::MatrixFree<3, double> &matrixFreeData,
+
502 const unsigned int cell,
+
503 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
504 &derVxcWithRhoTimesRhoDiffQuads,
+
505 const std::map<unsigned int,
+
506 std::map<dealii::CellId, std::vector<double>>>
+
507 &gradRhoAtomsQuadsSeparate,
+
508 const dealii::AlignedVector<
+
509 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>>
+
510 &der2ExcWithGradRhoOutQuads,
+
511 const dealii::AlignedVector<
+
512 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+
513 &derVxcWithGradRhoOutQuads,
+
514 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
515 &shadowKSRhoMinMinusGradRhoQuads,
+
516 const dealii::AlignedVector<
+
517 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+
518 &shadowKSGradRhoMinMinusGradRhoQuads,
+
519 const std::map<unsigned int,
+
520 std::map<dealii::CellId, std::vector<double>>>
+
521 &hessianRhoAtomsQuadsSeparate,
+
522 const std::map<unsigned int,
+
523 std::map<dealii::CellId, std::vector<double>>>
+
524 &gradRhoCoreAtoms,
+
525 const std::map<unsigned int,
+
526 std::map<dealii::CellId, std::vector<double>>>
+
527 & hessianRhoCoreAtoms,
+
528 const bool isAtomicRhoSplitting = false,
+
529 const bool isXCGGA = false,
+
530 const bool isNLCC = false);
+
531
+
532 void
+ +
534 std::map<unsigned int, std::vector<double>>
+
535 &forceContributionLocalGammaAtoms,
+
536 dealii::FEEvaluation<
+
537 3,
+
538 1,
+
539 C_num1DQuad<C_rhoNodalPolyOrder<FEOrder, FEOrderElectro>()>(),
+
540 3> & forceEval,
+
541 const dealii::MatrixFree<3, double> &matrixFreeData,
+
542 const unsigned int cell,
+
543 const dealii::AlignedVector<
+
544 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+
545 &gradPhiRhoMinusApproxRhoElectroQuads,
+
546 const std::map<unsigned int,
+
547 std::map<dealii::CellId, std::vector<double>>>
+
548 &rhoAtomsQuadsSeparate);
+
549
+
550
+
551 void
+ +
553 std::map<unsigned int, std::vector<double>>
+
554 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
+
555 dealii::FEEvaluation<
+
556 3,
+
557 1,
+
558 C_num1DQuad<C_rhoNodalPolyOrder<FEOrder, FEOrderElectro>()>(),
+
559 3> & forceEval,
+
560 const dealii::MatrixFree<3, double> &matrixFreeData,
+
561 const unsigned int cell,
+
562 const dealii::AlignedVector<dealii::VectorizedArray<double>> &vxcQuads,
+
563 const std::map<unsigned int,
+
564 std::map<dealii::CellId, std::vector<double>>>
+
565 &gradRhoCoreAtoms);
+
566
+
567
+
568 void
+ +
570 std::map<unsigned int, std::vector<double>>
+
571 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
+
572 dealii::FEEvaluation<
+
573 3,
+
574 1,
+
575 C_num1DQuad<C_rhoNodalPolyOrder<FEOrder, FEOrderElectro>()>(),
+
576 3> & forceEval,
+
577 const dealii::MatrixFree<3, double> &matrixFreeData,
+
578 const unsigned int cell,
+
579 const dealii::AlignedVector<
+
580 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &derExcGradRho,
+
581 const std::map<unsigned int,
+
582 std::map<dealii::CellId, std::vector<double>>>
+
583 &hessianRhoCoreAtoms);
+
584
+
585 void
+ +
587 std::map<unsigned int, std::vector<double>>
+
588 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
+
589 dealii::FEEvaluation<
+
590 3,
+
591 1,
+
592 C_num1DQuad<C_rhoNodalPolyOrder<FEOrder, FEOrderElectro>()>(),
+
593 3> & forceEval,
+
594 const dealii::MatrixFree<3, double> &matrixFreeData,
+
595 const unsigned int cell,
+
596 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
597 &vxcQuadsSpin0,
+
598 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
599 &vxcQuadsSpin1,
+
600 const dealii::AlignedVector<
+
601 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+
602 &derExcGradRhoSpin0,
+
603 const dealii::AlignedVector<
+
604 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+
605 &derExcGradRhoSpin1,
+
606 const std::map<unsigned int,
+
607 std::map<dealii::CellId, std::vector<double>>>
+
608 &gradRhoCoreAtoms,
+
609 const std::map<unsigned int,
+
610 std::map<dealii::CellId, std::vector<double>>>
+
611 & hessianRhoCoreAtoms,
+
612 const bool isXCGGA = false);
+
613
+
614 void
+ +
616 const std::map<unsigned int, std::vector<double>>
+
617 &forceContributionFPSPLocalGammaAtoms,
+
618 const std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+
619 & atomsForceDofs,
+
620 const dealii::AffineConstraints<double> &constraintsNoneForce,
+
621 distributedCPUVec<double> & configForceVectorLinFE);
+
622
+
623 void
+ +
625 const std::map<unsigned int, std::vector<double>>
+
626 & forceContributionLocalGammaAtoms,
+
627 std::vector<double> &accumForcesVector);
+
628
+
629
+
630 void
+ +
632 std::map<unsigned int, std::vector<double>>
+
633 & forceContributionFnlGammaAtoms,
+
634 const dealii::MatrixFree<3, double> &matrixFreeData,
+
635 dealii::FEEvaluation<3,
+
636 1,
+
637 C_num1DQuadNLPSP<FEOrder>() *
+ +
639 3> & forceEvalNLP,
+
640 const unsigned int cell,
+
641 const std::map<dealii::CellId, unsigned int> &cellIdToCellNumberMap,
+
642#ifdef USE_COMPLEX
+
643 const std::vector<dataTypes::number>
+
644 &projectorKetTimesPsiTimesVTimesPartOccContractionPsiQuadsFlattened,
+
645#endif
+
646 const std::vector<dataTypes::number> &zetaDeltaVQuadsFlattened,
+
647 const std::vector<dataTypes::number> &
+
648 projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened);
+
649
+
650
+ +
652 dealii::AlignedVector<
+
653 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &FVectQuads,
+
654 const dealii::MatrixFree<3, double> & matrixFreeData,
+
655 const unsigned int numQuadPoints,
+
656 const unsigned int cell,
+
657 const std::map<dealii::CellId, unsigned int> &cellIdToCellNumberMap,
+
658 const std::vector<dataTypes::number> & zetaDeltaVQuadsFlattened,
+
659 const std::vector<dataTypes::number> &
+
660 projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened);
+
661
+
662 void
+ +
664 const std::map<unsigned int, std::vector<double>>
+
665 &forceContributionFnlGammaAtoms);
+
666
+ +
668 dealii::Tensor<2, 3, double> & stressContribution,
+
669 const dealii::MatrixFree<3, double> & matrixFreeData,
+
670 const unsigned int numQuadPoints,
+
671 const std::vector<double> & jxwQuadsSubCells,
+
672 const unsigned int cell,
+
673 const std::map<dealii::CellId, unsigned int> &cellIdToCellNumberMap,
+
674 const std::vector<dataTypes::number> &zetalmDeltaVlProductDistImageAtoms,
+
675#ifdef USE_COMPLEX
+
676 const std::vector<dataTypes::number>
+
677 &projectorKetTimesPsiTimesVTimesPartOccContractionPsiQuadsFlattened,
+
678#endif
+
679 const std::vector<dataTypes::number>
+
680 &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened,
+
681 const bool isSpinPolarized);
+
682
+
683 void
+ +
685 bool allowGaussianOverlapOnAtoms = false);
+
686
+
687 void
+ +
689
+
690 void
+ +
692 const dealii::DoFHandler<3> & dofHandlerElectro,
+
693 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro,
+
694 const dealii::MatrixFree<3, double> & matrixFreeDataElectro,
+
695 const unsigned int smearedChargeQuadratureId);
+
696
+
697 void
+ +
699 const dealii::MatrixFree<3, double> &matrixFreeData,
+
700#ifdef DFTFE_WITH_DEVICE
+ +
702 &kohnShamDFTEigenOperatorDevice,
+
703#endif
+ +
705 & kohnShamDFTEigenOperator,
+
706 const unsigned int eigenDofHandlerIndex,
+
707 const unsigned int smearedChargeQuadratureId,
+
708 const unsigned int lpspQuadratureIdElectro,
+
709 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
710 const unsigned int phiTotDofHandlerIndexElectro,
+
711 const distributedCPUVec<double> & phiTotRhoOutElectro,
+
712 const std::map<dealii::CellId, std::vector<double>> &rhoOutValues,
+
713 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValues,
+
714 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValuesLpsp,
+
715 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesElectro,
+
716 const std::map<dealii::CellId, std::vector<double>>
+
717 &rhoOutValuesElectroLpsp,
+
718 const std::map<dealii::CellId, std::vector<double>>
+
719 &gradRhoOutValuesElectro,
+
720 const std::map<dealii::CellId, std::vector<double>>
+
721 &gradRhoOutValuesElectroLpsp,
+
722 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
723 const std::map<unsigned int,
+
724 std::map<dealii::CellId, std::vector<double>>>
+
725 &pseudoVLocAtomsElectro,
+
726 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
727 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
728 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
729 const std::map<unsigned int,
+
730 std::map<dealii::CellId, std::vector<double>>>
+
731 &gradRhoCoreAtoms,
+
732 const std::map<unsigned int,
+
733 std::map<dealii::CellId, std::vector<double>>>
+
734 & hessianRhoCoreAtoms,
+
735 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro);
+
736
+
737 void
+ +
739 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
740 const unsigned int phiTotDofHandlerIndexElectro,
+
741 const unsigned int smearedChargeQuadratureId,
+
742 const unsigned int lpspQuadratureIdElectro,
+
743 const distributedCPUVec<double> & phiTotRhoOutElectro,
+
744 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesElectro,
+
745 const std::map<dealii::CellId, std::vector<double>>
+
746 &rhoOutValuesElectroLpsp,
+
747 const std::map<dealii::CellId, std::vector<double>>
+
748 &gradRhoOutValuesElectro,
+
749 const std::map<dealii::CellId, std::vector<double>>
+
750 &gradRhoOutValuesElectroLpsp,
+
751 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
752 const std::map<unsigned int,
+
753 std::map<dealii::CellId, std::vector<double>>>
+
754 & pseudoVLocAtomsElectro,
+
755 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro);
+
756
+
757 void
+ +
759 const dealii::MatrixFree<3, double> &matrixFreeData,
+
760 const unsigned int eigenDofHandlerIndex,
+
761 const unsigned int smearedChargeQuadratureId,
+
762 const unsigned int lpspQuadratureIdElectro,
+
763 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
764 const unsigned int phiTotDofHandlerIndexElectro,
+
765 const distributedCPUVec<double> & phiTotRhoOutElectro,
+
766 const std::map<dealii::CellId, std::vector<double>> &gradRhoOutValuesLpsp,
+
767 const std::map<dealii::CellId, std::vector<double>> &rhoOutValuesElectro,
+
768 const std::map<dealii::CellId, std::vector<double>>
+
769 &rhoOutValuesElectroLpsp,
+
770 const std::map<dealii::CellId, std::vector<double>>
+
771 &gradRhoOutValuesElectro,
+
772 const std::map<dealii::CellId, std::vector<double>>
+
773 &gradRhoOutValuesElectroLpsp,
+
774 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
775 const std::map<unsigned int,
+
776 std::map<dealii::CellId, std::vector<double>>>
+
777 &pseudoVLocAtomsElectro,
+
778 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
779 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
780 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
781 const std::map<unsigned int,
+
782 std::map<dealii::CellId, std::vector<double>>>
+
783 &gradRhoCoreAtoms,
+
784 const std::map<unsigned int,
+
785 std::map<dealii::CellId, std::vector<double>>>
+
786 & hessianRhoCoreAtoms,
+
787 const vselfBinsManager<FEOrder, FEOrderElectro> &vselfBinsManagerElectro);
+
788
+ +
790 dealii::FEValues<3> & feValues,
+
791 dealii::FEFaceValues<3> & feFaceValues,
+
792 dealii::FEEvaluation<3,
+
793 1,
+
794 C_num1DQuadLPSP<FEOrder>() * C_numCopies1DQuadLPSP(),
+
795 3> & forceEval,
+
796 const dealii::MatrixFree<3, double> &matrixFreeData,
+
797 const unsigned int phiTotDofHandlerIndexElectro,
+
798 const unsigned int cell,
+
799 const dealii::AlignedVector<dealii::VectorizedArray<double>> &rhoQuads,
+
800 const dealii::AlignedVector<
+
801 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradRhoQuads,
+
802 const std::map<unsigned int,
+
803 std::map<dealii::CellId, std::vector<double>>>
+
804 & pseudoVLocAtoms,
+ +
806 const std::vector<std::map<dealii::CellId, unsigned int>>
+
807 &cellsVselfBallsClosestAtomIdDofHandler);
+
808
+ +
810 dealii::FEEvaluation<
+
811 3,
+
812 1,
+
813 C_num1DQuad<C_rhoNodalPolyOrder<FEOrder, FEOrderElectro>()>(),
+
814 3> & forceEval,
+
815 const dealii::MatrixFree<3, double> &matrixFreeData,
+
816 const unsigned int cell,
+
817 const dealii::AlignedVector<dealii::VectorizedArray<double>> &vxcQuads,
+
818 const dealii::AlignedVector<
+
819 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &derExcGradRho,
+
820 const std::map<unsigned int,
+
821 std::map<dealii::CellId, std::vector<double>>>
+
822 &gradRhoCoreAtoms,
+
823 const std::map<unsigned int,
+
824 std::map<dealii::CellId, std::vector<double>>>
+
825 &hessianRhoCoreAtoms);
+
826
+ +
828 dealii::FEEvaluation<
+
829 3,
+
830 1,
+
831 C_num1DQuad<C_rhoNodalPolyOrder<FEOrder, FEOrderElectro>()>(),
+
832 3> & forceEval,
+
833 const dealii::MatrixFree<3, double> &matrixFreeData,
+
834 const unsigned int cell,
+
835 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
836 &vxcQuadsSpin0,
+
837 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
838 &vxcQuadsSpin1,
+
839 const dealii::AlignedVector<
+
840 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+
841 &derExcGradRhoSpin0,
+
842 const dealii::AlignedVector<
+
843 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+
844 &derExcGradRhoSpin1,
+
845 const std::map<unsigned int,
+
846 std::map<dealii::CellId, std::vector<double>>>
+
847 &gradRhoCoreAtoms,
+
848 const std::map<unsigned int,
+
849 std::map<dealii::CellId, std::vector<double>>>
+
850 & hessianRhoCoreAtoms,
+
851 const bool isXCGGA = false);
+
852
+ +
854 dealii::FEEvaluation<3, -1, 1, 3> & forceEval,
+
855 const dealii::MatrixFree<3, double> &matrixFreeData,
+
856 const unsigned int cell,
+
857 const dealii::AlignedVector<
+
858 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradPhiTotQuads,
+
859 const std::vector<unsigned int> &nonTrivialAtomImageIdsMacroCell,
+
860 const std::map<dealii::CellId, std::vector<int>>
+
861 &bQuadAtomIdsAllAtomsImages,
+
862 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
863 &smearedbQuads);
+
864
+ +
866 dealii::FEEvaluation<3, -1, 1, 3> & forceEval,
+
867 const dealii::MatrixFree<3, double> &matrixFreeData,
+
868 const unsigned int cell,
+
869 const dealii::AlignedVector<
+
870 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradVselfQuads,
+
871 const std::vector<unsigned int> &nonTrivialAtomImageIdsMacroCell,
+
872 const std::map<dealii::CellId, std::vector<int>>
+
873 &bQuadAtomIdsAllAtomsImages,
+
874 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+
875 &smearedbQuads);
+
876
+
877 void
+ +
879
+
880
+
881 /// Parallel distributed vector field which stores the configurational force
+
882 /// for each fem node corresponding to linear shape function generator (see
+
883 /// equations 52-53 in
+
884 /// (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)). This vector
+
885 /// doesn't contain contribution from terms which have sums over k points.
+ +
887
+
888 /// Parallel distributed vector field which stores the configurational force
+
889 /// for each fem node corresponding to linear shape function generator (see
+
890 /// equations 52-53 in
+
891 /// (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)). This vector only
+
892 /// containts contribution from the electrostatic part.
+ +
894
+
895#ifdef USE_COMPLEX
+
896 /// Parallel distributed vector field which stores the configurational force
+
897 /// for each fem node corresponding to linear shape function generator (see
+
898 /// equations 52-53 in
+
899 /// (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)). This vector only
+
900 /// contains contribution from terms which have sums over k points.
+
901 distributedCPUVec<double> d_configForceVectorLinFEKPoints;
+
902#endif
+
903
+
904
+
905 std::vector<double> d_forceAtomsFloating;
+
906
+
907#ifdef USE_COMPLEX
+
908 std::vector<double> d_forceAtomsFloatingKPoints;
+
909#endif
+
910
+
911
+
912
+
913 /// Gaussian generator constant. Gaussian generator: Gamma(r)=
+
914 /// exp(-d_gaussianConstant*r^2)
+
915 /// FIXME: Until the hanging nodes surface integral issue is fixed use a
+
916 /// value >=4.0
+
917 // double d_gaussianConstant;
+
918
+
919 /// Storage for configurational force on all global atoms.
+
920 std::vector<double> d_globalAtomsForces;
+
921
+
922 /// Storage for configurational stress tensor
+
923 dealii::Tensor<2, 3, double> d_stress;
+
924
+
925
+
926
+
927 /* Part of the stress tensor which is summed over k points.
+
928 * It is a temporary data structure required for stress evaluation
+
929 * (d_stress) when parallization over k points is on.
+
930 */
+
931 dealii::Tensor<2, 3, double> d_stressKPoints;
+
932
+
933 /* Dont use true except for debugging forces only without mesh movement, as
+
934 * gaussian ovelap on atoms for move mesh is by default set to false
+
935 */
+ +
937
+
938 /// pointer to dft class
+ +
940
+
941 /// Finite element object for configurational force computation. Linear
+
942 /// finite elements with three force field components are used.
+
943 dealii::FESystem<3> FEForce;
+
944
+
945 /* DofHandler on which we define the configurational force field. Each
+
946 * geometric fem node has three dofs corresponding the the three force
+
947 * components. The generator for the configurational force on the fem node
+
948 * is the linear shape function attached to it. This DofHandler is based on
+
949 * the same triangulation on which we solve the dft problem.
+
950 */
+
951 dealii::DoFHandler<3> d_dofHandlerForce;
+
952
+
953 /* DofHandler on which we define the configurational force field from
+
954 * electrostatic part (without psp). Each geometric fem node has three dofs
+
955 * corresponding the the three force components. The generator for the
+
956 * configurational force on the fem node is the linear shape function
+
957 * attached to it. This DofHandler is based on the same triangulation on
+
958 * which we solve the dft problem.
+
959 */
+
960 dealii::DoFHandler<3> d_dofHandlerForceElectro;
+
961
+
962 /// Index of the d_dofHandlerForce in the MatrixFree object stored in
+
963 /// dftClass. This is required to correctly use FEEvaluation class.
+ +
965
+
966 /// Index of the d_dofHandlerForceElectro in the MatrixFree object stored in
+
967 /// dftClass. This is required to correctly use FEEvaluation class.
+ +
969
+
970 /// dealii::IndexSet of locally owned dofs of in d_dofHandlerForce the
+
971 /// current processor
+ +
973
+
974 /// dealii::IndexSet of locally owned dofs of in d_dofHandlerForceElectro
+
975 /// the current processor
+ +
977
+
978 /// dealii::IndexSet of locally relevant dofs of in d_dofHandlerForce the
+
979 /// current processor
+ +
981
+
982 /// dealii::IndexSet of locally relevant dofs of in d_dofHandlerForceElectro
+
983 /// the current processor
+ +
985
+
986 /// Constraint matrix for hanging node and periodic constaints on
+
987 /// d_dofHandlerForce.
+
988 dealii::AffineConstraints<double> d_constraintsNoneForce;
+
989
+
990 /// Constraint matrix for hanging node and periodic constaints on
+
991 /// d_dofHandlerForceElectro.
+
992 dealii::AffineConstraints<double> d_constraintsNoneForceElectro;
+
993
+
994 /// Internal data: map < <atomId,force component>, globaldof in
+
995 /// d_dofHandlerForce>
+
996 std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+ +
998
+
999 /// Internal data: map < <atomId,force component>, globaldof in
+
1000 /// d_dofHandlerForceElectro>
+
1001 std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+ +
1003
+
1004 /// Internal data: stores cell iterators of all cells in
+
1005 /// dftPtr->d_dofHandler which are part of the vself ball. Outer vector is
+
1006 /// over vself bins.
+
1007 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
1009
+
1010 /// Internal data: stores cell iterators of all cells in d_dofHandlerForce
+
1011 /// which are part of the vself ball. Outer vector is over vself bins.
+
1012 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
1014
+
1015 /// Internal data: stores map of vself ball cell Id to the closest atom Id
+
1016 /// of that cell. Outer vector over vself bins.
+
1017 std::vector<std::map<dealii::CellId, unsigned int>>
+ +
1019
+
1020 /// Internal data: stores the map of atom Id (only in the local processor)
+
1021 /// to the vself bin Id.
+
1022 std::map<unsigned int, unsigned int> d_AtomIdBinIdLocalDofHandler;
+
1023
+
1024 /* Internal data: stores the face ids of dftPtr->d_dofHandler (single
+
1025 * component field) on which to evaluate the vself ball surface integral in
+
1026 * the configurational force expression. Outer vector is over the vself
+
1027 * bins. Inner map is between the cell iterator and the vector of face ids
+
1028 * to integrate on for that cell iterator.
+
1029 */
+
1030 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
1031 std::vector<unsigned int>>>
+ +
1033
+
1034 /* Internal data: stores the face ids of d_dofHandlerForce (three component
+
1035 * field) on which to evaluate the vself ball surface integral in the
+
1036 * configurational force expression. Outer vector is over the vself bins.
+
1037 * Inner map is between the cell iterator and the vector of face ids to
+
1038 * integrate on for that cell iterator.
+
1039 */
+
1040 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
1041 std::vector<unsigned int>>>
+ +
1043
+
1044 /// Internal data: stores cell iterators of all cells in
+
1045 /// dftPtr->d_dofHandler which are part of the vself ball. Outer vector is
+
1046 /// over vself bins.
+
1047 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
1049
+
1050 /// Internal data: stores cell iterators of all cells in d_dofHandlerForce
+
1051 /// which are part of the vself ball. Outer vector is over vself bins.
+
1052 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
1054
+
1055 /// Internal data: stores map of vself ball cell Id to the closest atom Id
+
1056 /// of that cell. Outer vector over vself bins.
+
1057 std::vector<std::map<dealii::CellId, unsigned int>>
+ +
1059
+
1060 /// Internal data: stores the map of atom Id (only in the local processor)
+
1061 /// to the vself bin Id.
+
1062 std::map<unsigned int, unsigned int> d_AtomIdBinIdLocalDofHandlerElectro;
+
1063
+
1064 /* Internal data: stores the face ids of dftPtr->d_dofHandler (single
+
1065 * component field) on which to evaluate the vself ball surface integral in
+
1066 * the configurational force expression. Outer vector is over the vself
+
1067 * bins. Inner map is between the cell iterator and the vector of face ids
+
1068 * to integrate on for that cell iterator.
+
1069 */
+
1070 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
1071 std::vector<unsigned int>>>
+ +
1073
+
1074 /* Internal data: stores the face ids of d_dofHandlerForce (three component
+
1075 * field) on which to evaluate the vself ball surface integral in the
+
1076 * configurational force expression. Outer vector is over the vself bins.
+
1077 * Inner map is between the cell iterator and the vector of face ids to
+
1078 * integrate on for that cell iterator.
+
1079 */
+
1080 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
1081 std::vector<unsigned int>>>
+ +
1083
+
1084 std::map<dealii::CellId, dealii::DoFHandler<3>::active_cell_iterator>
+ +
1086
+
1087 std::vector<distributedCPUVec<double>> d_gaussianWeightsVecAtoms;
+
1088
+
1089 /// map from cell id to set of non local atom ids (local numbering)
+
1090 // std::map<dealii::CellId,std::set<unsigned int>>
+
1091 // d_cellIdToNonlocalAtomIdsLocalCompactSupportMap;
+
1092
+
1093 /// domain decomposition mpi_communicator
+
1094 const MPI_Comm d_mpiCommParent;
+
1095
+
1096 /// domain decomposition mpi_communicator
+
1097 const MPI_Comm mpi_communicator;
+
1098
+ +
1100
+
1101 /// number of mpi processes in the current pool
+
1102 const unsigned int n_mpi_processes;
+
1103
+
1104 /// current mpi process id in the current pool
+
1105 const unsigned int this_mpi_process;
+
1106
+
1107 /// conditional stream object to enable printing only on root processor
+
1108 /// across all pools
+
1109 dealii::ConditionalOStream pcout;
+
1110 };
+
+
1111
+
1112} // namespace dftfe
+
1113#endif
+
This class is the primary interface location of all other parts of the DFT-FE code for all steps invo...
Definition dft.h:108
+
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:53
+
void printStress()
prints the currently stored configurational stress tensor.
+
dealii::Tensor< 2, 3, double > d_stressKPoints
Definition force.h:931
+
void FShadowLocalGammaAtomsElementalContributionElectrostatic(std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, 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 > > > &gradPhiRhoMinusApproxRhoElectroQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &rhoAtomsQuadsSeparate)
+
const MPI_Comm mpi_communicator
domain decomposition mpi_communicator
Definition force.h:1097
+
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 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)
+
distributedCPUVec< double > d_configForceVectorLinFE
Definition force.h:886
+
dftClass< FEOrder, FEOrderElectro > * dftPtr
pointer to dft class
Definition force.h:939
+
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 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 configForceLinFEInit(const dealii::MatrixFree< 3, double > &matrixFreeData, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro)
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForce
Definition force.h:1013
+
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_atomsForceDofs
Definition force.h:997
+
std::vector< std::map< dealii::CellId, unsigned int > > d_cellsVselfBallsClosestAtomIdDofHandlerElectro
Definition force.h:1058
+
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 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)
+
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerForceElectro
Definition force.h:1082
+
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 computeAtomsForcesGaussianGenerator(bool allowGaussianOverlapOnAtoms=false)
+
dealii::IndexSet d_locally_owned_dofsForceElectro
Definition force.h:976
+
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 std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)
+
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)
+
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerElectro
Definition force.h:1072
+
dealii::IndexSet d_locally_relevant_dofsForceElectro
Definition force.h:984
+
dealii::AffineConstraints< double > d_constraintsNoneForce
Definition force.h:988
+
const unsigned int n_mpi_processes
number of mpi processes in the current pool
Definition force.h:1102
+
void computeStressEself(const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int smearedChargeQuadratureId)
+
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)
+
const dftParameters & d_dftParams
Definition force.h:1099
+
std::vector< double > getAtomsForces()
returns a copy of the configurational force on all global atoms.
+
dealii::IndexSet d_locally_owned_dofsForce
Definition force.h:972
+
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_atomsForceDofsElectro
Definition force.h:1002
+
void computeConfigurationalForceTotalLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)
+
dealii::Tensor< 2, 3, double > d_stress
Storage for configurational stress tensor.
Definition force.h:923
+
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)
+
std::vector< distributedCPUVec< double > > d_gaussianWeightsVecAtoms
Definition force.h:1087
+
dealii::DoFHandler< 3 > d_dofHandlerForce
Definition force.h:951
+
unsigned int d_forceDofHandlerIndexElectro
Definition force.h:968
+
void FShadowLocalGammaAtomsElementalContributionElectronic(std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, 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 > > &derVxcWithRhoTimesRhoDiffQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoAtomsQuadsSeparate, const dealii::AlignedVector< dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > > &der2ExcWithGradRhoOutQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derVxcWithGradRhoOutQuads, const dealii::AlignedVector< dealii::VectorizedArray< double > > &shadowKSRhoMinMinusGradRhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &shadowKSGradRhoMinMinusGradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoAtomsQuadsSeparate, 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 isAtomicRhoSplitting=false, const bool isXCGGA=false, const bool isNLCC=false)
+
void computeStressEEshelbyEPSPEnlEk(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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)
+
dealii::ConditionalOStream pcout
Definition force.h:1109
+
const MPI_Comm d_mpiCommParent
map from cell id to set of non local atom ids (local numbering)
Definition force.h:1094
+
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 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 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 computeConfigurationalForcePhiExtLinFE()
+
dealii::FESystem< 3 > FEForce
Definition force.h:943
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandler
Definition force.h:1008
+
distributedCPUVec< double > d_configForceVectorLinFEElectro
Definition force.h:893
+
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 printAtomsForces()
prints the currently stored configurational forces on atoms and the Gaussian generator constant used ...
+
dealii::DoFHandler< 3 > d_dofHandlerForceElectro
Definition force.h:960
+
std::map< unsigned int, unsigned int > d_AtomIdBinIdLocalDofHandler
Definition force.h:1022
+
forceClass(dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
Constructor.
+
void initPseudoData()
initializes and precomputes pseudopotential related data structuers required for configurational forc...
+
void configForceLinFEFinalize()
+
void computeStressSpinPolarizedEEshelbyEPSPEnlEk(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::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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)
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForceElectro
Definition force.h:1053
+
void accumulateForceContributionGammaAtomsFloating(const std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, std::vector< double > &accumForcesVector)
+
void computeAtomsForces(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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, const std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)
computes the configurational force on all atoms corresponding to a Gaussian generator,...
+
void computeFloatingAtomsForces()
+
std::vector< double > d_globalAtomsForces
Storage for configurational force on all global atoms.
Definition force.h:920
+
const bool d_allowGaussianOverlapOnAtoms
Definition force.h:936
+
const unsigned int this_mpi_process
current mpi process id in the current pool
Definition force.h:1105
+
std::map< unsigned int, unsigned int > d_AtomIdBinIdLocalDofHandlerElectro
Definition force.h:1062
+
unsigned int d_forceDofHandlerIndex
Definition force.h:964
+
std::map< dealii::CellId, dealii::DoFHandler< 3 >::active_cell_iterator > d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro
Definition force.h:1085
+
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerForce
Definition force.h:1042
+
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandler
Definition force.h:1032
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerElectro
Definition force.h:1048
+
void computeElementalNonLocalPseudoOVDataForce()
+
void computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 std::map< dealii::CellId, std::vector< double > > &shadowKSRhoMinValues, const std::map< dealii::CellId, std::vector< double > > &shadowKSGradRhoMinValues, const distributedCPUVec< double > &phiRhoMinusApproxRho, const bool shadowPotentialForce=false)
+
std::vector< std::map< dealii::CellId, unsigned int > > d_cellsVselfBallsClosestAtomIdDofHandler
Definition force.h:1018
+
void distributeForceContributionFnlGammaAtoms(const std::map< unsigned int, std::vector< double > > &forceContributionFnlGammaAtoms)
+
dealii::IndexSet d_locally_relevant_dofsForce
Definition force.h:980
+
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 computeConfigurationalForceEselfLinFE(const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int smearedChargeQuadratureId)
+
dealii::Tensor< 2, 3, double > getStress()
returns a copy of the current stress tensor value.
+
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)
+
std::vector< double > d_forceAtomsFloating
Definition force.h:905
+
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 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)
+
dealii::AffineConstraints< double > d_constraintsNoneForceElectro
Definition force.h:992
+
void computeStress(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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 computeConfigurationalForceEselfNoSurfaceLinFE()
+
Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete ...
Definition kohnShamDFTOperator.h:44
+
Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete ...
Definition kohnShamDFTOperatorDevice.h:44
+
Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential....
Definition vselfBinsManager.h:38
+ + + + + + + +
Definition upfToxml.cc:37
+
constexpr unsigned int C_num1DQuad()
1d quadrature rule order
Definition constants.h:39
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+
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..30a7f5e98 --- /dev/null +++ b/force_wfc_contractions_8h.html @@ -0,0 +1,107 @@ + + + + + + + +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
+
+
+
#include "headers.h"
+#include "operator.h"
+#include "dftParameters.h"
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::force
 
+ + + +

+Functions

void dftfe::force::wfcContractionsForceKernelsAllH (operatorDFTClass &operatorMatrix, 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 *nonTrivialIdToElemIdMapH, const unsigned int *projecterKetTimesFlattenedVectorLocalIdsH, const unsigned int MLoc, const unsigned int N, const unsigned int numCells, const unsigned int numQuads, const unsigned int numQuadsNLP, const unsigned int numNodesPerElement, const unsigned int totalNonTrivialPseudoWfcs, 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/force_wfc_contractions_8h_source.html b/force_wfc_contractions_8h_source.html new file mode 100644 index 000000000..a0686c609 --- /dev/null +++ b/force_wfc_contractions_8h_source.html @@ -0,0 +1,163 @@ + + + + + + + +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 "operator.h"
+
23#include "dftParameters.h"
+
24
+
25namespace dftfe
+
26{
+
+
27 namespace force
+
28 {
+
29 void
+ +
31 operatorDFTClass & operatorMatrix,
+
32 const dataTypes::number * X,
+
33 const unsigned int spinPolarizedFlag,
+
34 const unsigned int spinIndex,
+
35 const std::vector<std::vector<double>> &eigenValuesH,
+
36 const std::vector<std::vector<double>> &partialOccupanciesH,
+
37 const std::vector<double> & kPointCoordinates,
+
38 const unsigned int * nonTrivialIdToElemIdMapH,
+
39 const unsigned int *projecterKetTimesFlattenedVectorLocalIdsH,
+
40 const unsigned int MLoc,
+
41 const unsigned int N,
+
42 const unsigned int numCells,
+
43 const unsigned int numQuads,
+
44 const unsigned int numQuadsNLP,
+
45 const unsigned int numNodesPerElement,
+
46 const unsigned int totalNonTrivialPseudoWfcs,
+
47 double * eshelbyTensorQuadValuesH,
+ +
49 projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattenedH,
+
50#ifdef USE_COMPLEX
+ +
52 *projectorKetTimesPsiTimesVTimesPartOccContractionPsiQuadsFlattenedH,
+
53#endif
+
54 const MPI_Comm & mpiCommParent,
+
55 const MPI_Comm & interBandGroupComm,
+
56 const bool isPsp,
+
57 const bool isFloatingChargeForces,
+
58 const bool addEk,
+
59 const dftParameters &dftParams);
+
60 } // namespace force
+
+
61} // namespace dftfe
+
62#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:39
+ + +
double number
Definition dftfeDataTypes.h:44
+
void wfcContractionsForceKernelsAllH(operatorDFTClass &operatorMatrix, 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 *nonTrivialIdToElemIdMapH, const unsigned int *projecterKetTimesFlattenedVectorLocalIdsH, const unsigned int MLoc, const unsigned int N, const unsigned int numCells, const unsigned int numQuads, const unsigned int numQuadsNLP, const unsigned int numNodesPerElement, const unsigned int totalNonTrivialPseudoWfcs, 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 upfToxml.cc:37
+ +
+ + + + diff --git a/force_wfc_contractions_device_8h.html b/force_wfc_contractions_device_8h.html new file mode 100644 index 000000000..cf701a60f --- /dev/null +++ b/force_wfc_contractions_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: workspace/include/forceWfcContractionsDevice.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
forceWfcContractionsDevice.h File Reference
+
+ + + + + diff --git a/force_wfc_contractions_device_8h_source.html b/force_wfc_contractions_device_8h_source.html new file mode 100644 index 000000000..607c4a895 --- /dev/null +++ b/force_wfc_contractions_device_8h_source.html @@ -0,0 +1,169 @@ + + + + + + + +DFT-FE: workspace/include/forceWfcContractionsDevice.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
forceWfcContractionsDevice.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 forceWfcContractionsDevice_H_
+
20# define forceWfcContractionsDevice_H_
+
21
+
22# include "headers.h"
+
23# include "operatorDevice.h"
+
24# include "dftParameters.h"
+
25# include "FEBasisOperations.h"
+
26
+
27namespace dftfe
+
28{
+
29 namespace forceDevice
+
30 {
+
31 void
+ +
33 std::shared_ptr<
+
34 dftfe::basis::FEBasisOperations<dataTypes::number,
+
35 double,
+ +
37 & basisOperationsPtr,
+
38 operatorDFTDeviceClass & operatorMatrix,
+
39 const dataTypes::number * X,
+
40 const unsigned int spinPolarizedFlag,
+
41 const unsigned int spinIndex,
+
42 const std::vector<std::vector<double>> &eigenValuesH,
+
43 const std::vector<std::vector<double>> &partialOccupanciesH,
+
44 const std::vector<double> & kPointCoordinates,
+
45 const unsigned int * nonTrivialIdToElemIdMapH,
+
46 const unsigned int *projecterKetTimesFlattenedVectorLocalIdsH,
+
47 const unsigned int MLoc,
+
48 const unsigned int N,
+
49 const unsigned int numCells,
+
50 const unsigned int numQuads,
+
51 const unsigned int numQuadsNLP,
+
52 const unsigned int numNodesPerElement,
+
53 const unsigned int totalNonTrivialPseudoWfcs,
+
54 double * eshelbyTensorQuadValuesH,
+
55 dataTypes::number *
+
56 projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattenedH,
+
57# ifdef USE_COMPLEX
+
58 dataTypes::number
+
59 *projectorKetTimesPsiTimesVTimesPartOccContractionPsiQuadsFlattenedH,
+
60# endif
+
61 const MPI_Comm & mpiCommParent,
+
62 const MPI_Comm & interBandGroupComm,
+
63 const bool isPsp,
+
64 const bool isFloatingChargeForces,
+
65 const bool addEk,
+
66 const dftParameters &dftParams);
+
67 } // namespace forceDevice
+
68} // namespace dftfe
+
69# endif
+
70#endif
+ +
Definition FEBasisOperations.h:449
+ + +
void wfcContractionsForceKernelsAllH(operatorDFTClass &operatorMatrix, 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 *nonTrivialIdToElemIdMapH, const unsigned int *projecterKetTimesFlattenedVectorLocalIdsH, const unsigned int MLoc, const unsigned int N, const unsigned int numCells, const unsigned int numQuads, const unsigned int numQuadsNLP, const unsigned int numNodesPerElement, const unsigned int totalNonTrivialPseudoWfcs, 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 upfToxml.cc:37
+ +
+ + + + diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..f6d5f8478 --- /dev/null +++ b/functions.html @@ -0,0 +1,127 @@ + + + + + + + +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..5d15d5c36 --- /dev/null +++ b/functions_b.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_c.html b/functions_c.html new file mode 100644 index 000000000..69ee7e697 --- /dev/null +++ b/functions_c.html @@ -0,0 +1,244 @@ + + + + + + + +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..e1fcf7f9b --- /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..62f264b32 --- /dev/null +++ b/functions_e.html @@ -0,0 +1,106 @@ + + + + + + + +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..fa9542c58 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,83 @@ + + + + + + + +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..bddcd003d --- /dev/null +++ b/functions_eval.html @@ -0,0 +1,88 @@ + + + + + + + +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..8d8cf2c78 --- /dev/null +++ b/functions_f.html @@ -0,0 +1,117 @@ + + + + + + + +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..b842ccd8a --- /dev/null +++ b/functions_func.html @@ -0,0 +1,108 @@ + + + + + + + +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..5a12e9eb3 --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,85 @@ + + + + + + + +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..0d274e1b6 --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,217 @@ + + + + + + + +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..4fcf295d2 --- /dev/null +++ b/functions_func_d.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:
+ +

- d -

+
+ + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 000000000..93ea16bcf --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,101 @@ + + + + + + + +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..b2801b80d --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,101 @@ + + + + + + + +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..2cdd8ec91 --- /dev/null +++ b/functions_func_g.html @@ -0,0 +1,224 @@ + + + + + + + +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..91109ea7d --- /dev/null +++ b/functions_func_h.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:
+ +

- h -

+
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 000000000..8308753fe --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,135 @@ + + + + + + + +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..23049b8e7 --- /dev/null +++ b/functions_func_j.html @@ -0,0 +1,85 @@ + + + + + + + +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_k.html b/functions_func_k.html new file mode 100644 index 000000000..b9c3616fc --- /dev/null +++ b/functions_func_k.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
+
+
+
+
+ +
+
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..76188e6de --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,110 @@ + + + + + + + +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..35af52979 --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,115 @@ + + + + + + + +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..1f8660737 --- /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..91fa7d5ec --- /dev/null +++ b/functions_func_o.html @@ -0,0 +1,92 @@ + + + + + + + +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..1421c2cb0 --- /dev/null +++ b/functions_func_p.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:
+ +

- p -

+
+ + + + diff --git a/functions_func_q.html b/functions_func_q.html new file mode 100644 index 000000000..97f463b71 --- /dev/null +++ b/functions_func_q.html @@ -0,0 +1,84 @@ + + + + + + + +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..bf5f75d6f --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,107 @@ + + + + + + + +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..8a0217316 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,122 @@ + + + + + + + +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..8e76b9552 --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,91 @@ + + + + + + + +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..7d82e7100 --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,97 @@ + + + + + + + +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_v.html b/functions_func_v.html new file mode 100644 index 000000000..20c482dcb --- /dev/null +++ b/functions_func_v.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
+
+
+
+
+ + + + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 000000000..0f2da87da --- /dev/null +++ b/functions_func_w.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:
+ +

- w -

+
+ + + + diff --git a/functions_func_x.html b/functions_func_x.html new file mode 100644 index 000000000..a3afc30e6 --- /dev/null +++ b/functions_func_x.html @@ -0,0 +1,86 @@ + + + + + + + +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:
+ +

- x -

+
+ + + + diff --git a/functions_func_z.html b/functions_func_z.html new file mode 100644 index 000000000..9a8119f6e --- /dev/null +++ b/functions_func_z.html @@ -0,0 +1,91 @@ + + + + + + + +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..2f9ea7c20 --- /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..3de24ca21 --- /dev/null +++ b/functions_g.html @@ -0,0 +1,238 @@ + + + + + + + +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..a593a61c7 --- /dev/null +++ b/functions_h.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_i.html b/functions_i.html new file mode 100644 index 000000000..6ae032e52 --- /dev/null +++ b/functions_i.html @@ -0,0 +1,149 @@ + + + + + + + +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..7ba8fb875 --- /dev/null +++ b/functions_j.html @@ -0,0 +1,85 @@ + + + + + + + +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..9468e7135 --- /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..077cdfb8d --- /dev/null +++ b/functions_l.html @@ -0,0 +1,127 @@ + + + + + + + +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..f3cfe38eb --- /dev/null +++ b/functions_m.html @@ -0,0 +1,159 @@ + + + + + + + +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..cb776c648 --- /dev/null +++ b/functions_n.html @@ -0,0 +1,135 @@ + + + + + + + +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..5b8941f68 --- /dev/null +++ b/functions_o.html @@ -0,0 +1,104 @@ + + + + + + + +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:
+ +

- o -

+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 000000000..b065debd4 --- /dev/null +++ b/functions_p.html @@ -0,0 +1,117 @@ + + + + + + + +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..731383ed3 --- /dev/null +++ b/functions_q.html @@ -0,0 +1,84 @@ + + + + + + + +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..b5fb4efe6 --- /dev/null +++ b/functions_r.html @@ -0,0 +1,138 @@ + + + + + + + +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..ea869173d --- /dev/null +++ b/functions_rela.html @@ -0,0 +1,86 @@ + + + + + + + +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..fb53d48e7 --- /dev/null +++ b/functions_s.html @@ -0,0 +1,156 @@ + + + + + + + +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..904e4fa90 --- /dev/null +++ b/functions_t.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:
+ +

- t -

+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..3c3f9189e --- /dev/null +++ b/functions_type.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Class Members - Typedefs + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 000000000..17aecdcc9 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,115 @@ + + + + + + + +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..6586332cb --- /dev/null +++ b/functions_v.html @@ -0,0 +1,91 @@ + + + + + + + +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..e884128cd --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,102 @@ + + + + + + + +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..21705f099 --- /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..57de66382 --- /dev/null +++ b/functions_vars_c.html @@ -0,0 +1,106 @@ + + + + + + + +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..356592461 --- /dev/null +++ b/functions_vars_d.html @@ -0,0 +1,770 @@ + + + + + + + +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..fae82730b --- /dev/null +++ b/functions_vars_e.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:
+ +

- e -

+
+ + + + diff --git a/functions_vars_f.html b/functions_vars_f.html new file mode 100644 index 000000000..a8dcbfe74 --- /dev/null +++ b/functions_vars_f.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:
+ +

- f -

+
+ + + + diff --git a/functions_vars_g.html b/functions_vars_g.html new file mode 100644 index 000000000..ec1b1b7b4 --- /dev/null +++ b/functions_vars_g.html @@ -0,0 +1,95 @@ + + + + + + + +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..6a90956c1 --- /dev/null +++ b/functions_vars_h.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:
+ +

- h -

+
+ + + + diff --git a/functions_vars_i.html b/functions_vars_i.html new file mode 100644 index 000000000..1e8cf57c8 --- /dev/null +++ b/functions_vars_i.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
+
+
+
+
+ + + + + + diff --git a/functions_vars_k.html b/functions_vars_k.html new file mode 100644 index 000000000..f3363790d --- /dev/null +++ b/functions_vars_k.html @@ -0,0 +1,90 @@ + + + + + + + +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..d9971f4b8 --- /dev/null +++ b/functions_vars_l.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
+
+
+
+
+ +
+
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..83ce03e05 --- /dev/null +++ b/functions_vars_m.html @@ -0,0 +1,127 @@ + + + + + + + +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..d6e6aeb90 --- /dev/null +++ b/functions_vars_n.html @@ -0,0 +1,114 @@ + + + + + + + +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..b6b91c67a --- /dev/null +++ b/functions_vars_o.html @@ -0,0 +1,95 @@ + + + + + + + +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..b150ca332 --- /dev/null +++ b/functions_vars_p.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
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- p -

+
+ + + + diff --git a/functions_vars_r.html b/functions_vars_r.html new file mode 100644 index 000000000..530fea72d --- /dev/null +++ b/functions_vars_r.html @@ -0,0 +1,111 @@ + + + + + + + +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..4dad65344 --- /dev/null +++ b/functions_vars_s.html @@ -0,0 +1,112 @@ + + + + + + + +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..4d8190dd2 --- /dev/null +++ b/functions_vars_t.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
+
+
+
+
+ +
+
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..e17b32d63 --- /dev/null +++ b/functions_vars_u.html @@ -0,0 +1,101 @@ + + + + + + + +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..657ac6ecf --- /dev/null +++ b/functions_vars_v.html @@ -0,0 +1,86 @@ + + + + + + + +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..4a110270b --- /dev/null +++ b/functions_vars_w.html @@ -0,0 +1,95 @@ + + + + + + + +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..838f63495 --- /dev/null +++ b/functions_vars_x.html @@ -0,0 +1,86 @@ + + + + + + + +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..a76a89cad --- /dev/null +++ b/functions_vars_z.html @@ -0,0 +1,85 @@ + + + + + + + +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..baa270f70 --- /dev/null +++ b/functions_w.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
+
+
+
+
+ +
+
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..74564ed90 --- /dev/null +++ b/functions_x.html @@ -0,0 +1,89 @@ + + + + + + + +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:
+ +

- x -

+
+ + + + diff --git a/functions_z.html b/functions_z.html new file mode 100644 index 000000000..afa08f610 --- /dev/null +++ b/functions_z.html @@ -0,0 +1,92 @@ + + + + + + + +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..0a77739c0 --- /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..cb3a9c953 --- /dev/null +++ b/geo_opt_cell_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..6bc82f258 --- /dev/null +++ b/geo_opt_cell_8h_source.html @@ -0,0 +1,298 @@ + + + + + + + +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 */
+ +
41 const MPI_Comm &mpi_comm_parent,
+
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
+
156 const MPI_Comm mpi_communicator;
+
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
+ + + +
Definition upfToxml.cc:37
+ + +
+ + + + diff --git a/geo_opt_ion_8h.html b/geo_opt_ion_8h.html new file mode 100644 index 000000000..3ddad0032 --- /dev/null +++ b/geo_opt_ion_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..1a1c6485d --- /dev/null +++ b/geo_opt_ion_8h_source.html @@ -0,0 +1,289 @@ + + + + + + + +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 */
+ +
42 const MPI_Comm &mpi_comm_parent,
+
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
+
148 const MPI_Comm mpi_communicator;
+
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
+ + + +
Definition upfToxml.cc:37
+ + +
+ + + + diff --git a/geometry_optimization_class_8h.html b/geometry_optimization_class_8h.html new file mode 100644 index 000000000..bd214a6a9 --- /dev/null +++ b/geometry_optimization_class_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..710d1b0e0 --- /dev/null +++ b/geometry_optimization_class_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +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 */
+
41 geometryOptimizationClass(const std::string parameter_file,
+
42 const std::string restartFilesPath,
+
43 const MPI_Comm & mpi_comm_parent,
+
44 const bool restart,
+
45 const int verbosity);
+
46
+
47
+
48 void
+
49 init(const std::string parameter_file);
+
50
+
51 /**
+
52 * @brief runOpt:
+
53 *
+
54 *
+
55 */
+
56 void
+ +
58
+
59 private:
+
60 // pointers to dft class and optimization classes
+
61 std::unique_ptr<dftfeWrapper> d_dftfeWrapper;
+
62 std::unique_ptr<geoOptIon> d_geoOptIonPtr;
+
63 std::unique_ptr<geoOptCell> d_geoOptCellPtr;
+ +
65
+
66 // restart parameters
+
67 const bool d_isRestart;
+
68 const std::string d_restartFilesPath;
+
69 const int d_verbosity;
+
70 // status parameters
+ +
72 // parallel communication objects
+
73 const MPI_Comm d_mpiCommParent;
+
74
+
75 // conditional stream object
+
76 dealii::ConditionalOStream pcout;
+
77 };
+
+
78} // namespace dftfe
+
79#endif
+
abstract base class for dft
Definition dftBase.h:34
+
Definition geometryOptimizationClass.h:32
+
const MPI_Comm d_mpiCommParent
Definition geometryOptimizationClass.h:73
+
void init(const std::string parameter_file)
+ +
std::unique_ptr< dftfeWrapper > d_dftfeWrapper
Definition geometryOptimizationClass.h:61
+
int d_cycle
Definition geometryOptimizationClass.h:71
+
const bool d_isRestart
Definition geometryOptimizationClass.h:67
+
const int d_verbosity
Definition geometryOptimizationClass.h:69
+
const std::string d_restartFilesPath
Definition geometryOptimizationClass.h:68
+
std::unique_ptr< geoOptCell > d_geoOptCellPtr
Definition geometryOptimizationClass.h:63
+
int d_status
Definition geometryOptimizationClass.h:71
+
dealii::ConditionalOStream pcout
Definition geometryOptimizationClass.h:76
+
geometryOptimizationClass(const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity)
geometryOptimizationClass constructor: copy data from dftparameters to the memebrs of molecularDynami...
+
int d_optMode
Definition geometryOptimizationClass.h:71
+
std::unique_ptr< geoOptIon > d_geoOptIonPtr
Definition geometryOptimizationClass.h:62
+
dftBase * d_dftPtr
Definition geometryOptimizationClass.h:64
+ + + + + + +
Definition upfToxml.cc:37
+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 000000000..a49b0feb9 --- /dev/null +++ b/globals.html @@ -0,0 +1,88 @@ + + + + + + + +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..2ff2830f9 --- /dev/null +++ b/globals_defs.html @@ -0,0 +1,88 @@ + + + + + + + +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..0bbe48aa5 --- /dev/null +++ b/headers_8h.html @@ -0,0 +1,106 @@ + + + + + + + +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 = dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host >
 
template<typename NumberType >
using dftfe::distributedCPUMultiVec = dftfe::linearAlgebra::MultiVector< NumberType, dftfe::utils::MemorySpace::HOST >
 
+
+ + + + diff --git a/headers_8h_source.html b/headers_8h_source.html new file mode 100644 index 000000000..cd50c4f75 --- /dev/null +++ b/headers_8h_source.html @@ -0,0 +1,212 @@ + + + + + + + +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>
+
108 using distributedDeviceVec =
+ + +
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
+ + + +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..68903b69a --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,169 @@ + + + + + + + +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 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cdftfe::basis::FEBasisOperationsBase< 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 >Computes configurational forces in KSDFT
 Cdftfe::geometryOptimizationClass
 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::operatorDFTClassBase class for building the DFT operator and the action of operator on a vector
 Cdftfe::ProcessGrid
 Cdftfe::pseudoUtils::Element
 Cdftfe::pseudoUtils::PeriodicTable
 Cdftfe::pseudoUtils::xmlTodftfeParserConverts pseudopotential file from xml format to dftfe format
 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 >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::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::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
 Cdftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE >
 Cdftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST >
 Cdftfe::utils::MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE >
 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::DEVICE >
 Cdftfe::utils::MemoryStorage< double, memorySpace >
 Cdftfe::utils::MemoryStorage< float, memorySpace >
 Cdftfe::utils::MemoryStorage< int, dftfe::utils::MemorySpace::DEVICE >
 Cdftfe::utils::MemoryStorage< size_type, memorySpace >
 Cdftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE >
 Cdftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace >
 Cdftfe::linearAlgebra::MultiVector< double >
 CoperatorDFTDeviceClass
 Cdftfe::utils::OptimizedIndexSet< global_size_type >
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 000000000..72966d4bf --- /dev/null +++ b/index.html @@ -0,0 +1,138 @@ + + + + + + + +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..106142b31 --- /dev/null +++ b/kerker_solver_problem_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..6ee8f5f6f --- /dev/null +++ b/kerker_solver_problem_8h_source.html @@ -0,0 +1,318 @@ + + + + + + + +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
+
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
+
38 kerkerSolverProblem(const MPI_Comm &mpi_comm_parent,
+
39 const MPI_Comm &mpi_comm_domain);
+
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 init(dealii::MatrixFree<3, double> & matrixFreeData,
+
52 dealii::AffineConstraints<double> &constraintMatrix,
+ +
54 double kerkerMixingParameter,
+
55 const unsigned int matrixFreeVectorComponent,
+
56 const unsigned int matrixFreeQuadratureComponent);
+
57
+
58
+
59
+
60 /**
+
61 * @brief reinitialize data structures .
+
62 *
+
63 * @param x vector to store initial guess and solution
+
64 * @param gradResidualValues stores the gradient of difference of input electron-density and output electron-density
+
65 * @param kerkerMixingParameter used in Kerker mixing scheme which usually represents Thomas Fermi wavevector (k_{TF}**2).
+
66 *
+
67 */
+
68 void
+ + +
71 const std::map<dealii::CellId, std::vector<double>> &gradResidualValues);
+
72
+
73
+
74 /**
+
75 * @brief get the reference to x field
+
76 *
+
77 * @return reference to x field. Assumes x field data structure is already initialized
+
78 */
+ + +
81
+
82 /**
+
83 * @brief Compute A matrix multipled by x.
+
84 *
+
85 */
+
86 void
+ +
88
+
89 /**
+
90 * @brief Compute right hand side vector for the problem Ax = rhs.
+
91 *
+
92 * @param rhs vector for the right hand side values
+
93 */
+
94 void
+ +
96
+
97 /**
+
98 * @brief Jacobi preconditioning.
+
99 *
+
100 */
+
101 void
+ +
103 const distributedCPUVec<double> &src,
+
104 const double omega) const;
+
105
+
106 /**
+
107 * @brief distribute x to the constrained nodes.
+
108 *
+
109 */
+
110 void
+ +
112
+
113
+
114 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
115 /// preconditioning
+
116 void
+
+
117 subscribe(std::atomic<bool> *const validity,
+
118 const std::string & identifier = "") const {};
+
+
119
+
120 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
121 /// preconditioning
+
122 void
+
+
123 unsubscribe(std::atomic<bool> *const validity,
+
124 const std::string & identifier = "") const {};
+
+
125
+
126 /// function needed by dealii to mimic SparseMatrix
+
127 bool
+
+
128 operator!=(double val) const
+
129 {
+
130 return true;
+
131 };
+
+
132
+
133 private:
+
134 /**
+
135 * @brief required for the cell_loop operation in dealii's MatrixFree class
+
136 *
+
137 */
+
138 void
+
139 AX(const dealii::MatrixFree<3, double> & matrixFreeData,
+ +
141 const distributedCPUVec<double> & src,
+
142 const std::pair<unsigned int, unsigned int> &cell_range) const;
+
143
+
144
+
145 /**
+
146 * @brief Compute the diagonal of A.
+
147 *
+
148 */
+
149 void
+ +
151
+
152
+
153 /// storage for diagonal of the A matrix
+ +
155
+
156
+
157 /// pointer to the x vector being solved for
+ +
159
+
160 // kerker mixing constant
+
161 double d_gamma;
+
162
+
163 /// matrix free index required to access the DofHandler and
+
164 /// dealii::AffineConstraints<double> objects corresponding to the problem
+ +
166
+
167 /// matrix free quadrature index
+ +
169
+
170
+
171 /// pointer to electron density cell and grad residual data
+
172 const std::map<dealii::CellId, std::vector<double>>
+ +
174 const dealii::DoFHandler<3> * d_dofHandlerPRefinedPtr;
+
175 const dealii::AffineConstraints<double> *d_constraintMatrixPRefinedPtr;
+
176 const dealii::MatrixFree<3, double> * d_matrixFreeDataPRefinedPtr;
+
177
+
178 const MPI_Comm d_mpiCommParent;
+
179 const MPI_Comm mpi_communicator;
+
180 const unsigned int n_mpi_processes;
+
181 const unsigned int this_mpi_process;
+
182 dealii::ConditionalOStream pcout;
+
183 };
+
+
184
+
185} // namespace dftfe
+
186#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:179
+
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:158
+
void reinit(distributedCPUVec< double > &x, const std::map< dealii::CellId, std::vector< double > > &gradResidualValues)
reinitialize data structures .
+
void distributeX()
distribute x to the constrained nodes.
+
dealii::ConditionalOStream pcout
Definition kerkerSolverProblem.h:182
+
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
+
const std::map< dealii::CellId, std::vector< double > > * d_quadGradResidualValuesPtr
pointer to electron density cell and grad residual data
Definition kerkerSolverProblem.h:173
+
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:117
+
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:180
+
void init(dealii::MatrixFree< 3, double > &matrixFreeData, dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &x, double kerkerMixingParameter, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponent)
initialize the matrix-free data structures
+
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPRefinedPtr
Definition kerkerSolverProblem.h:176
+
bool operator!=(double val) const
function needed by dealii to mimic SparseMatrix
Definition kerkerSolverProblem.h:128
+
unsigned int d_matrixFreeQuadratureComponent
matrix free quadrature index
Definition kerkerSolverProblem.h:168
+
const unsigned int this_mpi_process
Definition kerkerSolverProblem.h:181
+
distributedCPUVec< double > d_diagonalA
storage for diagonal of the A matrix
Definition kerkerSolverProblem.h:154
+
double d_gamma
Definition kerkerSolverProblem.h:161
+
const dealii::DoFHandler< 3 > * d_dofHandlerPRefinedPtr
Definition kerkerSolverProblem.h:174
+
void computeRhs(distributedCPUVec< double > &rhs)
Compute right hand side vector for the problem Ax = rhs.
+
const dealii::AffineConstraints< double > * d_constraintMatrixPRefinedPtr
Definition kerkerSolverProblem.h:175
+
unsigned int d_matrixFreeVectorComponent
Definition kerkerSolverProblem.h:165
+
void unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
Definition kerkerSolverProblem.h:123
+
const MPI_Comm d_mpiCommParent
Definition kerkerSolverProblem.h:178
+ +
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+ +
+ + + + diff --git a/kerker_solver_problem_device_8h.html b/kerker_solver_problem_device_8h.html new file mode 100644 index 000000000..c651f7efb --- /dev/null +++ b/kerker_solver_problem_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..a80495884 --- /dev/null +++ b/kerker_solver_problem_device_8h_source.html @@ -0,0 +1,335 @@ + + + + + + + +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
+
32
+
33namespace dftfe
+
34{
+
35 /**
+
36 * @brief helmholtz solver problem class template. template parameter FEOrderElectro
+
37 * is the finite element polynomial order for electrostatics
+
38 *
+
39 * @author Gourab Panigrahi
+
40 */
+
41 template <unsigned int FEOrderElectro>
+
42 class kerkerSolverProblemDevice : public linearSolverProblemDevice
+
43 {
+
44 public:
+
45 /// Constructor
+
46 kerkerSolverProblemDevice(const MPI_Comm &mpi_comm_parent,
+
47 const MPI_Comm &mpi_comm_domain);
+
48
+
49
+
50 /**
+
51 * @brief initialize the matrix-free data structures
+
52 *
+
53 * @param matrixFreeData structure to hold quadrature rule, constraints vector and appropriate dofHandler
+
54 * @param constraintMatrix to hold constraints in the given problem
+
55 * @param x vector to be initialized using matrix-free object
+
56 *
+
57 */
+
58 void init(dealii::MatrixFree<3, double> & matrixFreeData,
+
59 dealii::AffineConstraints<double> &constraintMatrix,
+
60 distributedCPUVec<double> & x,
+
61 double kerkerMixingParameter,
+
62 const unsigned int matrixFreeVectorComponent,
+
63 const unsigned int matrixFreeQuadratureComponent);
+
64
+
65
+
66 /**
+
67 * @brief reinitialize data structures .
+
68 *
+
69 * @param x vector to store initial guess and solution
+
70 * @param gradResidualValues stores the gradient of difference of input electron-density and output electron-density
+
71 * @param kerkerMixingParameter used in Kerker mixing scheme which usually represents Thomas Fermi wavevector (k_{TF}**2).
+
72 *
+
73 */
+
74 void
+
75 reinit(
+
76 distributedCPUVec<double> & x,
+
77 const std::map<dealii::CellId, std::vector<double>> &gradResidualValues);
+
78
+
79
+
80 /**
+
81 * @brief get the reference to x field
+
82 *
+
83 * @return reference to x field. Assumes x field data structure is already initialized
+
84 */
+
85 distributedDeviceVec<double> &
+
86 getX();
+
87
+
88
+
89 /**
+
90 * @brief get the reference to Preconditioner
+
91 *
+
92 * @return reference to Preconditioner
+
93 */
+
94 distributedDeviceVec<double> &
+
95 getPreconditioner();
+
96
+
97
+
98 /**
+
99 * @brief Compute A matrix multipled by x.
+
100 *
+
101 */
+
102 void
+
103 computeAX(distributedDeviceVec<double> &Ax,
+
104 distributedDeviceVec<double> &x);
+
105
+
106
+
107 void
+
108 setX();
+
109
+
110
+
111 /**
+
112 * @brief Compute right hand side vector for the problem Ax = rhs.
+
113 *
+
114 * @param rhs vector for the right hand side values
+
115 */
+
116 void
+
117 computeRhs(distributedCPUVec<double> &rhs);
+
118
+
119
+
120 /**
+
121 * @brief distribute x to the constrained nodes.
+
122 *
+
123 */
+
124 void
+
125 distributeX();
+
126
+
127
+
128 /**
+
129 * @brief Copies x from Device to Host
+
130 *
+
131 */
+
132 void
+
133 copyXfromDeviceToHost();
+
134
+
135
+
136 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
137 /// preconditioning
+
138 void
+
139 subscribe(std::atomic<bool> *const validity,
+
140 const std::string & identifier = "") const {};
+
141
+
142
+
143 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
144 /// preconditioning
+
145 void
+
146 unsubscribe(std::atomic<bool> *const validity,
+
147 const std::string & identifier = "") const {};
+
148
+
149
+
150 /// function needed by dealii to mimic SparseMatrix
+
151 bool
+
152 operator!=(double val) const
+
153 {
+
154 return true;
+
155 };
+
156
+
157
+
158 private:
+
159 /**
+
160 * @brief Sets up the matrixfree shapefunction, gradient, jacobian and map for matrixfree computeAX
+
161 *
+
162 */
+
163 void
+
164 setupMatrixFree();
+
165
+
166 /**
+
167 * @brief Sets up the constraints matrix
+
168 *
+
169 */
+
170 void
+
171 setupconstraints();
+
172
+
173 /**
+
174 * @brief Compute the diagonal of A.
+
175 *
+
176 */
+
177 void
+
178 computeDiagonalA();
+
179
+
180
+
181 /// storage for diagonal of the A matrix
+
182 distributedCPUVec<double> d_diagonalA;
+
183 distributedDeviceVec<double> d_diagonalAdevice;
+
184
+
185 /// pointer to the x vector being solved for
+
186 distributedCPUVec<double> *d_xPtr;
+
187
+
188 /// Device x vector being solved for
+
189 distributedDeviceVec<double> d_xDevice;
+
190
+
191 // number of cells local to each mpi task, number of degrees of freedom
+
192 // locally owned and total degrees of freedom including ghost
+
193 int d_nLocalCells, d_xLocalDof, d_xLen;
+
194
+
195 // kerker mixing constant
+
196 double d_gamma;
+
197
+
198 // shape function value, gradient, jacobian and map for matrixfree
+ +
200 d_shapeFunction, d_jacobianFactor;
+ +
202
+
203 // Pointers to shape function value, gradient, jacobian and map for
+
204 // matrixfree
+
205 double *d_shapeFunctionPtr;
+
206 double *d_jacobianFactorPtr;
+
207 int * d_mapPtr;
+
208
+
209 // constraints
+
210 dftUtils::constraintMatrixInfoDevice d_constraintsTotalPotentialInfo;
+
211
+
212 /// matrix free index required to access the DofHandler and
+
213 /// dealii::AffineConstraints<double> objects corresponding to the problem
+
214 unsigned int d_matrixFreeVectorComponent;
+
215
+
216 /// matrix free quadrature index
+
217 unsigned int d_matrixFreeQuadratureComponent;
+
218
+
219
+
220 /// pointer to electron density cell and grad residual data
+
221 const std::map<dealii::CellId, std::vector<double>>
+
222 * d_quadGradResidualValuesPtr;
+
223 const dealii::DoFHandler<3> * d_dofHandlerPRefinedPtr;
+
224 const dealii::AffineConstraints<double> *d_constraintMatrixPRefinedPtr;
+
225 const dealii::MatrixFree<3, double> * d_matrixFreeDataPRefinedPtr;
+
226
+
227 const MPI_Comm d_mpiCommParent;
+
228 const MPI_Comm mpi_communicator;
+
229 const unsigned int n_mpi_processes;
+
230 const unsigned int this_mpi_process;
+
231 dealii::ConditionalOStream pcout;
+
232 };
+
233
+
234} // namespace dftfe
+
235# endif // kerkerSolverProblemDevice_H_
+
236#endif
+ +
Definition MemoryStorage.h:33
+ + + + +
Definition upfToxml.cc:37
+ +
+ + + + diff --git a/kohn_sham_d_f_t_operator_8h.html b/kohn_sham_d_f_t_operator_8h.html new file mode 100644 index 000000000..ada9cd5b3 --- /dev/null +++ b/kohn_sham_d_f_t_operator_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/kohnShamDFTOperator.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
kohnShamDFTOperator.h File Reference
+
+
+
#include <constants.h>
+#include <constraintMatrixInfo.h>
+#include <headers.h>
+#include <operator.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >
 Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/kohn_sham_d_f_t_operator_8h_source.html b/kohn_sham_d_f_t_operator_8h_source.html new file mode 100644 index 000000000..8ab0b50a5 --- /dev/null +++ b/kohn_sham_d_f_t_operator_8h_source.html @@ -0,0 +1,812 @@ + + + + + + + +DFT-FE: workspace/include/kohnShamDFTOperator.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
kohnShamDFTOperator.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 kohnShamDFTOperatorClass_H_
+
20#define kohnShamDFTOperatorClass_H_
+
21#include <constants.h>
+ +
23#include <headers.h>
+
24#include <operator.h>
+
25
+
26namespace dftfe
+
27{
+
28#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
29 template <unsigned int T1, unsigned int T2>
+
30 class dftClass;
+
31#endif
+
32
+
33 /**
+
34 * @brief Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors
+
35 *
+
36 * @author Phani Motamarri, Sambit Das
+
37 */
+
38
+
39 //
+
40 // Define kohnShamDFTOperatorClass class
+
41 //
+
42 template <unsigned int FEOrder, unsigned int FEOrderElectro>
+
+ +
44 {
+
45 // template <unsigned int T1, unsigned int T2>
+
46 friend class dftClass<FEOrder, FEOrderElectro>;
+
47
+
48 // template <unsigned int T>
+
49 // friend class symmetryClass;
+
50
+
51 public:
+ +
53 const MPI_Comm & mpi_comm_parent,
+
54 const MPI_Comm &mpi_comm_domain);
+
55
+
56 /**
+
57 * @brief Compute discretized operator matrix times multi-vectors and add it to the existing dst vector
+
58 * works for both real and complex data types
+
59 * @param src Vector containing current values of source array with multi-vector array stored
+
60 * in a flattened format with all the wavefunction value corresponding to a
+
61 given node is stored
+
62 * contiguously (non-const as we scale src and rescale src to avoid creation
+
63 of temporary vectors)
+
64 * @param numberComponents Number of multi-fields(vectors)
+
65
+
66 * @param scaleFlag which decides whether dst has to be scaled square root of diagonal mass matrix before evaluating
+
67 * matrix times src vector
+
68 * @param scalar which multiplies src before evaluating matrix times src vector
+
69 * @param dst Vector containing sum of dst vector and operator times given multi-vectors product
+
70 */
+
71 void
+ +
73 const unsigned int numberComponents,
+
74 const bool scaleFlag,
+
75 const double scalar,
+ +
77 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
78
+
79
+
80 /**
+
81* @brief Compute discretized operator matrix times multi-vectors and add it to the existing dst vector
+
82* works for real and complex data types (Optimized matrix times multi-vectors
+
83using different datastructures for
+
84 * interior nodes and exterior nodes to reduce memory access costs
+
85during global to cell level vectors and vice versa)
+
86* @param src Vector containing current values of source array with multi-vector array stored
+
87* in a flattened format with all the wavefunction value corresponding to a given
+
88node is stored
+
89* contiguously (non-const as we scale src and rescale src to avoid creation of
+
90temporary vectors)
+
91 * @param cellSrcWaveFunctionMatrix containing current values of source array with multi-vector array stored
+
92* in a flattened format with all the wavefunction value corresponding to a given
+
93node is stored
+
94* contiguously for a given cell
+
95* @param numberComponents Number of multi-fields(vectors)
+
96
+
97* @param scaleFlag which decides whether dst has to be scaled square root of diagonal mass matrix before evaluating
+
98* matrix times src vector
+
99* @param scalar which multiplies src before evaluating matrix times src vector
+
100 * @param scalarA which is used for Chebyshev recursive iteration
+
101 * @param scalarB which is used for Chebyshev recursive iteration
+
102* @param dst Vector containing sum of dst vector and operator times given multi-vectors product
+
103 * @param cellDstWaveFunctionMatrix containing sum of cell level dst vector and operator times given multi-vectors product
+
104 */
+
105 void
+ +
107 std::vector<dataTypes::number> & cellSrcWaveFunctionMatrix,
+
108 const unsigned int numberComponents,
+
109 const bool scaleFlag,
+
110 const double scalar,
+
111 const double scalarA,
+
112 const double scalarB,
+ +
114 std::vector<dataTypes::number> & cellDstWaveFunctionMatrix);
+
115
+
116
+
117 /**
+
118 * @brief Compute projection of the operator into orthogonal basis
+
119 *
+
120 * @param src given orthogonal basis vectors
+
121 * @return ProjMatrix projected small matrix
+
122 */
+
123 void
+ +
125 const unsigned int numberComponents,
+
126 const unsigned int numberLocalDofs,
+
127 std::vector<dataTypes::number> &ProjHam);
+
128
+
129 /**
+
130 * @brief Compute projection of the operator into a subspace spanned by a given orthogonal basis HConj=X^{T}*HConj*XConj
+
131 *
+
132 * @param X Vector of Vectors containing multi-wavefunction fields
+
133 * @param numberComponents number of wavefunctions associated with a given node
+
134 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
+
135 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
+
136 * of the operation into the given subspace
+
137 *
+
138 * The XtHX and filling into projHamPar is done in a blocked approach
+
139 * which avoids creation of full projected Hamiltonian matrix memory, and
+
140 * also avoids creation of another full X memory.
+
141 */
+
142 void
+ +
144 const unsigned int numberComponents,
+
145 const unsigned int numberLocalDofs,
+
146 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
148 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
149
+
150
+
151 /**
+
152 * @brief Compute projection of the operator into a subspace spanned by a given orthogonal basis HConj=X^{T}*HConj*XConj
+
153 *
+
154 * @param X Vector of Vectors containing multi-wavefunction fields
+
155 * @param N total number of wavefunctions components
+
156 * @param Ncore number of wavecfuntions starting from the first for
+
157 * which the project Hamiltionian block will be computed in single
+
158 * procession. However the cross blocks will still be computed in double
+
159 * precision.
+
160 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
+
161 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
+
162 * of the operation into the given subspace
+
163 */
+
164 void
+ +
166 const dataTypes::number * X,
+
167 const unsigned int N,
+
168 const unsigned int Ncore,
+
169 const unsigned int numberLocalDofs,
+
170 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
172 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
173
+
174
+
175 /**
+
176 * @brief Computes effective potential involving local-density exchange-correlation functionals
+
177 *
+
178 * @param rhoValues electron-density
+
179 * @param phi electrostatic potential arising both from electron-density and nuclear charge
+
180 * @param phiExt electrostatic potential arising from nuclear charges
+
181 * @param externalPotCorrValues quadrature data of sum{Vext} minus sum{Vnu}
+
182 */
+
183 void
+ +
185 const std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
186 const std::map<dealii::CellId, std::vector<double>> &phiValues,
+
187 const std::map<dealii::CellId, std::vector<double>>
+
188 &externalPotCorrValues,
+
189 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
190 const unsigned int externalPotCorrQuadratureId);
+
191
+
192
+
193 /**
+
194 * @brief Computes effective potential involving local spin density exchange-correlation functionals
+
195 *
+
196 * @param rhoValues electron-density
+
197 * @param phi electrostatic potential arising both from electron-density and nuclear charge
+
198 * @param spinIndex flag to toggle spin-up or spin-down
+
199 * @param externalPotCorrValues quadrature data of sum{Vext} minus sum{Vnu}
+
200 */
+
201 void
+ +
203 const std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
204 const std::map<dealii::CellId, std::vector<double>> &phiValues,
+
205 unsigned int spinIndex,
+
206 const std::map<dealii::CellId, std::vector<double>>
+
207 &externalPotCorrValues,
+
208 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
209 const unsigned int externalPotCorrQuadratureId);
+
210
+
211 /**
+
212 * @brief Computes effective potential involving gradient density type exchange-correlation functionals
+
213 *
+
214 * @param rhoValues electron-density
+
215 * @param gradRhoValues gradient of electron-density
+
216 * @param phi electrostatic potential arising both from electron-density and nuclear charge
+
217 * @param externalPotCorrValues quadrature data of sum{Vext} minus sum{Vnu}
+
218 */
+
219 void
+ +
221 const std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
222 const std::map<dealii::CellId, std::vector<double>> *gradRhoValues,
+
223 const std::map<dealii::CellId, std::vector<double>> &phiValues,
+
224 const std::map<dealii::CellId, std::vector<double>>
+
225 &externalPotCorrValues,
+
226 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
227 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
228 const unsigned int externalPotCorrQuadratureId);
+
229
+
230
+
231 /**
+
232 * @brief Computes effective potential for gradient-spin density type exchange-correlation functionals
+
233 *
+
234 * @param rhoValues electron-density
+
235 * @param gradRhoValues gradient of electron-density
+
236 * @param phi electrostatic potential arising both from electron-density and nuclear charge
+
237 * @param spinIndex flag to toggle spin-up or spin-down
+
238 * @param externalPotCorrValues quadrature data of sum{Vext} minus sum{Vnu}
+
239 */
+
240 void
+ +
242 const std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
243 const std::map<dealii::CellId, std::vector<double>> *gradRhoValues,
+
244 const std::map<dealii::CellId, std::vector<double>> &phiValues,
+
245 const unsigned int spinIndex,
+
246 const std::map<dealii::CellId, std::vector<double>>
+
247 &externalPotCorrValues,
+
248 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
249 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
250 const unsigned int externalPotCorrQuadratureId);
+
251
+
252 /**
+
253 * @brief Computes directional derivative of effective potential for local density type exchange-correlation functionals
+
254 *
+
255 */
+
256 void
+ +
258 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
+
259 const std::map<dealii::CellId, std::vector<double>> &rhoPrimeValues,
+
260 const std::map<dealii::CellId, std::vector<double>> &phiPrimeValues,
+
261 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues);
+
262
+
263 /**
+
264 * @brief Computes directional derivative of effective potential for local spin-density type exchange-correlation functionals
+
265 *
+
266 */
+
267 void
+ +
269 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
+
270 const std::map<dealii::CellId, std::vector<double>> &rhoPrimeValues,
+
271 const std::map<dealii::CellId, std::vector<double>> &phiPrimeValues,
+
272 const unsigned int spinIndex,
+
273 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues);
+
274
+
275
+
276 /**
+
277 * @brief Computes directional derivative of effective potential for gradient density type exchange-correlation functionals
+
278 *
+
279 */
+
280 void
+ +
282 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
+
283 const std::map<dealii::CellId, std::vector<double>> &rhoPrimeValues,
+
284 const std::map<dealii::CellId, std::vector<double>> &gradRhoValues,
+
285 const std::map<dealii::CellId, std::vector<double>> &gradRhoPrimeValues,
+
286 const std::map<dealii::CellId, std::vector<double>> &phiPrimeValues,
+
287 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
288 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues);
+
289
+
290 /**
+
291 * @brief Computes directional derivative of effective potential for gradient spin-density type exchange-correlation functionals
+
292 *
+
293 */
+
294 void
+ +
296 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
+
297 const std::map<dealii::CellId, std::vector<double>> &rhoPrimeValues,
+
298 const std::map<dealii::CellId, std::vector<double>> &gradRhoValues,
+
299 const std::map<dealii::CellId, std::vector<double>> &gradRhoPrimeValues,
+
300 const std::map<dealii::CellId, std::vector<double>> &phiPrimeValues,
+
301 const unsigned int spinIndex,
+
302 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
303 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues);
+
304
+
305 /**
+
306 * @brief sets the data member to appropriate kPoint and spin Index
+
307 *
+
308 * @param kPointIndex k-point Index to set
+
309 */
+
310 void
+
311 reinitkPointSpinIndex(const unsigned int kPointIndex,
+
312 const unsigned int spinIndex);
+
313
+
314
+
315 void
+ +
317
+
318 //
+
319 // initialize eigen class
+
320 //
+
321 void
+ +
323
+
324 /**
+
325 * @brief initializes parallel layouts and index maps required for HX, XtHX and creates a flattened array
+
326 * format for X
+
327 *
+
328 * @param wavefunBlockSize number of wavefunction vectors to which the parallel layouts and
+
329 * index maps correspond to. The same number of wavefunction vectors must be
+
330 * used in subsequent calls to HX, XtHX.
+
331 * @param flag controls the creation of flattened array format and index maps or only index maps
+
332 *
+
333 *
+
334 * @return X format to store a multi-vector array
+
335 * in a flattened format with all the wavefunction values corresponding to a
+
336 * given node being stored contiguously
+
337 *
+
338 */
+
339 void
+
340 reinit(const unsigned int wavefunBlockSize,
+ +
342 bool flag);
+
343
+
344 void
+
345 reinit(const unsigned int wavefunBlockSize,
+ +
347 bool flag);
+
348
+
349 void
+
350 reinit(const unsigned int wavefunBlockSize);
+
351
+
352
+
353 void
+ +
355 const unsigned int numberWaveFunctions,
+ +
357 std::vector<dataTypes::number> & cellWaveFunctionMatrix);
+
358
+
359
+
360 void
+ +
362 const unsigned int wavefunBlockSize,
+
363 const std::vector<dataTypes::number> & cellWaveFunctionMatrix,
+ +
365
+
366 void
+
367 initWithScalar(const unsigned int numberWaveFunctions,
+
368 double scalarValue,
+
369 std::vector<dataTypes::number> &cellWaveFunctionMatrix);
+
370
+
371
+
372 void
+
373 axpby(double scalarA,
+
374 double scalarB,
+
375 const unsigned int numberWaveFunctions,
+
376 const std::vector<dataTypes::number> &cellXWaveFunctionMatrix,
+
377 std::vector<dataTypes::number> & cellYWaveFunctionMatrix);
+
378
+
379
+
380
+
381 void
+ +
383 std::vector<unsigned int> &globalArrayClassificationMap);
+
384
+
385 const std::vector<dealii::types::global_dof_index> &
+ +
387
+ + +
390
+
391 const std::vector<double> &
+ +
393
+
394 const std::vector<double> &
+ +
396
+
397 const std::vector<double> &
+ +
399
+
400 const std::vector<double> &
+ +
402
+
403 const std::vector<double> &
+ +
405
+
406 const std::vector<double> &
+ +
408
+
409 const std::vector<double> &
+ +
411
+
412 /**
+
413 * @brief Computes diagonal mass matrix
+
414 *
+
415 * @param dofHandler dofHandler associated with the current mesh
+
416 * @param constraintMatrix constraints to be used
+
417 * @param sqrtMassVec output the value of square root of diagonal mass matrix
+
418 * @param invSqrtMassVec output the value of inverse square root of diagonal mass matrix
+
419 */
+
420 void
+
421 computeMassVector(const dealii::DoFHandler<3> & dofHandler,
+
422 const dealii::AffineConstraints<double> &constraintMatrix,
+
423 distributedCPUVec<double> & sqrtMassVec,
+
424 distributedCPUVec<double> & invSqrtMassVec);
+
425
+
426 /// precompute shapefunction gradient integral
+
427 void
+ +
429 const unsigned int lpspQuadratureId);
+
430
+
431 /// compute element Hamiltonian matrix
+
432 void
+ +
434 const unsigned int kPointIndex,
+
435 const unsigned int spinIndex,
+
436 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
437 void
+ +
439
+
440
+
441 private:
+
442 /**
+
443 * @brief Computes effective potential for external potential correction to phiTot
+
444 *
+
445 * @param externalPotCorrValues quadrature data of sum{Vext} minus sum{Vnu}
+
446 */
+
447 void
+ +
449 const std::map<dealii::CellId, std::vector<double>>
+
450 & externalPotCorrValues,
+
451 const unsigned int externalPotCorrQuadratureId);
+
452
+
453 /**
+
454 * @brief finite-element cell level stiffness matrix with first dimension traversing the cell id(in the order of macro-cell and subcell)
+
455 * and second dimension storing the stiffness matrix of size
+
456 * numberNodesPerElement x numberNodesPerElement in a flattened 1D array of
+
457 * complex data type
+
458 */
+
459 std::vector<std::vector<std::vector<dataTypes::number>>>
+ +
461
+ +
463
+
464
+
465 std::vector<std::vector<dataTypes::number>> d_cellMassMatrix;
+ +
467
+
468 /**
+
469 * @brief implementation of matrix-vector product using cell-level stiffness matrices.
+
470 * works for both real and complex data type
+
471 * @param src Vector containing current values of source array with multi-vector array stored
+
472 * in a flattened format with all the wavefunction value corresponding to a
+
473 * given node is stored contiguously.
+
474 * @param numberWaveFunctions Number of wavefunctions at a given node.
+
475 * @param dst Vector containing matrix times given multi-vectors product
+
476 */
+
477 void
+ + +
480 const unsigned int numberWaveFunctions,
+ +
482 const double scalar = 1.0);
+
483
+
484 void
+ + +
487 std::vector<dataTypes::number> & cellSrcWaveFunctionMatrix,
+
488 const unsigned int numberWaveFunctions,
+ +
490 std::vector<dataTypes::number> & cellDstWaveFunctionMatrix,
+
491 const double scalar = 1.0);
+
492
+
493
+
494 void
+ + +
497 std::vector<dataTypes::number> & cellSrcWaveFunctionMatrix,
+
498 const unsigned int numberWaveFunctions,
+ +
500 std::vector<dataTypes::number> & cellDstWaveFunctionMatrix,
+
501 const double scalar = 1.0,
+
502 const double scalarA = 1.0,
+
503 const double scalarB = 1.0,
+
504 bool scaleFlag = false);
+
505
+
506
+
507
+
508 /**
+
509 * @brief implementation of non-local Hamiltonian matrix-vector product
+
510 * using non-local discretized projectors at cell-level.
+
511 * works for both complex and real data type
+
512 * @param src Vector containing current values of source array with multi-vector array stored
+
513 * in a flattened format with all the wavefunction value corresponding to a
+
514 * given node is stored contiguously.
+
515 * @param numberWaveFunctions Number of wavefunctions at a given node.
+
516 * @param dst Vector containing matrix times given multi-vectors product
+
517 */
+
518 void
+ + +
521 const unsigned int numberWaveFunctions,
+ +
523 const double scalar = 1.0) const;
+
524
+
525 void
+ + + +
529 & projectorKetTimesVectorFlattened,
+
530 const unsigned int numberWaveFunctions);
+
531
+
532
+
533 /// pointer to dft class
+ +
535
+
536
+
537 /// data structures to store diagonal of inverse square root mass matrix and
+
538 /// square root of mass matrix
+ +
540
+
541 dealii::Table<2, dealii::VectorizedArray<double>> vEff;
+
542 dealii::Table<2, dealii::VectorizedArray<double>> d_vEffExternalPotCorr;
+
543 std::vector<double> d_vEffExternalPotCorrJxW;
+
544 std::vector<double> d_vEffJxW;
+ +
546 std::vector<std::vector<double>> d_invJacKPointTimesJxW;
+
547 dealii::Table<2, dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+ +
549
+
550
+
551 /**
+
552 * @brief finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_i \cdot \nabla N_j))
+
553 * with first dimension traversing the macro cell id
+
554 * and second dimension storing the matrix of size numberNodesPerElement x
+
555 * numberNodesPerElement in a flattened 1D dealii Vectorized array
+
556 */
+ +
558
+
559 /// storage for shapefunctions
+
560 std::vector<unsigned int> d_blockiNodeIndex;
+
561 std::vector<unsigned int> d_blockjNodeIndex;
+
562 std::vector<unsigned int> d_blockiNodeIndexNoSym;
+
563 std::vector<unsigned int> d_blockjNodeIndexNoSym;
+
564 std::vector<double> d_shapeFunctionData;
+
565 std::vector<double> d_shapeFunctionLpspQuadData;
+ + + +
569
+
570 /// storage for shapefunctions
+
571 std::vector<double> d_NiNjIntegral;
+
572
+
573
+
574 /// storage for matrix-free cell data
+
575 const unsigned int d_numberNodesPerElement;
+
576 const unsigned int d_numberCellsLocallyOwned;
+
577 std::vector<unsigned int> d_nodesPerCellClassificationMap;
+
578 std::vector<unsigned int> d_globalArrayClassificationMap;
+
579
+
580 // parallel objects
+
581 const MPI_Comm d_mpiCommParent;
+
582 const MPI_Comm mpi_communicator;
+
583 const unsigned int n_mpi_processes;
+
584 const unsigned int this_mpi_process;
+
585 dealii::ConditionalOStream pcout;
+
586
+
587 // compute-time logger
+
588 dealii::TimerOutput computing_timer;
+
589
+
590 // mutex thread for managing multi-thread writing to XHXvalue
+
591 mutable dealii::Threads::Mutex assembler_lock;
+
592
+
593 // d_kpoint index for which Hamiltonian is used in HX
+
594 unsigned int d_kPointIndex;
+
595
+
596 // spin index for which Hamiltonian is used in HX
+
597 unsigned int d_spinIndex;
+
598
+
599 // storage for precomputing index maps
+
600 std::vector<std::vector<dealii::types::global_dof_index>>
+ + +
603
+
604 std::vector<dealii::types::global_dof_index>
+ +
606
+
607 std::vector<unsigned int> d_normalCellIdToMacroCellIdMap;
+
608 std::vector<unsigned int> d_macroCellIdToNormalCellIdMap;
+
609
+
610 /// flag for precomputing stiffness matrix contribution from
+
611 /// sum{Vext}-sum{Vnuc}
+ +
613
+
614 /// external potential correction quadrature id
+ +
616 };
+
+
617} // namespace dftfe
+
618#endif
+
Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
Definition scalapackWrapper.h:37
+
This class is the primary interface location of all other parts of the DFT-FE code for all steps invo...
Definition dft.h:108
+
Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete ...
Definition kohnShamDFTOperator.h:44
+
std::vector< double > d_cellHamiltonianMatrixExternalPotCorr
Definition kohnShamDFTOperator.h:466
+
std::vector< double > d_shapeFunctionGradientValueRefZ
Definition kohnShamDFTOperator.h:568
+
void computeLocalHamiltonianTimesX(const distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix, const double scalar=1.0)
+
unsigned int d_externalPotCorrQuadratureId
external potential correction quadrature id
Definition kohnShamDFTOperator.h:615
+
dealii::Table< 2, dealii::VectorizedArray< double > > vEff
Definition kohnShamDFTOperator.h:541
+
std::vector< unsigned int > d_nodesPerCellClassificationMap
Definition kohnShamDFTOperator.h:577
+
void XtHX(const dataTypes::number *src, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)
Compute projection of the operator into orthogonal basis.
+
void fillGlobalArrayFromCellWaveFunctionMatrix(const unsigned int wavefunBlockSize, const std::vector< dataTypes::number > &cellWaveFunctionMatrix, distributedCPUMultiVec< dataTypes::number > &X)
+
const MPI_Comm d_mpiCommParent
Definition kohnShamDFTOperator.h:581
+
const unsigned int d_numberNodesPerElement
storage for matrix-free cell data
Definition kohnShamDFTOperator.h:575
+
std::vector< std::vector< std::vector< dataTypes::number > > > d_cellHamiltonianMatrix
finite-element cell level stiffness matrix with first dimension traversing the cell id(in the order o...
Definition kohnShamDFTOperator.h:460
+
bool d_isStiffnessMatrixExternalPotCorrComputed
Definition kohnShamDFTOperator.h:612
+
const unsigned int this_mpi_process
Definition kohnShamDFTOperator.h:584
+
void computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)
Computes directional derivative of effective potential for local density type exchange-correlation fu...
+
distributedCPUMultiVec< dataTypes::number > & getParallelProjectorKetTimesBlockVector()
+
std::vector< double > d_shapeFunctionGradientValueRefX
Definition kohnShamDFTOperator.h:566
+
dealii::Table< 2, dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > derExcWithSigmaTimesGradRho
Definition kohnShamDFTOperator.h:548
+
void computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)
Computes directional derivative of effective potential for local spin-density type exchange-correlati...
+
void reinit(const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)
+ +
const std::vector< double > & getShapeFunctionValuesNLPTransposed() const
+
std::vector< double > d_cellShapeFunctionGradientIntegral
finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_...
Definition kohnShamDFTOperator.h:557
+
void init()
initialize operatorClass
+
void computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential involving local spin density exchange-correlation functionals.
+
void computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential for gradient-spin density type exchange-correlation functionals.
+
void HX(distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberComponents, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)
Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works f...
+
std::vector< unsigned int > d_macroCellIdToNormalCellIdMap
Definition kohnShamDFTOperator.h:608
+
std::vector< dealii::types::global_dof_index > d_FullflattenedArrayMacroCellLocalProcIndexIdMap
Definition kohnShamDFTOperator.h:605
+
void computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential for external potential correction to phiTot.
+
void computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential involving local-density exchange-correlation functionals.
+
void preComputeShapeFunctionGradientIntegrals(const unsigned int lpspQuadratureId)
precompute shapefunction gradient integral
+
dealii::Threads::Mutex assembler_lock
Definition kohnShamDFTOperator.h:591
+
std::vector< double > d_elementHamiltonianMatrixImag
Definition kohnShamDFTOperator.h:462
+
const std::vector< double > & getInverseJacobiansNLP() const
+
std::vector< unsigned int > d_blockiNodeIndexNoSym
Definition kohnShamDFTOperator.h:562
+
void computeHamiltonianTimesXInternal(const distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix, const double scalar=1.0, const double scalarA=1.0, const double scalarB=1.0, bool scaleFlag=false)
+
unsigned int d_spinIndex
Definition kohnShamDFTOperator.h:597
+
std::vector< std::vector< dealii::types::global_dof_index > > d_flattenedArrayMacroCellLocalProcIndexIdMap
Definition kohnShamDFTOperator.h:601
+
const unsigned int n_mpi_processes
Definition kohnShamDFTOperator.h:583
+
std::vector< double > d_shapeFunctionData
Definition kohnShamDFTOperator.h:564
+
distributedCPUVec< double > d_invSqrtMassVector
Definition kohnShamDFTOperator.h:539
+
void computeMassVector(const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)
Computes diagonal mass matrix.
+
std::vector< double > d_NiNjIntegral
storage for shapefunctions
Definition kohnShamDFTOperator.h:571
+
distributedCPUVec< double > d_sqrtMassVector
Definition kohnShamDFTOperator.h:539
+
void getInteriorSurfaceNodesMapFromGlobalArray(std::vector< unsigned int > &globalArrayClassificationMap)
+
const std::vector< double > & getShapeFunctionValuesDensityTransposed() const
+
std::vector< double > d_vEffJxW
Definition kohnShamDFTOperator.h:544
+
std::vector< double > d_shapeFunctionLpspQuadData
Definition kohnShamDFTOperator.h:565
+
void computeLocalHamiltonianTimesX(const distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, const double scalar=1.0)
implementation of matrix-vector product using cell-level stiffness matrices. works for both real and ...
+
std::vector< double > d_shapeFunctionGradientValueRefY
Definition kohnShamDFTOperator.h:567
+
void computeHamiltonianMatrix(const unsigned int kPointIndex, const unsigned int spinIndex, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
compute element Hamiltonian matrix
+
std::vector< unsigned int > d_blockjNodeIndex
Definition kohnShamDFTOperator.h:561
+
void computeNonLocalProjectorKetTimesXTimesV(distributedCPUMultiVec< dataTypes::number > &src, distributedCPUMultiVec< dataTypes::number > &projectorKetTimesVectorFlattened, const unsigned int numberWaveFunctions)
+
dealii::Table< 2, dealii::VectorizedArray< double > > d_vEffExternalPotCorr
Definition kohnShamDFTOperator.h:542
+
void initCellWaveFunctionMatrix(const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix)
+
void XtHXMixedPrec(const dataTypes::number *X, const unsigned int N, const unsigned int Ncore, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
Compute projection of the operator into a subspace spanned by a given orthogonal basis HConj=X^{T}*HC...
+
const MPI_Comm mpi_communicator
Definition kohnShamDFTOperator.h:582
+
const std::vector< double > & getShapeFunctionGradValuesDensityGaussQuad() const
+
unsigned int d_kPointIndex
Definition kohnShamDFTOperator.h:594
+
void computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)
Computes directional derivative of effective potential for gradient density type exchange-correlation...
+
dftClass< FEOrder, FEOrderElectro > * dftPtr
pointer to dft class
Definition kohnShamDFTOperator.h:534
+
void reinit(const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)
initializes parallel layouts and index maps required for HX, XtHX and creates a flattened array forma...
+
std::vector< std::vector< dataTypes::number > > d_cellMassMatrix
Definition kohnShamDFTOperator.h:465
+
const unsigned int d_numberCellsLocallyOwned
Definition kohnShamDFTOperator.h:576
+
const std::vector< double > & getShapeFunctionValuesDensityGaussLobattoQuad() const
+
std::vector< double > d_invJacderExcWithSigmaTimesGradRhoJxW
Definition kohnShamDFTOperator.h:545
+
void initWithScalar(const unsigned int numberWaveFunctions, double scalarValue, std::vector< dataTypes::number > &cellWaveFunctionMatrix)
+
void computeNonLocalHamiltonianTimesX(const distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, const double scalar=1.0) const
implementation of non-local Hamiltonian matrix-vector product using non-local discretized projectors ...
+
std::vector< std::vector< dealii::types::global_dof_index > > d_flattenedArrayCellLocalProcIndexIdMap
Definition kohnShamDFTOperator.h:602
+
std::vector< unsigned int > d_blockiNodeIndex
storage for shapefunctions
Definition kohnShamDFTOperator.h:560
+
dealii::TimerOutput computing_timer
Definition kohnShamDFTOperator.h:588
+
void reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)
sets the data member to appropriate kPoint and spin Index
+
void computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)
Computes directional derivative of effective potential for gradient spin-density type exchange-correl...
+
dealii::ConditionalOStream pcout
Definition kohnShamDFTOperator.h:585
+
std::vector< unsigned int > d_normalCellIdToMacroCellIdMap
Definition kohnShamDFTOperator.h:607
+
const std::vector< double > & getShapeFunctionValuesDensityGaussQuad() const
+
void computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential involving gradient density type exchange-correlation functionals.
+
const std::vector< double > & getShapeFunctionGradientValuesNLPTransposed() const
+
std::vector< std::vector< double > > d_invJacKPointTimesJxW
Definition kohnShamDFTOperator.h:546
+
void reinit(const unsigned int wavefunBlockSize)
+
void HX(distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works f...
+
std::vector< unsigned int > d_blockjNodeIndexNoSym
Definition kohnShamDFTOperator.h:563
+ +
const std::vector< dealii::types::global_dof_index > & getFlattenedArrayCellLocalProcIndexIdMap() const
Get index map of flattened array to cell based numbering.
+
std::vector< double > d_vEffExternalPotCorrJxW
Definition kohnShamDFTOperator.h:543
+
void XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
Compute projection of the operator into a subspace spanned by a given orthogonal basis HConj=X^{T}*HC...
+
kohnShamDFTOperatorClass(dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
+
void axpby(double scalarA, double scalarB, const unsigned int numberWaveFunctions, const std::vector< dataTypes::number > &cellXWaveFunctionMatrix, std::vector< dataTypes::number > &cellYWaveFunctionMatrix)
+
std::vector< unsigned int > d_globalArrayClassificationMap
Definition kohnShamDFTOperator.h:578
+
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:39
+ + + +
double number
Definition dftfeDataTypes.h:44
+
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+ +
+ + + + diff --git a/kohn_sham_d_f_t_operator_device_8h.html b/kohn_sham_d_f_t_operator_device_8h.html new file mode 100644 index 000000000..fbbfe830f --- /dev/null +++ b/kohn_sham_d_f_t_operator_device_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/kohnShamDFTOperatorDevice.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
kohnShamDFTOperatorDevice.h File Reference
+
+
+
#include <constants.h>
+#include <headers.h>
+#include <operatorDevice.h>
+#include <FEBasisOperations.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >
 Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/kohn_sham_d_f_t_operator_device_8h_source.html b/kohn_sham_d_f_t_operator_device_8h_source.html new file mode 100644 index 000000000..43fec41d3 --- /dev/null +++ b/kohn_sham_d_f_t_operator_device_8h_source.html @@ -0,0 +1,996 @@ + + + + + + + +DFT-FE: workspace/include/kohnShamDFTOperatorDevice.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
kohnShamDFTOperatorDevice.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 kohnShamDFTOperatorDeviceClass_H_
+
20#define kohnShamDFTOperatorDeviceClass_H_
+
21#include <constants.h>
+
22#include <headers.h>
+
23#include <operatorDevice.h>
+
24#include <FEBasisOperations.h>
+
25
+
26namespace dftfe
+
27{
+
28#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
29 template <unsigned int T1, unsigned int T2>
+
30 class dftClass;
+
31#endif
+
32
+
33 /**
+
34 * @brief Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors
+
35 *
+
36 * @author Phani Motamarri, Sambit Das
+
37 */
+
38
+
39 //
+
40 // Define kohnShamDFTOperatorDeviceClass class
+
41 //
+
42 template <unsigned int FEOrder, unsigned int FEOrderElectro>
+
+
43 class kohnShamDFTOperatorDeviceClass : public operatorDFTDeviceClass
+
44 {
+
45 public:
+ +
47 const MPI_Comm &mpi_comm_parent,
+
48 const MPI_Comm &mpi_comm_domain);
+
49
+
50 /**
+
51 * @brief destructor
+
52 */
+ +
54
+
55 void
+ +
57
+
58 void
+ +
60
+ + +
63
+
64 const double *
+ +
66
+
67 const double *
+ +
69
+
70
+ + +
73
+ + +
76
+ + +
79
+ + +
82
+ +
84 getShapeFunctionValuesTransposed(const bool use2pPlusOneGLQuad = false);
+
85
+ + +
88
+
89 // dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> &
+
90 // getShapeFunctionGradientValuesXTransposed();
+
91
+
92 // dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> &
+
93 // getShapeFunctionGradientValuesYTransposed();
+
94
+
95 // dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE> &
+
96 // getShapeFunctionGradientValuesZTransposed();
+
97
+ + +
100
+ + +
103
+
104 dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
+ + +
107
+ + + +
111
+ + +
114
+
115 distributedDeviceVec<dataTypes::number> &
+ +
117
+
118 distributedDeviceVec<dataTypes::number> &
+ +
120
+
121 distributedDeviceVec<dataTypes::number> &
+ +
123
+ +
125 &
+ +
127
+
128
+
129 /**
+
130 * @brief Compute discretized operator matrix times multi-vectors and add it to the existing dst vector
+
131 * works for both real and complex data types
+
132 * @param src Vector containing current values of source array with multi-vector array stored
+
133 * in a flattened format with all the wavefunction value corresponding to a
+
134 given node is stored
+
135 * contiguously (non-const as we scale src and rescale src to avoid creation
+
136 of temporary vectors)
+
137 * @param numberComponents Number of multi-fields(vectors)
+
138
+
139 * @param scaleFlag which decides whether dst has to be scaled square root of diagonal mass matrix before evaluating
+
140 * matrix times src vector
+
141 * @param scalar which multiplies src before evaluating matrix times src vector
+
142 * @param dst Vector containing sum of dst vector and operator times given multi-vectors product
+
143 */
+
144 void
+
145 HX(distributedDeviceVec<dataTypes::number> &src,
+
146 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
+
147 const unsigned int localVectorSize,
+
148 const unsigned int numberComponents,
+
149 const bool scaleFlag,
+
150 const double scalar,
+
151 distributedDeviceVec<dataTypes::number> &dst,
+
152 const bool doUnscalingX = true,
+
153 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
154
+
155 void
+
156 HX(distributedDeviceVec<dataTypes::number> & src,
+
157 distributedDeviceVec<dataTypes::numberFP32> &srcFloat,
+
158 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
159 const unsigned int localVectorSize,
+
160 const unsigned int numberComponents,
+
161 const bool scaleFlag,
+
162 const double scalar,
+
163 distributedDeviceVec<dataTypes::number> & dst,
+
164 const bool doUnscalingX = true,
+
165 const bool singlePrecCommun = false,
+
166 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
167
+
168 void
+
169 HXCheby(distributedDeviceVec<dataTypes::number> & X,
+
170 distributedDeviceVec<dataTypes::numberFP32> &XFloat,
+
171 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
+
172 const unsigned int localVectorSize,
+
173 const unsigned int numberComponents,
+
174 distributedDeviceVec<dataTypes::number> &Y,
+
175 bool mixedPrecflag = false,
+
176 bool computePart1 = false,
+
177 bool computePart2 = false);
+
178
+
179
+
180#ifdef DEAL_II_WITH_SCALAPACK
+
181 /**
+
182 * @brief Compute projection of the operator into a subspace spanned by a given basis
+
183 *
+
184 * @param X Vector of Vectors containing all wavefunction vectors
+
185 * @param Xb parallel distributed vector datastructure for handling block of wavefunction vectors
+
186 * @param HXb parallel distributed vector datastructure for handling H multiplied by block of
+
187 * wavefunction vectors
+
188 * @param projectorKetTimesVector parallel distributed vector datastructure for handling nonlocal
+
189 * projector kets times block wavefunction vectors
+
190 * @param M number of local dofs
+
191 * @param N total number of wavefunction vectors
+
192 * @param handle deviceBlasHandle
+
193 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
+
194 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
+
195 * of the operation into the given subspace
+
196 */
+
197 void
+
198 XtHX(const dataTypes::number * X,
+
199 distributedDeviceVec<dataTypes::number> &Xb,
+
200 distributedDeviceVec<dataTypes::number> &HXb,
+
201 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
+
202 const unsigned int M,
+
203 const unsigned int N,
+ +
205 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
207 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
208 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
209
+
210 /**
+
211 * @brief Compute projection of the operator into a subspace spanned by a given basis.
+
212 * This routine also overlaps communication and computation.
+
213 *
+
214 * @param X Vector of Vectors containing all wavefunction vectors
+
215 * @param Xb parallel distributed vector datastructure for handling block of wavefunction vectors
+
216 * @param HXb parallel distributed vector datastructure for handling H multiplied by block of
+
217 * wavefunction vectors
+
218 * @param projectorKetTimesVector parallel distributed vector datastructure for handling nonlocal
+
219 * projector kets times block wavefunction vectors
+
220 * @param M number of local dofs
+
221 * @param N total number of wavefunction vectors
+
222 * @param handle deviceBlasHandle
+
223 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
+
224 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
+
225 * of the operation into the given subspace
+
226 */
+
227 void
+
228 XtHXOverlapComputeCommun(
+
229 const dataTypes::number * X,
+
230 distributedDeviceVec<dataTypes::number> & Xb,
+
231 distributedDeviceVec<dataTypes::number> & HXb,
+
232 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
233 const unsigned int M,
+
234 const unsigned int N,
+ +
236 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
238 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
239 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
240
+
241
+
242 /**
+
243 * @brief Compute projection of the operator into a subspace spanned by a given basis.
+
244 * This routine uses a mixed precision algorithm
+
245 * (https://doi.org/10.1016/j.cpc.2019.07.016) and further overlaps
+
246 * communication and computation.
+
247 *
+
248 * @param X Vector of Vectors containing all wavefunction vectors
+
249 * @param Xb parallel distributed vector datastructure for handling block of wavefunction vectors
+
250 * @param floatXb parallel distributed vector datastructure for handling block of wavefunction
+
251 * vectors in single precision
+
252 * @param HXb parallel distributed vector datastructure for handling H multiplied by block of
+
253 * wavefunction vectors
+
254 * @param projectorKetTimesVector parallel distributed vector datastructure for handling nonlocal
+
255 * projector kets times block wavefunction vectors
+
256 * @param M number of local dofs
+
257 * @param N total number of wavefunction vectors
+
258 * @param Noc number of fully occupied wavefunction vectors considered in the mixed precision algorithm
+
259 * @param handle deviceBlasHandle
+
260 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
+
261 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
+
262 * of the operation into the given subspace
+
263 */
+
264 void
+
265 XtHXMixedPrecOverlapComputeCommun(
+
266 const dataTypes::number * X,
+
267 distributedDeviceVec<dataTypes::number> & Xb,
+
268 distributedDeviceVec<dataTypes::numberFP32> & floatXb,
+
269 distributedDeviceVec<dataTypes::number> & HXb,
+
270 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
271 const unsigned int M,
+
272 const unsigned int N,
+
273 const unsigned int Noc,
+ +
275 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
277 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
278 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
279
+
280 void
+
281 XtHXMixedPrecCommunOverlapComputeCommun(
+
282 const dataTypes::number * X,
+
283 distributedDeviceVec<dataTypes::number> & Xb,
+
284 distributedDeviceVec<dataTypes::number> & HXb,
+
285 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
286 const unsigned int M,
+
287 const unsigned int N,
+
288 const unsigned int Noc,
+ +
290 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
292 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
293 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
294#endif
+
295
+
296
+
297
+
298 /**
+
299 * @brief Computes effective potential involving local-density exchange-correlation functionals
+
300 *
+
301 * @param rhoValues electron-density
+
302 * @param phi electrostatic potential arising both from electron-density and nuclear charge
+
303 * @param phiExt electrostatic potential arising from nuclear charges
+
304 * @param pseudoValues quadrature data of pseudopotential values
+
305 */
+
306 void
+ +
308 const std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
309 const std::map<dealii::CellId, std::vector<double>> &phiValues,
+
310 const std::map<dealii::CellId, std::vector<double>>
+
311 &externalPotCorrValues,
+
312 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
313 const unsigned int externalPotCorrQuadratureId);
+
314
+
315
+
316 /**
+
317 * @brief Computes effective potential involving local spin density exchange-correlation functionals
+
318 *
+
319 * @param rhoValues electron-density
+
320 * @param phi electrostatic potential arising both from electron-density and nuclear charge
+
321 * @param phiExt electrostatic potential arising from nuclear charges
+
322 * @param spinIndex flag to toggle spin-up or spin-down
+
323 * @param pseudoValues quadrature data of pseudopotential values
+
324 */
+
325 void
+ +
327 const std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
328 const std::map<dealii::CellId, std::vector<double>> &phiValues,
+
329 unsigned int spinIndex,
+
330 const std::map<dealii::CellId, std::vector<double>>
+
331 &externalPotCorrValues,
+
332 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
333 const unsigned int externalPotCorrQuadratureId);
+
334
+
335 /**
+
336 * @brief Computes effective potential involving gradient density type exchange-correlation functionals
+
337 *
+
338 * @param rhoValues electron-density
+
339 * @param gradRhoValues gradient of electron-density
+
340 * @param phi electrostatic potential arising both from electron-density and nuclear charge
+
341 * @param phiExt electrostatic potential arising from nuclear charges
+
342 * @param pseudoValues quadrature data of pseudopotential values
+
343 */
+
344 void
+ +
346 const std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
347 const std::map<dealii::CellId, std::vector<double>> *gradRhoValues,
+
348 const std::map<dealii::CellId, std::vector<double>> &phiValues,
+
349 const std::map<dealii::CellId, std::vector<double>>
+
350 &externalPotCorrValues,
+
351 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
352 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
353 const unsigned int externalPotCorrQuadratureId);
+
354
+
355
+
356 /**
+
357 * @brief Computes effective potential for gradient-spin density type exchange-correlation functionals
+
358 *
+
359 * @param rhoValues electron-density
+
360 * @param gradRhoValues gradient of electron-density
+
361 * @param phi electrostatic potential arising both from electron-density and nuclear charge
+
362 * @param phiExt electrostatic potential arising from nuclear charges
+
363 * @param spinIndex flag to toggle spin-up or spin-down
+
364 * @param pseudoValues quadrature data of pseudopotential values
+
365 */
+
366 void
+ +
368 const std::map<dealii::CellId, std::vector<double>> *rhoValues,
+
369 const std::map<dealii::CellId, std::vector<double>> *gradRhoValues,
+
370 const std::map<dealii::CellId, std::vector<double>> &phiValues,
+
371 const unsigned int spinIndex,
+
372 const std::map<dealii::CellId, std::vector<double>>
+
373 &externalPotCorrValues,
+
374 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
375 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
376 const unsigned int externalPotCorrQuadratureId);
+
377
+
378 /**
+
379 * @brief Computes directional derivative of effective potential for local density type exchange-correlation functionals
+
380 *
+
381 */
+
382 void
+ +
384 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
+
385 const std::map<dealii::CellId, std::vector<double>> &rhoPrimeValues,
+
386 const std::map<dealii::CellId, std::vector<double>> &phiPrimeValues,
+
387 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues);
+
388
+
389 /**
+
390 * @brief Computes directional derivative of effective potential for local spin-density type exchange-correlation functionals
+
391 *
+
392 */
+
393 void
+ +
395 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
+
396 const std::map<dealii::CellId, std::vector<double>> &rhoPrimeValues,
+
397 const std::map<dealii::CellId, std::vector<double>> &phiPrimeValues,
+
398 const unsigned int spinIndex,
+
399 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues);
+
400
+
401
+
402 /**
+
403 * @brief Computes directional derivative of effective potential for gradient density type exchange-correlation functionals
+
404 *
+
405 */
+
406 void
+ +
408 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
+
409 const std::map<dealii::CellId, std::vector<double>> &rhoPrimeValues,
+
410 const std::map<dealii::CellId, std::vector<double>> &gradRhoValues,
+
411 const std::map<dealii::CellId, std::vector<double>> &gradRhoPrimeValues,
+
412 const std::map<dealii::CellId, std::vector<double>> &phiPrimeValues,
+
413 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
414 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues);
+
415
+
416 /**
+
417 * @brief Computes directional derivative of effective potential for gradient spin-density type exchange-correlation functionals
+
418 *
+
419 */
+
420 void
+ +
422 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
+
423 const std::map<dealii::CellId, std::vector<double>> &rhoPrimeValues,
+
424 const std::map<dealii::CellId, std::vector<double>> &gradRhoValues,
+
425 const std::map<dealii::CellId, std::vector<double>> &gradRhoPrimeValues,
+
426 const std::map<dealii::CellId, std::vector<double>> &phiPrimeValues,
+
427 const unsigned int spinIndex,
+
428 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
429 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues);
+
430
+
431 /**
+
432 * @brief sets the data member to appropriate kPoint Index
+
433 *
+
434 * @param kPointIndex k-point Index to set
+
435 */
+
436 void
+
437 reinitkPointSpinIndex(const unsigned int kPointIndex,
+
438 const unsigned int spinIndex);
+
439
+
440
+
441 void
+ +
443
+
444 //
+
445 // initialize eigen class
+
446 //
+
447 void
+ +
449
+
450 /**
+
451 * @brief initializes parallel layouts and index maps required for HX, XtHX and creates a flattened array
+
452 * format for X
+
453 *
+
454 * @param wavefunBlockSize number of wavefunction vectors to which the parallel layouts and
+
455 * index maps correspond to. The same number of wavefunction vectors must be
+
456 * used in subsequent calls to HX, XtHX.
+
457 * @param flag controls the creation of flattened array format and index maps or only index maps
+
458 *
+
459 *
+
460 * @return X format to store a multi-vector array
+
461 * in a flattened format with all the wavefunction values corresponding to a
+
462 * given node being stored contiguously
+
463 *
+
464 */
+
465
+
466 void
+
467 reinit(const unsigned int wavefunBlockSize, bool flag);
+
468
+
469 /**
+
470 * @brief Computes diagonal mass matrix
+
471 *
+
472 * @param dofHandler dofHandler associated with the current mesh
+
473 * @param constraintMatrix constraints to be used
+
474 * @param sqrtMassVec output the value of square root of diagonal mass matrix
+
475 * @param invSqrtMassVec output the value of inverse square root of diagonal mass matrix
+
476 */
+
477 void
+
478 computeMassVector(const dealii::DoFHandler<3> & dofHandler,
+
479 const dealii::AffineConstraints<double> &constraintMatrix,
+
480 distributedCPUVec<double> & sqrtMassVec,
+
481 distributedCPUVec<double> & invSqrtMassVec);
+
482
+
483 /// precompute shapefunction gradient integral
+
484 void
+ +
486 const unsigned int lpspQuadratureId,
+
487 const bool onlyUpdateGradNiNjIntegral = false);
+
488
+
489
+
490 void
+ +
492 const unsigned int spinIndex,
+
493 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
494
+
495
+
496 /**
+
497 * @brief implementation of non-local projector kets times psi product
+
498 * using non-local discretized projectors at cell-level.
+
499 * works for both complex and real data type
+
500 * @param src Vector containing current values of source array with multi-vector array stored
+
501 * in a flattened format with all the wavefunction value corresponding to a
+
502 * given node is stored contiguously.
+
503 * @param numberWaveFunctions Number of wavefunctions at a given node.
+
504 */
+
505 void
+ +
507 const dataTypes::number * src,
+
508 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
+
509 const unsigned int numberWaveFunctions);
+
510
+
511 private:
+
512 /**
+
513 * @brief Computes effective potential for external potential correction to phiTot
+
514 *
+
515 * @param externalPotCorrValues quadrature data of sum{Vext} minus sum{Vnu}
+
516 */
+
517 void
+ +
519 const std::map<dealii::CellId, std::vector<double>>
+
520 & externalPotCorrValues,
+
521 const unsigned int externalPotCorrQuadratureId);
+
522
+
523
+
524
+
525 /**
+
526 * @brief finite-element cell level stiffness matrix with first dimension traversing the cell id(in the order of macro-cell and subcell)
+
527 * and second dimension storing the stiffness matrix of size
+
528 * numberNodesPerElement x numberNodesPerElement in a flattened 1D array of
+
529 * complex data type
+
530 */
+
531 std::vector<dataTypes::number> d_cellHamiltonianMatrixFlattened;
+ + + + + + + + +
540
+ + +
543
+ + +
546
+
547 /// for non local
+
548
+
549 std::vector<dataTypes::number>
+ + + + +
554 std::vector<dataTypes::number>
+ + + + + + + + + + + + + + + + + + + +
574
+
575 std::vector<dataTypes::number> d_projectorKetTimesVectorAllCellsReduction;
+ + + +
579 std::vector<unsigned int> d_pseudoWfcAccumNonlocalAtoms;
+ + + + +
584 std::vector<unsigned int> d_nonlocalElemIdToLocalElemIdMap;
+
585 std::vector<unsigned int> d_pseduoWfcNonLocalAtoms;
+
586 std::vector<unsigned int> d_numberCellsNonLocalAtoms;
+
587 std::vector<unsigned int> d_numberCellsAccumNonLocalAtoms;
+
588 std::vector<dealii::types::global_dof_index>
+ +
590 dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
+ + +
593 std::vector<unsigned int> d_projectorIdsParallelNumberingMap;
+ + + + + +
599 std::vector<unsigned int> d_cellNodeIdMapNonLocalToLocal;
+ + +
602 std::vector<unsigned int> d_normalCellIdToMacroCellIdMap;
+
603 std::vector<unsigned int> d_macroCellIdToNormalCellIdMap;
+
604
+ + +
607
+
608 bool d_isMallocCalled = false;
+ + +
611
+
612 /**
+
613 * @brief implementation of matrix-vector product using cell-level stiffness matrices.
+
614 * works for both real and complex data type
+
615 * @param src Vector containing current values of source array with multi-vector array stored
+
616 * in a flattened format with all the wavefunction value corresponding to a
+
617 * given node is stored contiguously.
+
618 * @param numberWaveFunctions Number of wavefunctions at a given node.
+
619 * @param dst Vector containing matrix times given multi-vectors product
+
620 */
+
621 void
+ +
623 const dataTypes::number *src,
+
624 const unsigned int numberWaveFunctions,
+
625 dataTypes::number * dst,
+
626 bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
627
+
628 /**
+
629 * @brief implementation of non-local Hamiltonian matrix-vector product
+
630 * using non-local discretized projectors at cell-level.
+
631 * works for both complex and real data type
+
632 * @param src Vector containing current values of source array with multi-vector array stored
+
633 * in a flattened format with all the wavefunction value corresponding to a
+
634 * given node is stored contiguously.
+
635 * @param numberWaveFunctions Number of wavefunctions at a given node.
+
636 * @param dst Vector containing matrix times given multi-vectors product
+
637 */
+
638 void
+ +
640 const dataTypes::number * src,
+
641 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
+
642 const unsigned int numberWaveFunctions,
+
643 dataTypes::number * dst,
+
644 const bool skip1 = false,
+
645 const bool skip2 = false);
+
646
+
647
+
648
+
649 /// pointer to dft class
+ +
651 std::shared_ptr<
+ +
653 double,
+ + +
656 std::shared_ptr<
+ +
658 double,
+ + +
661
+
662
+
663 /// data structures to store diagonal of inverse square root mass matrix and
+
664 /// square root of mass matrix
+ + + +
668
+
669 std::vector<double> d_vEff;
+
670 std::vector<double> d_vEffExternalPotCorrJxW;
+ + +
673 std::vector<double> d_vEffJxW;
+ + +
676
+
677 const unsigned int d_numQuadPoints;
+ +
679 const unsigned int d_numLocallyOwnedCells;
+
680
+ + + +
684
+
685
+
686 /**
+
687 * @brief finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_i \cdot \nabla N_j))
+
688 */
+ +
690
+
691 /// storage for shapefunctions
+
692 std::vector<double> d_shapeFunctionValue;
+ +
694
+ + + + +
699
+
700 std::vector<double> d_cellJxWValues;
+ + +
703
+
704 // storage for matrix-free cell data
+
705 const unsigned int d_numberNodesPerElement;
+
706 const unsigned int d_numberMacroCells;
+
707 std::vector<unsigned int> d_macroCellSubCellMap;
+
708
+
709 // parallel objects
+
710 const MPI_Comm d_mpiCommParent;
+
711 const MPI_Comm mpi_communicator;
+
712 const unsigned int n_mpi_processes;
+
713 const unsigned int this_mpi_process;
+
714 dealii::ConditionalOStream pcout;
+
715
+
716 // compute-time logger
+
717 dealii::TimerOutput computing_timer;
+
718
+
719 // mutex thread for managing multi-thread writing to XHXvalue
+
720 // mutable dealii::Threads::Mutex assembler_lock;
+
721
+
722 // d_kpoint index for which Hamiltonian is computed
+
723 unsigned int d_kPointIndex;
+
724
+
725 unsigned int d_spinIndex;
+
726
+
727 // storage for precomputing index maps
+
728 std::vector<dealii::types::global_dof_index>
+ +
730
+
731 // storage for precomputing index maps
+
732 std::vector<dealii::types::global_dof_index>
+ +
734 dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
+ + +
737
+
738 /// storage for deviceblas handle
+ +
740
+
741 /// flag for precomputing stiffness matrix contribution from
+
742 /// sum{Vext}-sum{Vnuc}
+ +
744
+
745 /// external potential correction quadrature id
+ +
747
+
748 /// Temporary storage for real and imaginary portions of the complex
+
749 /// wavefunction vectors
+ + + + +
754 };
+
+
755} // namespace dftfe
+
756#endif
+ +
Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
Definition scalapackWrapper.h:37
+
Definition FEBasisOperations.h:449
+
This class is the primary interface location of all other parts of the DFT-FE code for all steps invo...
Definition dft.h:108
+
Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete ...
Definition kohnShamDFTOperatorDevice.h:44
+ +
void computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)
Computes directional derivative of effective potential for gradient spin-density type exchange-correl...
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_nonLocalPseudoPotentialConstantsDevice
Definition kohnShamDFTOperatorDevice.h:573
+
void HX(distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::numberFP32 > &srcFloat, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool singlePrecCommun=false, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
+
dataTypes::number ** h_d_B
Definition kohnShamDFTOperatorDevice.h:610
+
dealii::TimerOutput computing_timer
Definition kohnShamDFTOperatorDevice.h:717
+
void computeNonLocalHamiltonianTimesX(const dataTypes::number *src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int numberWaveFunctions, dataTypes::number *dst, const bool skip1=false, const bool skip2=false)
implementation of non-local Hamiltonian matrix-vector product using non-local discretized projectors ...
+
std::vector< double > d_cellShapeFunctionGradientIntegralFlattened
finite-element cell level matrix to store dot product between shapeFunction gradients (\int(\nabla N_...
Definition kohnShamDFTOperatorDevice.h:689
+ +
dftfe::utils::deviceBlasHandle_t d_deviceBlasHandle
storage for deviceblas handle
Definition kohnShamDFTOperatorDevice.h:739
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_projectorKetTimesVectorDevice
Definition kohnShamDFTOperatorDevice.h:570
+
std::vector< double > d_vEffExternalPotCorrJxW
Definition kohnShamDFTOperatorDevice.h:670
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_cellHamMatrixTimesWaveMatrix
Definition kohnShamDFTOperatorDevice.h:539
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_projectorKetTimesVectorParFlattenedDevice
Definition kohnShamDFTOperatorDevice.h:564
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_cellHamiltonianMatrixExternalPotCorrFlattenedDevice
Definition kohnShamDFTOperatorDevice.h:533
+
dataTypes::number ** d_B
Definition kohnShamDFTOperatorDevice.h:609
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_kSquareTimesHalfVecDevice
Definition kohnShamDFTOperatorDevice.h:545
+
std::vector< unsigned int > d_projectorIdsParallelNumberingMap
Definition kohnShamDFTOperatorDevice.h:593
+
unsigned int d_totalPseudoWfcNonLocal
Definition kohnShamDFTOperatorDevice.h:582
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionGradientValuesNLPTransposed()
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > & getCellWaveFunctionMatrix()
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_cellJxWValuesDevice
Definition kohnShamDFTOperatorDevice.h:702
+
std::vector< dealii::types::global_dof_index > d_flattenedArrayMacroCellLocalProcIndexIdMapFlattened
Definition kohnShamDFTOperatorDevice.h:733
+
std::vector< int > d_indexMapFromPaddedNonLocalVecToParallelNonLocalVec
Definition kohnShamDFTOperatorDevice.h:596
+
dftClass< FEOrder, FEOrderElectro > * dftPtr
pointer to dft class
Definition kohnShamDFTOperatorDevice.h:650
+
void computeNonLocalProjectorKetTimesXTimesV(const dataTypes::number *src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int numberWaveFunctions)
implementation of non-local projector kets times psi product using non-local discretized projectors a...
+
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > d_locallyOwnedProcBoundaryNodesVectorDevice
Definition kohnShamDFTOperatorDevice.h:606
+
distributedCPUVec< double > d_sqrtMassVector
Definition kohnShamDFTOperatorDevice.h:665
+
std::vector< unsigned int > d_cellNodeIdMapNonLocalToLocal
Definition kohnShamDFTOperatorDevice.h:599
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionValuesTransposed(const bool use2pPlusOneGLQuad=false)
+
const unsigned int d_numberMacroCells
Definition kohnShamDFTOperatorDevice.h:706
+
dftfe::utils::MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE > d_DeviceFlattenedArrayMacroCellLocalProcIndexIdMapFlattened
Definition kohnShamDFTOperatorDevice.h:736
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_cellHamiltonianMatrixNonLocalFlattenedTransposeDevice
Definition kohnShamDFTOperatorDevice.h:558
+
const unsigned int d_numberNodesPerElement
Definition kohnShamDFTOperatorDevice.h:705
+
std::vector< unsigned int > d_macroCellSubCellMap
Definition kohnShamDFTOperatorDevice.h:707
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_vEffExternalPotCorrJxWDevice
Definition kohnShamDFTOperatorDevice.h:672
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_tempImagVec
Definition kohnShamDFTOperatorDevice.h:753
+
std::vector< dataTypes::number > d_cellHamiltonianMatrixNonLocalFlattenedTranspose
Definition kohnShamDFTOperatorDevice.h:555
+
unsigned int d_totalNonlocalAtomsCurrentProc
Definition kohnShamDFTOperatorDevice.h:580
+
void preComputeShapeFunctionGradientIntegrals(const unsigned int lpspQuadratureId, const bool onlyUpdateGradNiNjIntegral=false)
precompute shapefunction gradient integral
+
void computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)
Computes directional derivative of effective potential for local density type exchange-correlation fu...
+
distributedDeviceVec< dataTypes::number > & getParallelChebyBlockVector2Device()
+
void computeHamiltonianMatricesAllkpt(const unsigned int spinIndex, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
+
std::vector< dealii::types::global_dof_index > d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocal
Definition kohnShamDFTOperatorDevice.h:589
+
std::vector< double > d_vEff
Definition kohnShamDFTOperatorDevice.h:669
+
distributedDeviceVec< dataTypes::number > & getParallelProjectorKetTimesBlockVectorDevice()
+
bool d_isMallocCalled
Definition kohnShamDFTOperatorDevice.h:608
+
const unsigned int n_mpi_processes
Definition kohnShamDFTOperatorDevice.h:712
+
std::vector< double > d_cellJxWValues
Definition kohnShamDFTOperatorDevice.h:700
+
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > & getLocallyOwnedProcBoundaryNodesVectorDevice()
+
std::vector< unsigned int > d_pseudoWfcAccumNonlocalAtoms
Definition kohnShamDFTOperatorDevice.h:579
+
std::vector< unsigned int > d_normalCellIdToMacroCellIdMap
Definition kohnShamDFTOperatorDevice.h:602
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_tempRealVec
Definition kohnShamDFTOperatorDevice.h:751
+
unsigned int d_kPointIndex
Definition kohnShamDFTOperatorDevice.h:723
+
void reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)
sets the data member to appropriate kPoint Index
+
const unsigned int d_numQuadPoints
Definition kohnShamDFTOperatorDevice.h:677
+ +
std::vector< double > d_shapeFunctionValue
storage for shapefunctions
Definition kohnShamDFTOperatorDevice.h:692
+
void HX(distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
Compute discretized operator matrix times multi-vectors and add it to the existing dst vector works f...
+
dataTypes::number ** d_A
Definition kohnShamDFTOperatorDevice.h:609
+ +
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_shapeFunctionValueTransposedLpspDevice
Definition kohnShamDFTOperatorDevice.h:698
+
void HXCheby(distributedDeviceVec< dataTypes::number > &X, distributedDeviceVec< dataTypes::numberFP32 > &XFloat, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, distributedDeviceVec< dataTypes::number > &Y, bool mixedPrecflag=false, bool computePart1=false, bool computePart2=false)
+
distributedCPUVec< dataTypes::number > & getProjectorKetTimesVectorSingle()
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_vEffJxWDevice
Definition kohnShamDFTOperatorDevice.h:675
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_invSqrtMassVectorDevice
Definition kohnShamDFTOperatorDevice.h:667
+
const unsigned int this_mpi_process
Definition kohnShamDFTOperatorDevice.h:713
+ +
void computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential involving local-density exchange-correlation functionals.
+
unsigned int d_maxSingleAtomPseudoWfc
Definition kohnShamDFTOperatorDevice.h:583
+
const MPI_Comm mpi_communicator
Definition kohnShamDFTOperatorDevice.h:711
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getInverseJacobiansNLP()
+
void computeLocalHamiltonianTimesX(const dataTypes::number *src, const unsigned int numberWaveFunctions, dataTypes::number *dst, bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
implementation of matrix-vector product using cell-level stiffness matrices. works for both real and ...
+
std::vector< unsigned int > d_numberCellsAccumNonLocalAtoms
Definition kohnShamDFTOperatorDevice.h:587
+
void computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential involving local spin density exchange-correlation functionals.
+
void computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential for gradient-spin density type exchange-correlation functionals.
+
dftfe::utils::deviceBlasHandle_t & getDeviceBlasHandle()
+
std::vector< double > d_derExcWithSigmaTimesGradRhoJxW
Definition kohnShamDFTOperatorDevice.h:681
+
void computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)
Computes directional derivative of effective potential for local spin-density type exchange-correlati...
+
std::vector< unsigned int > d_nonlocalElemIdToLocalElemIdMap
Definition kohnShamDFTOperatorDevice.h:584
+ +
distributedCPUVec< dataTypes::number > & getParallelVecSingleComponent()
+
std::vector< dealii::types::global_dof_index > d_flattenedArrayCellLocalProcIndexIdMap
Definition kohnShamDFTOperatorDevice.h:729
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionValues()
+
std::vector< unsigned int > d_pseduoWfcNonLocalAtoms
Definition kohnShamDFTOperatorDevice.h:585
+
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > d_cellNodeIdMapNonLocalToLocalDevice
Definition kohnShamDFTOperatorDevice.h:601
+
distributedCPUVec< double > d_invSqrtMassVector
Definition kohnShamDFTOperatorDevice.h:665
+ +
std::vector< unsigned int > d_numberCellsNonLocalAtoms
Definition kohnShamDFTOperatorDevice.h:586
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionGradientIntegral()
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_cellHamiltonianMatrixNonLocalFlattenedConjugateDevice
Definition kohnShamDFTOperatorDevice.h:553
+
dftfe::utils::MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE > d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocalDevice
Definition kohnShamDFTOperatorDevice.h:592
+
const unsigned int d_numLocallyOwnedCells
Definition kohnShamDFTOperatorDevice.h:679
+
const MPI_Comm d_mpiCommParent
Definition kohnShamDFTOperatorDevice.h:710
+
dataTypes::number ** h_d_C
Definition kohnShamDFTOperatorDevice.h:610
+
distributedDeviceVec< dataTypes::number > & getParallelChebyBlockVectorDevice()
+
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost
Definition kohnShamDFTOperatorDevice.h:660
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionValuesNLPTransposed()
+
void computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential involving gradient density type exchange-correlation functionals.
+
dealii::ConditionalOStream pcout
Definition kohnShamDFTOperatorDevice.h:714
+
std::vector< unsigned int > d_macroCellIdToNormalCellIdMap
Definition kohnShamDFTOperatorDevice.h:603
+
std::vector< dataTypes::number > d_projectorKetTimesVectorAllCellsReduction
Definition kohnShamDFTOperatorDevice.h:575
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_derExcWithSigmaTimesGradRhoJxWDevice
Definition kohnShamDFTOperatorDevice.h:683
+
dataTypes::number ** d_C
Definition kohnShamDFTOperatorDevice.h:609
+
unsigned int d_spinIndex
Definition kohnShamDFTOperatorDevice.h:725
+
std::vector< double > d_nonLocalPseudoPotentialConstants
Definition kohnShamDFTOperatorDevice.h:571
+
void computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const unsigned int externalPotCorrQuadratureId)
Computes effective potential for external potential correction to phiTot.
+
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::DEVICE > > basisOperationsPtrDevice
Definition kohnShamDFTOperatorDevice.h:655
+
std::vector< double > d_vEffJxW
Definition kohnShamDFTOperatorDevice.h:673
+
void computeMassVector(const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)
Computes diagonal mass matrix.
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > & getShapeFunctionGradientIntegralElectro()
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_projectorKetTimesVectorAllCellsReductionDevice
Definition kohnShamDFTOperatorDevice.h:578
+
void computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)
Computes directional derivative of effective potential for gradient density type exchange-correlation...
+
void reinit(const unsigned int wavefunBlockSize, bool flag)
initializes parallel layouts and index maps required for HX, XtHX and creates a flattened array forma...
+
dftfe::utils::MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE > & getFlattenedArrayCellLocalProcIndexIdMap()
+
std::vector< double > d_shapeFunctionValueTransposed
Definition kohnShamDFTOperatorDevice.h:693
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_projectorKetTimesVectorAllCellsDevice
Definition kohnShamDFTOperatorDevice.h:567
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_cellHamiltonianMatrixFlattenedDevice
Definition kohnShamDFTOperatorDevice.h:536
+
kohnShamDFTOperatorDeviceClass(dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
+
bool d_isStiffnessMatrixExternalPotCorrComputed
Definition kohnShamDFTOperatorDevice.h:743
+
unsigned int d_totalNonlocalElems
Definition kohnShamDFTOperatorDevice.h:581
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_kpointCoordsVecDevice
Definition kohnShamDFTOperatorDevice.h:542
+
unsigned int d_numQuadPointsLpsp
Definition kohnShamDFTOperatorDevice.h:678
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE > d_cellHamMatrixTimesWaveMatrixNonLocalDevice
Definition kohnShamDFTOperatorDevice.h:561
+
dataTypes::number ** h_d_A
Definition kohnShamDFTOperatorDevice.h:610
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_shapeFunctionValueLpspDevice
Definition kohnShamDFTOperatorDevice.h:696
+
std::vector< dataTypes::number > d_cellHamiltonianMatrixNonLocalFlattenedConjugate
for non local
Definition kohnShamDFTOperatorDevice.h:550
+
std::vector< dataTypes::number > d_cellHamiltonianMatrixFlattened
finite-element cell level stiffness matrix with first dimension traversing the cell id(in the order o...
Definition kohnShamDFTOperatorDevice.h:531
+
unsigned int d_externalPotCorrQuadratureId
external potential correction quadrature id
Definition kohnShamDFTOperatorDevice.h:746
+
dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > d_projectorIdsParallelNumberingMapDevice
Definition kohnShamDFTOperatorDevice.h:595
+
dftfe::utils::MemoryStorage< int, dftfe::utils::MemorySpace::DEVICE > d_indexMapFromPaddedNonLocalVecToParallelNonLocalVecDevice
Definition kohnShamDFTOperatorDevice.h:598
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE > d_sqrtMassVectorDevice
Definition kohnShamDFTOperatorDevice.h:667
+
Definition MemoryStorage.h:33
+ + +
double number
Definition dftfeDataTypes.h:44
+ + +
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
Definition upfToxml.cc:37
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:99
+ +
+ + + + diff --git a/lapack__support_8h.html b/lapack__support_8h.html new file mode 100644 index 000000000..b373586bb --- /dev/null +++ b/lapack__support_8h.html @@ -0,0 +1,175 @@ + + + + + + + +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 char * dftfe::LAPACKSupport::state_name (State s)
 
const char * dftfe::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..26b98ee45 --- /dev/null +++ b/lapack__support_8h_source.html @@ -0,0 +1,370 @@ + + + + + + + +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 */
+
192 DeclException2(ExcErrorCode,
+
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 */
+
213 DeclException1(ExcProperty,
+
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 */
+ +
223 ExcMissing,
+
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
+ +
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
+
int blas_int
Definition lapack_support.h:35
+
Definition upfToxml.cc:37
+
+ + + + diff --git a/library_m_d_i_8h.html b/library_m_d_i_8h.html new file mode 100644 index 000000000..900cf3f5c --- /dev/null +++ b/library_m_d_i_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..cc8e9e6af --- /dev/null +++ b/library_m_d_i_8h_source.html @@ -0,0 +1,133 @@ + + + + + + + +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..ffeaf633e --- /dev/null +++ b/linear_algebra_operations_8h.html @@ -0,0 +1,174 @@ + + + + + + + +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"
+
+

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 >
std::pair< double, double > dftfe::linearAlgebraOperations::lanczosLowerUpperBoundEigenSpectrum (operatorDFTClass &operatorMatrix, const distributedCPUMultiVec< T > &vect, const dftParameters &dftParams)
 Calculates an estimate of lower and upper bounds of a matrix using k-step Lanczos method.
 
template<typename T >
void dftfe::linearAlgebraOperations::chebyshevFilter (operatorDFTClass &operatorMatrix, distributedCPUMultiVec< T > &X, const unsigned int numberComponents, 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::chebyshevFilterOpt (operatorDFTClass &operatorMatrix, distributedCPUMultiVec< T > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix, const unsigned int numberComponents, const unsigned int m, const double a, const double b, const double a0)
 
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 &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 &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 &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 &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 &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 &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.
 
+
+ + + + diff --git a/linear_algebra_operations_8h_source.html b/linear_algebra_operations_8h_source.html new file mode 100644 index 000000000..9bd88a0b5 --- /dev/null +++ b/linear_algebra_operations_8h_source.html @@ -0,0 +1,937 @@ + + + + + + + +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
+
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 void
+
49 dsymv_(const char * UPLO,
+
50 const unsigned int *N,
+
51 const double * alpha,
+
52 const double * A,
+
53 const unsigned int *LDA,
+
54 const double * X,
+
55 const unsigned int *INCX,
+
56 const double * beta,
+
57 double * C,
+
58 const unsigned int *INCY);
+
59 void
+
60 dgesv_(int * n,
+
61 int * nrhs,
+
62 double *a,
+
63 int * lda,
+
64 int * ipiv,
+
65 double *b,
+
66 int * ldb,
+
67 int * info);
+
68 void
+
69 dsysv_(const char *UPLO,
+
70 const int * n,
+
71 const int * nrhs,
+
72 double * a,
+
73 const int * lda,
+
74 int * ipiv,
+
75 double * b,
+
76 const int * ldb,
+
77 double * work,
+
78 const int * lwork,
+
79 int * info);
+
80 void
+
81 dscal_(const unsigned int *n,
+
82 const double * alpha,
+
83 double * x,
+
84 const unsigned int *inc);
+
85 void
+
86 sscal_(const unsigned int *n,
+
87 const float * alpha,
+
88 float * x,
+
89 const unsigned int *inc);
+
90 void
+
91 zscal_(const unsigned int * n,
+
92 const std::complex<double> *alpha,
+
93 std::complex<double> * x,
+
94 const unsigned int * inc);
+
95 void
+
96 zdscal_(const unsigned int * n,
+
97 const double * alpha,
+
98 std::complex<double> *x,
+
99 const unsigned int * inc);
+
100 void
+
101 daxpy_(const unsigned int *n,
+
102 const double * alpha,
+
103 double * x,
+
104 const unsigned int *incx,
+
105 double * y,
+
106 const unsigned int *incy);
+
107 void
+
108 dgemm_(const char * transA,
+
109 const char * transB,
+
110 const unsigned int *m,
+
111 const unsigned int *n,
+
112 const unsigned int *k,
+
113 const double * alpha,
+
114 const double * A,
+
115 const unsigned int *lda,
+
116 const double * B,
+
117 const unsigned int *ldb,
+
118 const double * beta,
+
119 double * C,
+
120 const unsigned int *ldc);
+
121 void
+
122 sgemm_(const char * transA,
+
123 const char * transB,
+
124 const unsigned int *m,
+
125 const unsigned int *n,
+
126 const unsigned int *k,
+
127 const float * alpha,
+
128 const float * A,
+
129 const unsigned int *lda,
+
130 const float * B,
+
131 const unsigned int *ldb,
+
132 const float * beta,
+
133 float * C,
+
134 const unsigned int *ldc);
+
135 void
+
136 dsyevd_(const char * jobz,
+
137 const char * uplo,
+
138 const unsigned int *n,
+
139 double * A,
+
140 const unsigned int *lda,
+
141 double * w,
+
142 double * work,
+
143 const unsigned int *lwork,
+
144 int * iwork,
+
145 const unsigned int *liwork,
+
146 int * info);
+
147 void
+
148 dsygvx_(const int * itype,
+
149 const char * jobz,
+
150 const char * range,
+
151 const char * uplo,
+
152 const int * n,
+
153 double * a,
+
154 const int * lda,
+
155 double * b,
+
156 const int * ldb,
+
157 const double *vl,
+
158 const double *vu,
+
159 const int * il,
+
160 const int * iu,
+
161 const double *abstol,
+
162 int * m,
+
163 double * w,
+
164 double * z,
+
165 const int * ldz,
+
166 double * work,
+
167 const int * lwork,
+
168 int * iwork,
+
169 int * ifail,
+
170 int * info);
+
171 void
+
172 dsyevx_(const char * jobz,
+
173 const char * range,
+
174 const char * uplo,
+
175 const int * n,
+
176 double * a,
+
177 const int * lda,
+
178 const double *vl,
+
179 const double *vu,
+
180 const int * il,
+
181 const int * iu,
+
182 const double *abstol,
+
183 int * m,
+
184 double * w,
+
185 double * z,
+
186 const int * ldz,
+
187 double * work,
+
188 const int * lwork,
+
189 int * iwork,
+
190 int * ifail,
+
191 int * info);
+
192 double
+
193 dlamch_(const char *cmach);
+
194 void
+
195 dsyevr_(const char * jobz,
+
196 const char * range,
+
197 const char * uplo,
+
198 const unsigned int *n,
+
199 double * A,
+
200 const unsigned int *lda,
+
201 const double * vl,
+
202 const double * vu,
+
203 const unsigned int *il,
+
204 const unsigned int *iu,
+
205 const double * abstol,
+
206 const unsigned int *m,
+
207 double * w,
+
208 double * Z,
+
209 const unsigned int *ldz,
+
210 unsigned int * isuppz,
+
211 double * work,
+
212 const int * lwork,
+
213 int * iwork,
+
214 const int * liwork,
+
215 int * info);
+
216 void
+
217 dsyrk_(const char * uplo,
+
218 const char * trans,
+
219 const unsigned int *n,
+
220 const unsigned int *k,
+
221 const double * alpha,
+
222 const double * A,
+
223 const unsigned int *lda,
+
224 const double * beta,
+
225 double * C,
+
226 const unsigned int *ldc);
+
227 void
+
228 dsyr_(const char * uplo,
+
229 const unsigned int *n,
+
230 const double * alpha,
+
231 const double * X,
+
232 const unsigned int *incx,
+
233 double * A,
+
234 const unsigned int *lda);
+
235 void
+
236 dsyr2_(const char * uplo,
+
237 const unsigned int *n,
+
238 const double * alpha,
+
239 const double * x,
+
240 const unsigned int *incx,
+
241 const double * y,
+
242 const unsigned int *incy,
+
243 double * a,
+
244 const unsigned int *lda);
+
245 void
+
246 dcopy_(const unsigned int *n,
+
247 const double * x,
+
248 const unsigned int *incx,
+
249 double * y,
+
250 const unsigned int *incy);
+
251 void
+
252 scopy_(const unsigned int *n,
+
253 const float * x,
+
254 const unsigned int *incx,
+
255 float * y,
+
256 const unsigned int *incy);
+
257 void
+
258 zgemm_(const char * transA,
+
259 const char * transB,
+
260 const unsigned int * m,
+
261 const unsigned int * n,
+
262 const unsigned int * k,
+
263 const std::complex<double> *alpha,
+
264 const std::complex<double> *A,
+
265 const unsigned int * lda,
+
266 const std::complex<double> *B,
+
267 const unsigned int * ldb,
+
268 const std::complex<double> *beta,
+
269 std::complex<double> * C,
+
270 const unsigned int * ldc);
+
271 void
+
272 cgemm_(const char * transA,
+
273 const char * transB,
+
274 const unsigned int * m,
+
275 const unsigned int * n,
+
276 const unsigned int * k,
+
277 const std::complex<float> *alpha,
+
278 const std::complex<float> *A,
+
279 const unsigned int * lda,
+
280 const std::complex<float> *B,
+
281 const unsigned int * ldb,
+
282 const std::complex<float> *beta,
+
283 std::complex<float> * C,
+
284 const unsigned int * ldc);
+
285 void
+
286 zheevd_(const char * jobz,
+
287 const char * uplo,
+
288 const unsigned int * n,
+
289 std::complex<double> *A,
+
290 const unsigned int * lda,
+
291 double * w,
+
292 std::complex<double> *work,
+
293 const unsigned int * lwork,
+
294 double * rwork,
+
295 const unsigned int * lrwork,
+
296 int * iwork,
+
297 const unsigned int * liwork,
+
298 int * info);
+
299 void
+
300 zheevr_(const char * jobz,
+
301 const char * range,
+
302 const char * uplo,
+
303 const unsigned int * n,
+
304 std::complex<double> *A,
+
305 const unsigned int * lda,
+
306 const double * vl,
+
307 const double * vu,
+
308 const unsigned int * il,
+
309 const unsigned int * iu,
+
310 const double * abstol,
+
311 const unsigned int * m,
+
312 double * w,
+
313 std::complex<double> *Z,
+
314 const unsigned int * ldz,
+
315 unsigned int * isuppz,
+
316 std::complex<double> *work,
+
317 const int * lwork,
+
318 double * rwork,
+
319 const int * lrwork,
+
320 int * iwork,
+
321 const int * liwork,
+
322 int * info);
+
323 void
+
324 zherk_(const char * uplo,
+
325 const char * trans,
+
326 const unsigned int * n,
+
327 const unsigned int * k,
+
328 const double * alpha,
+
329 const std::complex<double> *A,
+
330 const unsigned int * lda,
+
331 const double * beta,
+
332 std::complex<double> * C,
+
333 const unsigned int * ldc);
+
334 void
+
335 zcopy_(const unsigned int * n,
+
336 const std::complex<double> *x,
+
337 const unsigned int * incx,
+
338 std::complex<double> * y,
+
339 const unsigned int * incy);
+
340 void
+
341 zdotc_(std::complex<double> * C,
+
342 const int * N,
+
343 const std::complex<double> *X,
+
344 const int * INCX,
+
345 const std::complex<double> *Y,
+
346 const int * INCY);
+
347 double
+
348 ddot_(const unsigned int *N,
+
349 const double * X,
+
350 const unsigned int *INCX,
+
351 const double * Y,
+
352 const unsigned int *INCY);
+
353
+
354 double
+
355 dnrm2_(const unsigned int *n, const double *x, const unsigned int *incx);
+
356 void
+
357 zaxpy_(const unsigned int * n,
+
358 const std::complex<double> *alpha,
+
359 std::complex<double> * x,
+
360 const unsigned int * incx,
+
361 std::complex<double> * y,
+
362 const unsigned int * incy);
+
363 void
+
364 dpotrf_(const char * uplo,
+
365 const unsigned int *n,
+
366 double * a,
+
367 const unsigned int *lda,
+
368 int * info);
+
369 void
+
370 zpotrf_(const char * uplo,
+
371 const unsigned int * n,
+
372 std::complex<double> *a,
+
373 const unsigned int * lda,
+
374 int * info);
+
375 void
+
376 dtrtri_(const char * uplo,
+
377 const char * diag,
+
378 const unsigned int *n,
+
379 double * a,
+
380 const unsigned int *lda,
+
381 int * info);
+
382 void
+
383 ztrtri_(const char * uplo,
+
384 const char * diag,
+
385 const unsigned int * n,
+
386 std::complex<double> *a,
+
387 const unsigned int * lda,
+
388 int * info);
+
389
+
390 // LU decomoposition of a general matrix
+
391 void
+
392 dgetrf_(int *M, int *N, double *A, int *lda, int *IPIV, int *INFO);
+
393
+
394 // generate inverse of a matrix given its LU decomposition
+
395 void
+
396 dgetri_(int * N,
+
397 double *A,
+
398 int * lda,
+
399 int * IPIV,
+
400 double *WORK,
+
401 int * lwork,
+
402 int * INFO);
+
403 }
+
404#endif
+
405
+
406 inline void
+
+
407 xgemm(const char * transA,
+
408 const char * transB,
+
409 const unsigned int *m,
+
410 const unsigned int *n,
+
411 const unsigned int *k,
+
412 const double * alpha,
+
413 const double * A,
+
414 const unsigned int *lda,
+
415 const double * B,
+
416 const unsigned int *ldb,
+
417 const double * beta,
+
418 double * C,
+
419 const unsigned int *ldc)
+
420 {
+
421 dgemm_(transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+
422 }
+
+
423
+
424 inline void
+
+
425 xgemm(const char * transA,
+
426 const char * transB,
+
427 const unsigned int *m,
+
428 const unsigned int *n,
+
429 const unsigned int *k,
+
430 const float * alpha,
+
431 const float * A,
+
432 const unsigned int *lda,
+
433 const float * B,
+
434 const unsigned int *ldb,
+
435 const float * beta,
+
436 float * C,
+
437 const unsigned int *ldc)
+
438 {
+
439 sgemm_(transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+
440 }
+
+
441
+
442 inline void
+
+
443 xgemm(const char * transA,
+
444 const char * transB,
+
445 const unsigned int * m,
+
446 const unsigned int * n,
+
447 const unsigned int * k,
+
448 const std::complex<double> *alpha,
+
449 const std::complex<double> *A,
+
450 const unsigned int * lda,
+
451 const std::complex<double> *B,
+
452 const unsigned int * ldb,
+
453 const std::complex<double> *beta,
+
454 std::complex<double> * C,
+
455 const unsigned int * ldc)
+
456 {
+
457 zgemm_(transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+
458 }
+
+
459
+
460 inline void
+
+
461 xgemm(const char * transA,
+
462 const char * transB,
+
463 const unsigned int * m,
+
464 const unsigned int * n,
+
465 const unsigned int * k,
+
466 const std::complex<float> *alpha,
+
467 const std::complex<float> *A,
+
468 const unsigned int * lda,
+
469 const std::complex<float> *B,
+
470 const unsigned int * ldb,
+
471 const std::complex<float> *beta,
+
472 std::complex<float> * C,
+
473 const unsigned int * ldc)
+
474 {
+
475 cgemm_(transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+
476 }
+
+
477
+
478
+
479 inline void
+
+
480 xscal(const unsigned int *n,
+
481 const double * alpha,
+
482 double * x,
+
483 const unsigned int *inc)
+
484 {
+
485 dscal_(n, alpha, x, inc);
+
486 }
+
+
487
+
488 inline void
+
+
489 xscal(const unsigned int * n,
+
490 const std::complex<double> *alpha,
+
491 std::complex<double> * x,
+
492 const unsigned int * inc)
+
493 {
+
494 zscal_(n, alpha, x, inc);
+
495 }
+
+
496
+
497 inline void
+
+
498 xcopy(const unsigned int *n,
+
499 const double * x,
+
500 const unsigned int *incx,
+
501 double * y,
+
502 const unsigned int *incy)
+
503 {
+
504 dcopy_(n, x, incx, y, incy);
+
505 }
+
+
506
+
507 inline void
+
+
508 xcopy(const unsigned int * n,
+
509 const std::complex<double> *x,
+
510 const unsigned int * incx,
+
511 std::complex<double> * y,
+
512 const unsigned int * incy)
+
513 {
+
514 zcopy_(n, x, incx, y, incy);
+
515 }
+
+
516
+
517 /**
+
518 * @brief Contains linear algebra functions used in the implementation of an eigen solver
+
519 *
+
520 * @author Phani Motamarri, Sambit Das
+
521 */
+
+
522 namespace linearAlgebraOperations
+
523 {
+
524 /** @brief Compute inverse of serial matrix using LAPACK LU factorization
+
525 */
+
526 void
+
527 inverse(double *A, int N);
+
528
+
529 /** @brief Calculates an estimate of lower and upper bounds of a matrix using
+
530 * k-step Lanczos method.
+
531 *
+
532 * @param operatorMatrix An object which has access to the given matrix
+
533 * @param vect A dummy vector
+
534 * @return std::pair<double,double> An estimate of the lower and upper bound of the given matrix
+
535 */
+
536 template <typename T>
+
537 std::pair<double, double>
+ +
539 const distributedCPUMultiVec<T> &vect,
+
540 const dftParameters &dftParams);
+
541
+
542
+
543 /** @brief Apply Chebyshev filter to a given subspace
+
544 *
+
545 * @param[in] operatorMatrix An object which has access to the given matrix
+
546 * @param[in,out] X Given subspace as a dealii array representing multiple
+
547 * fields as a flattened array. In-place update of the given subspace.
+
548 * @param[in] numberComponents Number of multiple-fields
+
549 * @param[in] m Chebyshev polynomial degree
+
550 * @param[in] a lower bound of unwanted spectrum
+
551 * @param[in] b upper bound of unwanted spectrum
+
552 * @param[in] a0 lower bound of wanted spectrum
+
553 */
+
554 template <typename T>
+
555 void
+ + +
558 const unsigned int numberComponents,
+
559 const unsigned int m,
+
560 const double a,
+
561 const double b,
+
562 const double a0);
+
563
+
564
+
565 template <typename T>
+
566 void
+ + +
569 std::vector<dataTypes::number> &cellWaveFunctionMatrix,
+
570 const unsigned int numberComponents,
+
571 const unsigned int m,
+
572 const double a,
+
573 const double b,
+
574 const double a0);
+
575
+
576
+
577
+
578 /** @brief Orthogonalize given subspace using GramSchmidt orthogonalization
+
579 *
+
580 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
581 * In-place update of the given subspace
+
582 * @param[in] numberComponents Number of multiple-fields
+
583 * @param[in] mpiComm global communicator
+
584 */
+
585 template <typename T>
+
586 void
+ +
588 const unsigned int numberComponents,
+
589 const unsigned int numberDofs,
+
590 const MPI_Comm & mpiComm);
+
591
+
592
+
593 /** @brief Orthogonalize given subspace using Lowden orthogonalization for double data-type
+
594 * (serial version using LAPACK)
+
595 *
+
596 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
597 * In-place update of the given subspace
+
598 * @param[in] numberComponents Number of multiple-fields
+
599 * @param[in] mpiComm global communicator
+
600 * @return flag indicating success/failure. 1 for failure, 0 for success
+
601 */
+
602 unsigned int
+
603 lowdenOrthogonalization(std::vector<dataTypes::number> &X,
+
604 const unsigned int numberComponents,
+
605 const MPI_Comm & mpiComm,
+
606 const dftParameters & dftParams);
+
607
+
608
+
609 /** @brief Orthogonalize given subspace using Pseudo-Gram-Schmidt orthogonalization
+
610 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
611 *
+
612 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
613 * In-place update of the given subspace
+
614 * @param[in] numberComponents Number of multiple-fields
+
615 * @param[in] mpiCommParent parent communicator
+
616 * @param[in] interBandGroupComm interpool communicator for parallelization
+
617 * over band groups
+
618 * @param[in] mpiComm domain decomposition communicator
+
619 *
+
620 * @return flag indicating success/failure. 1 for failure, 0 for success
+
621 */
+
622 template <typename T>
+
623 unsigned int
+ +
625 T * X,
+
626 const unsigned int numberComponents,
+
627 const unsigned int numberDofs,
+
628 const MPI_Comm & mpiCommParent,
+
629 const MPI_Comm & interBandGroupComm,
+
630 const MPI_Comm & mpiCommDomain,
+
631 const bool useMixedPrec,
+
632 const dftParameters &dftParams);
+
633
+
634
+
635 /** @brief Compute Rayleigh-Ritz projection
+
636 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
637 *
+
638 * @param[in] operatorMatrix An object which has access to the given matrix
+
639 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
640 * In-place rotated subspace
+
641 * @param[in] numberComponents Number of vectors
+
642 * @param[in] mpiCommDomain parent communicator
+
643 * @param[in] interBandGroupComm interpool communicator for parallelization
+
644 * over band groups
+
645 * @param[in] mpiCommDomain domain decomposition communicator
+
646 * @param[out] eigenValues of the Projected Hamiltonian
+
647 */
+
648 template <typename T>
+
649 void
+ +
651 elpaScalaManager & elpaScala,
+
652 T * X,
+
653 const unsigned int numberComponents,
+
654 const unsigned int numberDofs,
+
655 const MPI_Comm & mpiCommParent,
+
656 const MPI_Comm & interBandGroupComm,
+
657 const MPI_Comm & mpiCommDomain,
+
658 std::vector<double> &eigenValues,
+
659 const bool useMixedPrec,
+
660 const dftParameters &dftParams);
+
661
+
662
+
663 /** @brief Compute Rayleigh-Ritz projection
+
664 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
665 *
+
666 * @param[in] operatorMatrix An object which has access to the given matrix
+
667 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
668 * In-place rotated subspace
+
669 * @param[in] numberComponents Number of vectors
+
670 * @param[in] mpiCommParent parent mpi communicator
+
671 * @param[in] interBandGroupComm interpool communicator for parallelization
+
672 * over band groups
+
673 * @param[in] mpiCommDomain domain decomposition communicator
+
674 * @param[out] eigenValues of the Projected Hamiltonian
+
675 */
+
676 template <typename T>
+
677 void
+ +
679 elpaScalaManager & elpaScala,
+
680 T * X,
+
681 const unsigned int numberComponents,
+
682 const unsigned int numberDofs,
+
683 const MPI_Comm & mpiCommParent,
+
684 const MPI_Comm & interBandGroupComm,
+
685 const MPI_Comm & mpiCommDomain,
+
686 std::vector<double> &eigenValues,
+
687 const dftParameters &dftParams,
+
688 const bool doCommAfterBandParal = true);
+
689
+
690 /** @brief Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization
+
691 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
692 *
+
693 * @param[in] operatorMatrix An object which has access to the given matrix
+
694 * @param[in] X Given subspace as flattened array of multi-vectors.
+
695 * @param[out] Y rotated subspace of top states
+
696 * @param[in] numberComponents Number of vectors
+
697 * @param[in] numberCoreStates Number of core states to be used for
+
698 * spectrum splitting
+
699 * @param[in] mpiCommParent parent mpi communicator
+
700 * @param[in] interBandGroupComm interpool communicator for parallelization
+
701 * over band groups
+
702 * @param[in] mpiCommDomain domain decomposition communicator
+
703 * @param[out] eigenValues of the Projected Hamiltonian
+
704 */
+
705 template <typename T>
+
706 void
+ +
708 elpaScalaManager & elpaScala,
+
709 T * X,
+
710 T * Y,
+
711 const unsigned int numberComponents,
+
712 const unsigned int numberDofs,
+
713 const unsigned int numberCoreStates,
+
714 const MPI_Comm & mpiCommParent,
+
715 const MPI_Comm & interBandGroupComm,
+
716 const MPI_Comm & mpiCommDomain,
+
717 const bool useMixedPrec,
+
718 std::vector<double> &eigenValues,
+
719 const dftParameters &dftParams);
+
720
+
721
+
722 /** @brief Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization
+
723 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
724 *
+
725 * @param[in] operatorMatrix An object which has access to the given matrix
+
726 * @param[in] X Given subspace as flattened array of multi-vectors.
+
727 * @param[out] Y rotated subspace of top states
+
728 * @param[in] numberComponents Number of vectors
+
729 * @param[in] numberCoreStates Number of core states to be used for
+
730 * spectrum splitting
+
731 * @param[in] mpiCommParent parent mpi communicator
+
732 * @param[in] interBandGroupComm interpool communicator for parallelization
+
733 * over band groups
+
734 * @param[in] mpiCommDomain domain decomposition communicator
+
735 * @param[out] eigenValues of the Projected Hamiltonian
+
736 */
+
737 template <typename T>
+
738 void
+ +
740 elpaScalaManager & elpaScala,
+
741 const T * X,
+
742 T * Y,
+
743 const unsigned int numberComponents,
+
744 const unsigned int numberDofs,
+
745 const unsigned int numberCoreStates,
+
746 const MPI_Comm & mpiCommParent,
+
747 const MPI_Comm & interBandGroupComm,
+
748 const MPI_Comm & mpiCommDomain,
+
749 const bool useMixedPrec,
+
750 std::vector<double> &eigenValues,
+
751 const dftParameters &dftParams);
+
752
+
753
+
754 /** @brief Compute residual norm associated with eigenValue problem of the given operator
+
755 *
+
756 * @param[in] operatorMatrix An object which has access to the given matrix
+
757 * @param[in] X Given subspace as STL vector of dealii vectors
+
758 * @param[in] eigenValues eigenValues of the operator
+
759 * @param[in] mpiCommParent parent mpi communicator
+
760 * @param[in] mpiCommDomain domain decomposition communicator
+
761 * @param[out] residualNorms of the eigen Value problem
+
762 */
+
763 template <typename T>
+
764 void
+ +
766 T * X,
+
767 const std::vector<double> &eigenValues,
+
768 const unsigned int numberComponents,
+
769 const unsigned int numberDofs,
+
770 const MPI_Comm & mpiCommParent,
+
771 const MPI_Comm & mpiCommDomain,
+
772 const MPI_Comm & interBandGroupComm,
+
773 std::vector<double> & residualNorm,
+
774 const dftParameters & dftParams);
+
775
+
776 /** @brief Compute first order response in density matrix with respect to perturbation in the Hamiltonian.
+
777 * Perturbation is computed in the eigenbasis.
+
778 */
+
779 template <typename T>
+
780 void
+ +
782 operatorDFTClass & operatorMatrix,
+
783 T * X,
+
784 const unsigned int N,
+
785 const unsigned int numberLocalDofs,
+
786 const MPI_Comm & mpiCommParent,
+
787 const MPI_Comm & mpiCommDomain,
+
788 const MPI_Comm & interBandGroupComm,
+
789 const std::vector<double> &eigenValues,
+
790 const double fermiEnergy,
+
791 std::vector<double> & densityMatDerFermiEnergy,
+
792 elpaScalaManager & elpaScala,
+
793 const dftParameters & dftParams);
+
794
+
795
+
796 } // namespace linearAlgebraOperations
+
+
797
+
798} // namespace dftfe
+
799#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
+
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:39
+ + + +
void dgesv_(int *N, int *NRHS, double *A, int *LDA, int *IPIV, double *B, int *LDB, int *INFO)
+
void inverse(double *A, int N)
Compute inverse of serial matrix using LAPACK LU factorization.
+
void rayleighRitzGEP(operatorDFTClass &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 rayleighRitz(operatorDFTClass &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 computeEigenResidualNorm(operatorDFTClass &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 chebyshevFilterOpt(operatorDFTClass &operatorMatrix, distributedCPUMultiVec< T > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix, const unsigned int numberComponents, const unsigned int m, const double a, const double b, const double a0)
+
void chebyshevFilter(operatorDFTClass &operatorMatrix, distributedCPUMultiVec< T > &X, const unsigned int numberComponents, const unsigned int m, const double a, const double b, const double a0)
Apply Chebyshev filter to a given subspace.
+
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 &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....
+
std::pair< double, double > lanczosLowerUpperBoundEigenSpectrum(operatorDFTClass &operatorMatrix, const distributedCPUMultiVec< T > &vect, const dftParameters &dftParams)
Calculates an estimate of lower and upper bounds of a matrix using k-step Lanczos method.
+
void rayleighRitzGEPSpectrumSplitDirect(operatorDFTClass &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...
+
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...
+
void rayleighRitzSpectrumSplitDirect(operatorDFTClass &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...
+
Definition upfToxml.cc:37
+
void xcopy(const unsigned int *n, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)
Definition linearAlgebraOperations.h:498
+
void xscal(const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)
Definition linearAlgebraOperations.h:480
+
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:407
+ + + + +
+ + + + diff --git a/linear_algebra_operations_device_8h.html b/linear_algebra_operations_device_8h.html new file mode 100644 index 000000000..0fdbb7d8f --- /dev/null +++ b/linear_algebra_operations_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..73fce7f1a --- /dev/null +++ b/linear_algebra_operations_device_8h_source.html @@ -0,0 +1,515 @@ + + + + + + + +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 <operatorDevice.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 Computes Sc=X^{T}*Xc.
+
71 *
+
72 *
+
73 */
+
74 void
+
75 fillParallelOverlapMatScalapack(
+
76 const dataTypes::number * X,
+
77 const unsigned int M,
+
78 const unsigned int N,
+ +
80 const MPI_Comm & mpiCommDomain,
+
81 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
82 const MPI_Comm & interBandGroupComm,
+
83 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
85 const dftParameters & dftParams);
+
86
+
87
+
88
+
89 /** @brief Computes Sc=X^{T}*Xc.
+
90 *
+
91 *
+
92 */
+
93 void
+
94 fillParallelOverlapMatScalapackAsyncComputeCommun(
+
95 const dataTypes::number * X,
+
96 const unsigned int M,
+
97 const unsigned int N,
+ +
99 const MPI_Comm & mpiCommDomain,
+
100 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
101 const MPI_Comm & interBandGroupComm,
+
102 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
104 const dftParameters & dftParams);
+
105
+
106
+
107
+
108 /** @brief Computes Sc=X^{T}*Xc.
+
109 *
+
110 *
+
111 */
+
112 void
+
113 fillParallelOverlapMatMixedPrecScalapackAsyncComputeCommun(
+
114 const dataTypes::number * X,
+
115 const unsigned int M,
+
116 const unsigned int N,
+ +
118 const MPI_Comm & mpiCommDomain,
+
119 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
120 const MPI_Comm & interBandGroupComm,
+
121 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
123 const dftParameters & dftParams);
+
124
+
125 /** @brief Computes Sc=X^{T}*Xc.
+
126 *
+
127 *
+
128 */
+
129 void
+
130 fillParallelOverlapMatMixedPrecCommunScalapackAsyncComputeCommun(
+
131 const dataTypes::number * X,
+
132 const unsigned int M,
+
133 const unsigned int N,
+ +
135 const MPI_Comm & mpiCommDomain,
+
136 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
137 const MPI_Comm & interBandGroupComm,
+
138 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
140 const dftParameters & dftParams);
+
141
+
142 /** @brief Computes Sc=X^{T}*Xc.
+
143 *
+
144 *
+
145 */
+
146 void
+
147 fillParallelOverlapMatMixedPrecScalapack(
+
148 const dataTypes::number * X,
+
149 const unsigned int M,
+
150 const unsigned int N,
+ +
152 const MPI_Comm & mpiCommDomain,
+
153 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
154 const MPI_Comm & interBandGroupComm,
+
155 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
157 const dftParameters & dftParams);
+
158
+
159
+
160
+
161 /** @brief CGS orthogonalization
+
162 */
+
163 void
+ +
165 elpaScalaManager & elpaScala,
+
166 dataTypes::number * X,
+
167 const unsigned int M,
+
168 const unsigned int N,
+
169 const MPI_Comm & mpiCommParent,
+
170 const MPI_Comm & mpiCommDomain,
+
171 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
172 const MPI_Comm & interBandGroupComm,
+ +
174 const dftParameters & dftParams,
+
175 const bool useMixedPrecOverall = false);
+
176
+
177 void
+
178 subspaceRotationScalapack(
+
179 dataTypes::number * X,
+
180 const unsigned int M,
+
181 const unsigned int N,
+ +
183 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
184 const MPI_Comm & mpiCommDomain,
+
185 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
186 const MPI_Comm & interBandGroupComm,
+
187 const dftfe::ScaLAPACKMatrix<dataTypes::number> &rotationMatPar,
+
188 const dftParameters & dftParams,
+
189 const bool rotationMatTranspose = false,
+
190 const bool isRotationMatLowerTria = false);
+
191
+
192
+
193 void
+
194 subspaceRotationSpectrumSplitScalapack(
+
195 const dataTypes::number * X,
+
196 dataTypes::number * XFrac,
+
197 const unsigned int M,
+
198 const unsigned int N,
+
199 const unsigned int Nfr,
+ +
201 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
202 const MPI_Comm & mpiCommDomain,
+
203 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
204 const dftfe::ScaLAPACKMatrix<dataTypes::number> &rotationMatPar,
+
205 const dftParameters & dftParams,
+
206 const bool rotationMatTranspose = false);
+
207
+
208 void
+
209 subspaceRotationCGSMixedPrecScalapack(
+
210 dataTypes::number * X,
+
211 const unsigned int M,
+
212 const unsigned int N,
+ +
214 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
215 const MPI_Comm & mpiCommDomain,
+
216 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
217 const MPI_Comm & interBandGroupComm,
+
218 const dftfe::ScaLAPACKMatrix<dataTypes::number> &rotationMatPar,
+
219 const dftParameters & dftParams,
+
220 const bool rotationMatTranspose = false);
+
221
+
222
+
223 void
+
224 subspaceRotationRRMixedPrecScalapack(
+
225 dataTypes::number * X,
+
226 const unsigned int M,
+
227 const unsigned int N,
+ +
229 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
230 const MPI_Comm & mpiCommDomain,
+
231 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
232 const MPI_Comm & interBandGroupComm,
+
233 const dftfe::ScaLAPACKMatrix<dataTypes::number> &rotationMatPar,
+
234 const dftParameters & dftParams,
+
235 const bool rotationMatTranspose = false);
+
236
+
237
+
238 void
+ +
240 operatorDFTDeviceClass & operatorMatrix,
+
241 elpaScalaManager & elpaScala,
+
242 dataTypes::number * X,
+
243 distributedDeviceVec<dataTypes::number> & Xb,
+
244 distributedDeviceVec<dataTypes::numberFP32> &floatXb,
+
245 distributedDeviceVec<dataTypes::number> & HXb,
+
246 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
247 const unsigned int M,
+
248 const unsigned int N,
+
249 const MPI_Comm & mpiCommParent,
+
250 const MPI_Comm & mpiCommDomain,
+
251 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
252 const MPI_Comm & interBandGroupComm,
+
253 std::vector<double> & eigenValues,
+ +
255 const dftParameters & dftParams,
+
256 const bool useMixedPrecOverall = false);
+
257
+
258 void
+ +
260 operatorDFTDeviceClass & operatorMatrix,
+
261 elpaScalaManager & elpaScala,
+
262 dataTypes::number * X,
+
263 distributedDeviceVec<dataTypes::number> & Xb,
+
264 distributedDeviceVec<dataTypes::numberFP32> &floatXb,
+
265 distributedDeviceVec<dataTypes::number> & HXb,
+
266 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
267 const unsigned int M,
+
268 const unsigned int N,
+
269 const MPI_Comm & mpiCommParent,
+
270 const MPI_Comm & mpiCommDomain,
+
271 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
272 const MPI_Comm & interBandGroupComm,
+
273 std::vector<double> & eigenValues,
+ +
275 const dftParameters & dftParams,
+
276 const bool useMixedPrecOverall = false);
+
277
+
278 void
+ +
280 operatorDFTDeviceClass & operatorMatrix,
+
281 elpaScalaManager & elpaScala,
+
282 dataTypes::number * X,
+
283 dataTypes::number * XFrac,
+
284 distributedDeviceVec<dataTypes::number> & Xb,
+
285 distributedDeviceVec<dataTypes::numberFP32> &floatXb,
+
286 distributedDeviceVec<dataTypes::number> & HXb,
+
287 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
288 const unsigned int M,
+
289 const unsigned int N,
+
290 const unsigned int Noc,
+
291 const MPI_Comm & mpiCommParent,
+
292 const MPI_Comm & mpiCommDomain,
+
293 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
294 const MPI_Comm & interBandGroupComm,
+
295 std::vector<double> & eigenValues,
+ +
297 const dftParameters & dftParams,
+
298 const bool useMixedPrecOverall = false);
+
299
+
300
+
301 void
+ +
303 operatorDFTDeviceClass & operatorMatrix,
+
304 dataTypes::number * X,
+
305 distributedDeviceVec<dataTypes::number> & Xb,
+
306 distributedDeviceVec<dataTypes::numberFP32> &floatXb,
+
307 distributedDeviceVec<dataTypes::number> & HXb,
+
308 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
309 const unsigned int M,
+
310 const unsigned int N,
+
311 const MPI_Comm & mpiCommParent,
+
312 const MPI_Comm & mpiCommDomain,
+
313 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
314 const MPI_Comm & interBandGroupComm,
+
315 const std::vector<double> & eigenValues,
+
316 const double fermiEnergy,
+
317 std::vector<double> & densityMatDerFermiEnergy,
+
318 dftfe::elpaScalaManager & elpaScala,
+ +
320 const dftParameters & dftParams);
+
321
+
322 /** @brief Calculates an estimate of lower and upper bounds of a matrix using
+
323 * k-step Lanczos method.
+
324 *
+
325 * @param operatorMatrix An object which has access to the given matrix
+
326 * @param vect A dummy vector
+
327 * @return double An estimate of the upper bound of the given matrix
+
328 */
+
329 std::pair<double, double>
+ +
331 operatorDFTDeviceClass & operatorMatrix,
+
332 distributedDeviceVec<dataTypes::number> &Xb,
+
333 distributedDeviceVec<dataTypes::number> &Yb,
+
334 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
+
335 const unsigned int blockSize,
+
336 const dftParameters & dftParams);
+
337
+
338
+
339 /** @brief Apply Chebyshev filter to a given subspace
+
340 *
+
341 * @param[in] operatorMatrix An object which has access to the given matrix
+
342 * @param[in,out] X Given subspace as a dealii array representing multiple
+
343 * fields as a flattened array. In-place update of the given subspace.
+
344 * @param[in] numberComponents Number of multiple-fields
+
345 * @param[in] m Chebyshev polynomial degree
+
346 * @param[in] a lower bound of unwanted spectrum
+
347 * @param[in] b upper bound of unwanted spectrum
+
348 * @param[in] a0 lower bound of wanted spectrum
+
349 */
+
350 void
+ +
352 operatorDFTDeviceClass & operatorMatrix,
+
353 distributedDeviceVec<dataTypes::number> & X,
+
354 distributedDeviceVec<dataTypes::number> & Y,
+
355 distributedDeviceVec<dataTypes::numberFP32> &Z,
+
356 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
+
357 const unsigned int localVectorSize,
+
358 const unsigned int numberComponents,
+
359 const unsigned int m,
+
360 const double a,
+
361 const double b,
+
362 const double a0,
+
363 const bool mixedPrecOverall,
+
364 const dftParameters & dftParams);
+
365
+
366
+
367 void
+ +
369 operatorDFTDeviceClass & operatorMatrix,
+
370 distributedDeviceVec<dataTypes::number> & X1,
+
371 distributedDeviceVec<dataTypes::number> & Y1,
+
372 distributedDeviceVec<dataTypes::numberFP32> &Z,
+
373 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector1,
+
374 distributedDeviceVec<dataTypes::number> & X2,
+
375 distributedDeviceVec<dataTypes::number> & Y2,
+
376 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector2,
+
377 const unsigned int localVectorSize,
+
378 const unsigned int numberComponents,
+
379 const unsigned int m,
+
380 const double a,
+
381 const double b,
+
382 const double a0,
+
383 const bool mixedPrecOverall,
+
384 const dftParameters & dftParams);
+
385
+
386 void
+ +
388 operatorDFTDeviceClass & operatorMatrix,
+
389 dataTypes::number * X,
+
390 distributedDeviceVec<dataTypes::number> &Xb,
+
391 distributedDeviceVec<dataTypes::number> &HXb,
+
392 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
+
393 const unsigned int M,
+
394 const unsigned int N,
+
395 const std::vector<double> & eigenValues,
+
396 const MPI_Comm & mpiCommDomain,
+
397 const MPI_Comm & interBandGroupComm,
+ +
399 std::vector<double> & residualNorm,
+
400 const dftParameters & dftParams,
+
401 const bool useBandParal = false);
+
402 } // namespace linearAlgebraOperationsDevice
+
403} // namespace dftfe
+
404# endif
+
405#endif
+
Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
Definition scalapackWrapper.h:37
+
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
+ + + + +
void rayleighRitzGEP(operatorDFTClass &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 rayleighRitz(operatorDFTClass &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 computeEigenResidualNorm(operatorDFTClass &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 chebyshevFilter(operatorDFTClass &operatorMatrix, distributedCPUMultiVec< T > &X, const unsigned int numberComponents, const unsigned int m, const double a, const double b, const double a0)
Apply Chebyshev filter to a given subspace.
+
void densityMatrixEigenBasisFirstOrderResponse(operatorDFTClass &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....
+
std::pair< double, double > lanczosLowerUpperBoundEigenSpectrum(operatorDFTClass &operatorMatrix, const distributedCPUMultiVec< T > &vect, const dftParameters &dftParams)
Calculates an estimate of lower and upper bounds of a matrix using k-step Lanczos method.
+
void rayleighRitzGEPSpectrumSplitDirect(operatorDFTClass &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...
+
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...
+
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
Definition upfToxml.cc:37
+ + + +
+ + + + diff --git a/linear_algebra_operations_internal_8h.html b/linear_algebra_operations_internal_8h.html new file mode 100644 index 000000000..533a90dfc --- /dev/null +++ b/linear_algebra_operations_internal_8h.html @@ -0,0 +1,166 @@ + + + + + + + +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..04833e7c4 --- /dev/null +++ b/linear_algebra_operations_internal_8h_source.html @@ -0,0 +1,419 @@ + + + + + + + +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,
+
45 MPI_Comm & processGridCommunicatorActive,
+
46 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
47 const unsigned int na,
+
48 const unsigned int nev,
+
49 const unsigned int blockSize,
+
50 elpa_t & elpaHandle,
+
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,
+
62 const dftParameters & dftParams,
+
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,
+
85 const dftfe::ScaLAPACKMatrix<T> & mat,
+
86 std::unordered_map<unsigned int, unsigned int> & globalToLocalRowIdMap,
+
87 std::unordered_map<unsigned int, unsigned int>
+
88 &globalToLocalColumnIdMap);
+
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,
+
146 dftfe::ScaLAPACKMatrix<T> & overlapMatPar,
+
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,
+
168 dftfe::ScaLAPACKMatrix<T> & overlapMatPar,
+
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
+ +
184 T * subspaceVectorsArray,
+
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,
+
190 const dftfe::ScaLAPACKMatrix<T> & rotationMatPar,
+
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
+ +
208 T * subspaceVectorsArray,
+
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,
+
214 const dftfe::ScaLAPACKMatrix<T> & rotationMatPar,
+
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,
+
245 const dftfe::ScaLAPACKMatrix<T> & QMat,
+
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,
+
274 const dftfe::ScaLAPACKMatrix<T> & QMat,
+
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
+ +
291 T * subspaceVectorsArray,
+
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,
+
297 const dftfe::ScaLAPACKMatrix<T> & rotationMatPar,
+
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
+
Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
Definition scalapackWrapper.h:37
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+ + +
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 upfToxml.cc:37
+ + + +
+ + + + diff --git a/linear_solver_8h.html b/linear_solver_8h.html new file mode 100644 index 000000000..b8aa888fd --- /dev/null +++ b/linear_solver_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..d2a69d34a --- /dev/null +++ b/linear_solver_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +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.
+ +
Definition upfToxml.cc:37
+
+ + + + diff --git a/linear_solver_c_g_device_8h.html b/linear_solver_c_g_device_8h.html new file mode 100644 index 000000000..a30f5038c --- /dev/null +++ b/linear_solver_c_g_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..9b61165ab --- /dev/null +++ b/linear_solver_c_g_device_8h_source.html @@ -0,0 +1,211 @@ + + + + + + + +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>
+
26namespace dftfe
+
27{
+
28 /**
+
29 * @brief conjugate gradient device linear solver class wrapper
+
30 *
+
31 * @author Gourab Panigrahi
+
32 */
+
33 class linearSolverCGDevice : public linearSolverDevice
+
34 {
+
35 public:
+
36 enum solverType
+
37 {
+
38 CG = 0,
+
39 GMRES
+
40 };
+
41
+
42 /**
+
43 * @brief Constructor
+
44 *
+
45 * @param mpi_comm_parent parent mpi communicato
+
46 * @param mpi_comm_domain domain mpi communicator
+
47 * @param type enum specifying the choice of the linear solver
+
48 */
+
49 linearSolverCGDevice(const MPI_Comm & mpi_comm_parent,
+
50 const MPI_Comm & mpi_comm_domain,
+
51 const solverType type);
+
52
+
53 /**
+
54 * @brief Solve linear system, A*x=Rhs
+
55 *
+
56 * @param problem linearSolverProblemDevice object (functor) to compute Rhs and A*x, and preconditioning
+
57 * @param relTolerance Tolerance (relative) required for convergence.
+
58 * @param maxNumberIterations Maximum number of iterations.
+
59 * @param debugLevel Debug output level:
+
60 * 0 - no debug output
+
61 * 1 - limited debug output
+
62 * 2 - all debug output.
+
63 */
+
64 void
+
65 solve(linearSolverProblemDevice & problem,
+
66 const double absTolerance,
+
67 const unsigned int maxNumberIterations,
+ +
69 const int debugLevel = 0,
+
70 bool distributeFlag = true);
+
71
+
72 private:
+
73 /// enum denoting the choice of the linear solver
+
74 const solverType d_type;
+
75
+
76 /// define some temporary vectors
+
77 distributedDeviceVec<double> d_qvec, d_rvec, d_dvec;
+
78
+
79 int d_xLocalDof;
+
80 double *d_devSumPtr;
+ +
82 d_devSum;
+
83
+
84 const MPI_Comm d_mpiCommParent;
+
85 const MPI_Comm mpi_communicator;
+
86 const unsigned int n_mpi_processes;
+
87 const unsigned int this_mpi_process;
+
88 dealii::ConditionalOStream pcout;
+
89
+
90 /**
+
91 * @brief Combines precondition and dot product
+
92 *
+
93 */
+
94 double
+
95 applyPreconditionAndComputeDotProduct(const double *jacobi);
+
96
+
97 /**
+
98 * @brief Combines precondition, sadd and dot product
+
99 *
+
100 */
+
101 double
+
102 applyPreconditionComputeDotProductAndSadd(const double *jacobi);
+
103
+
104 /**
+
105 * @brief Combines scaling and norm
+
106 *
+
107 */
+
108 double
+
109 scaleXRandComputeNorm(double *x, const double &alpha);
+
110 };
+
111
+
112} // namespace dftfe
+
113# endif // linearSolverCGDevice_H_
+
114#endif
+ +
Definition MemoryStorage.h:33
+ + +
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
Definition upfToxml.cc:37
+
+ + + + diff --git a/linear_solver_device_8h.html b/linear_solver_device_8h.html new file mode 100644 index 000000000..a179651ac --- /dev/null +++ b/linear_solver_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..ed01c6318 --- /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,
+ +
54 const int debugLevel = 0,
+
55 bool distributeFlag = true) = 0;
+
56
+
57 private:
+
58 };
+
59
+
60} // namespace dftfe
+
61# endif // linearSolverDevice_H_
+
62#endif
+ + +
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
Definition upfToxml.cc:37
+
+ + + + diff --git a/linear_solver_problem_device_8h.html b/linear_solver_problem_device_8h.html new file mode 100644 index 000000000..c0d530a82 --- /dev/null +++ b/linear_solver_problem_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..5eb5cf714 --- /dev/null +++ b/linear_solver_problem_device_8h_source.html @@ -0,0 +1,190 @@ + + + + + + + +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 upfToxml.cc:37
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..b0b26936a --- /dev/null +++ b/menu.js @@ -0,0 +1,136 @@ +/* + @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) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + 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; + } + var 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('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var 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..463af5e69 --- /dev/null +++ b/mesh_gen_utils_8h.html @@ -0,0 +1,116 @@ + + + + + + + +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..ee7459016 --- /dev/null +++ b/mesh_gen_utils_8h_source.html @@ -0,0 +1,393 @@ + + + + + + + +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
    +
    52 cross_product(latticeVectors[0],
    +
    53 latticeVectors[1],
    +
    54 periodicFaceNormals[2]);
    +
    55
    +
    56 // evaluate cross product between second two lattice vectors
    +
    57 cross_product(latticeVectors[1],
    +
    58 latticeVectors[2],
    +
    59 periodicFaceNormals[0]);
    +
    60
    +
    61
    +
    62 // evaluate cross product between third and first two lattice vectors
    +
    63 cross_product(latticeVectors[2],
    +
    64 latticeVectors[0],
    +
    65 periodicFaceNormals[1]);
    +
    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 {
    +
    90 offsetVectors[i][j] = unitVectorsXYZ[i][j] - latticeVectors[i][j];
    +
    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
    +
    108 double angle = dotProduct / sqrt(lengthVector1Sq * lengthVector2Sq);
    +
    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
    +
    126 double angle = dotProduct / sqrt(lengthVector1Sq * lengthVector2Sq);
    +
    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
    +
    147 computePeriodicFaceNormals(latticeVectors, periodicFaceNormals);
    +
    148
    +
    149 // compute offset vectors such that lattice vectors plus offset vectors
    +
    150 // are alligned along spatial x,y,z directions
    +
    151 computeOffsetVectors(latticeVectors, offsetVectors);
    +
    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,
    +
    169 quadratureFace_formula,
    +
    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,
    +
    209 periodicFaceNormals[d]) -
    +
    210 1.0) < 1.0e-05)
    +
    211 cell->face(f)->set_boundary_id(i);
    +
    212 else if (std::abs(
    +
    213 getCosineAngle(faceNormalVector,
    +
    214 periodicFaceNormals[d]) +
    +
    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>>
    +
    237 periodicity_vector;
    +
    238 for (int i = 0; i < std::accumulate(periodic.begin(), periodic.end(), 0);
    +
    239 ++i)
    +
    240 {
    +
    241 dealii::GridTools::collect_periodic_faces(
    +
    242 triangulation,
    +
    243 /*b_id1*/ 2 * i + 1,
    +
    244 /*b_id2*/ 2 * i + 2,
    +
    245 /*direction*/ periodicDirectionVector[i],
    +
    246 periodicity_vector,
    +
    247 offsetVectors[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
    +
    bool periodicX
    Definition dftParameters.h:53
    +
    bool periodicY
    Definition dftParameters.h:53
    +
    bool periodicZ
    Definition dftParameters.h:53
    +
    int verbosity
    Definition dftParameters.h:89
    + + +
    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 upfToxml.cc:37
    +
    + + + + diff --git a/mesh_movement_8h.html b/mesh_movement_8h.html new file mode 100644 index 000000000..5fcfea83f --- /dev/null +++ b/mesh_movement_8h.html @@ -0,0 +1,106 @@ + + + + + + + +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..064713d81 --- /dev/null +++ b/mesh_movement_8h_source.html @@ -0,0 +1,267 @@ + + + + + + + +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 */
    +
    40 meshMovementClass(const MPI_Comm & mpi_comm_parent,
    +
    41 const MPI_Comm & mpi_comm_domain,
    +
    42 const dftParameters &dftParams);
    +
    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>>
    +
    83 &dispClosestTriaVerticesToDestPoints);
    +
    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
    + + + +
    Definition upfToxml.cc:37
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:99
    +
    + + + + diff --git a/mesh_movement_affine_transform_8h.html b/mesh_movement_affine_transform_8h.html new file mode 100644 index 000000000..350c27dbe --- /dev/null +++ b/mesh_movement_affine_transform_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..817a43ac4 --- /dev/null +++ b/mesh_movement_affine_transform_8h_source.html @@ -0,0 +1,175 @@ + + + + + + + +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 */
    +
    37 meshMovementAffineTransform(const MPI_Comm & mpi_comm_parent,
    +
    38 const MPI_Comm & mpi_comm_domain,
    +
    39 const dftParameters &dftParams);
    +
    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>>
    +
    55 & controlPointDisplacements,
    +
    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
    + +
    Definition upfToxml.cc:37
    +
    + + + + diff --git a/mesh_movement_gaussian_8h.html b/mesh_movement_gaussian_8h.html new file mode 100644 index 000000000..32f87d7a5 --- /dev/null +++ b/mesh_movement_gaussian_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..70b2ff687 --- /dev/null +++ b/mesh_movement_gaussian_8h_source.html @@ -0,0 +1,210 @@ + + + + + + + +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 */
    +
    37 meshMovementGaussianClass(const MPI_Comm & mpi_comm_parent,
    +
    38 const MPI_Comm & mpi_comm_domaim,
    +
    39 const dftParameters &dftParams);
    +
    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>>
    +
    57 & controlPointDisplacements,
    +
    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>>
    +
    68 &controlPointDisplacements1,
    +
    69 const std::vector<dealii::Tensor<1, 3, double>>
    +
    70 & controlPointDisplacements2,
    +
    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>>
    +
    88 & controlPointDisplacements,
    +
    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>>
    +
    97 &controlPointDisplacements1,
    +
    98 const std::vector<dealii::Tensor<1, 3, double>>
    +
    99 & controlPointDisplacements2,
    +
    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
    + +
    Definition upfToxml.cc:37
    +
    + + + + 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..a425b3185 --- /dev/null +++ b/mixing_class_8h.html @@ -0,0 +1,115 @@ + + + + + + + +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 + }
     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..be747d636 --- /dev/null +++ b/mixing_class_8h_source.html @@ -0,0 +1,262 @@ + + + + + + + +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,
    + +
    35 };
    +
    +
    36
    +
    37 /**
    +
    38 * @brief This class performs the anderson mixing in a variable agnostic way
    +
    39 * This class takes can take different input variables as input in a
    +
    40 * std::vector format and computes the mixing coefficients These coefficients
    +
    41 * can then be used to compute the new variable at the start of the SCF.
    +
    42 * @author Vishal Subramanian
    +
    43 */
    +
    + +
    45 {
    +
    46 public:
    +
    47 MixingScheme(const MPI_Comm &mpi_comm_domain);
    +
    48
    +
    49 unsigned int
    + +
    51
    +
    52 /**
    +
    53 * @brief Computes the mixing coefficients.
    +
    54 *
    +
    55 */
    +
    56 void
    + +
    58
    +
    59 /**
    +
    60 * @brief Deletes the old history if the length exceeds max length of history
    +
    61 *
    +
    62 */
    +
    63 void
    +
    64 popOldHistory(unsigned int mixingHistory);
    +
    65
    +
    66 /**
    +
    67 * @brief Clears all the the history.
    +
    68 *
    +
    69 */
    +
    70 void
    + +
    72
    +
    73 /**
    +
    74 * @brief This function is used to add the mixing variables and its corresponding
    +
    75 * JxW values
    +
    76 * For dependent variables which are not used in mixing, the
    +
    77 * weightDotProducts is set to a vector of size zero. Later the dependent
    +
    78 * variables can be mixed with the same mixing coefficients.
    +
    79 *
    +
    80 */
    +
    81 void
    +
    82 addMixingVariable(const mixingVariable mixingVariableList,
    +
    83 const std::vector<double> &weightDotProducts,
    +
    84 const bool performMPIReduce,
    +
    85 const double mixingValue);
    +
    86
    +
    87 /**
    +
    88 * @brief Adds to the input history
    +
    89 *
    +
    90 */
    +
    91 void
    +
    92 addVariableToInHist(const mixingVariable mixingVariableName,
    +
    93 const std::vector<double> &inputVariableToInHist);
    +
    94
    +
    95 /**
    +
    96 * @brief Adds to the output history
    +
    97 *
    +
    98 */
    +
    99 void
    +
    100 addVariableToOutHist(const mixingVariable mixingVariableName,
    +
    101 const std::vector<double> &inputVariableToOutHist);
    +
    102
    +
    103 /**
    +
    104 * @brief Computes the input for the next iteration based on the anderson coefficients
    +
    105 *
    +
    106 */
    +
    107 double
    +
    108 mixVariable(const mixingVariable mixingVariableName,
    +
    109 std::vector<double> &outputVariable);
    +
    110
    +
    111
    +
    112 private:
    +
    113 /**
    +
    114 * @brief Computes the matrix A and c vector that will be needed for anderson mixing.
    +
    115 * This function computes the A and c values for each variable which will be
    +
    116 * then added up in computeAndersonMixingCoeff()
    +
    117 */
    +
    118 void
    +
    119 computeMixingMatrices(const std::deque<std::vector<double>> &inHist,
    +
    120 const std::deque<std::vector<double>> &outHist,
    +
    121 const std::vector<double> &weightDotProducts,
    +
    122 const bool isMPIAllReduce,
    +
    123 std::vector<double> & A,
    +
    124 std::vector<double> & c);
    +
    125
    +
    126 std::vector<double> d_A, d_c;
    +
    127 double d_cFinal;
    +
    128
    +
    129 std::map<mixingVariable, std::deque<std::vector<double>>>
    + +
    131 std::map<mixingVariable, std::vector<double>> d_vectorDotProductWeights;
    +
    132 std::map<mixingVariable, bool> d_performMPIReduce;
    +
    133
    +
    134 const MPI_Comm d_mpi_comm_domain;
    +
    135
    +
    136 std::map<mixingVariable, double> d_mixingParameter;
    +
    137 unsigned int d_mixingHistory;
    +
    138 };
    +
    +
    139} // end of namespace dftfe
    +
    140#endif // DFTFE_MIXINGCLASS_H
    +
    This class performs the anderson mixing in a variable agnostic way This class takes can take differen...
    Definition mixingClass.h:45
    +
    void clearHistory()
    Clears all the the history.
    +
    std::vector< double > d_A
    Definition mixingClass.h:126
    +
    void computeAndersonMixingCoeff()
    Computes the mixing coefficients.
    +
    const MPI_Comm d_mpi_comm_domain
    Definition mixingClass.h:134
    +
    std::map< mixingVariable, std::deque< std::vector< double > > > d_variableHistoryIn
    Definition mixingClass.h:130
    +
    MixingScheme(const MPI_Comm &mpi_comm_domain)
    +
    unsigned int lengthOfHistory()
    +
    void popOldHistory(unsigned int mixingHistory)
    Deletes the old history if the length exceeds max length of history.
    +
    std::map< mixingVariable, std::deque< std::vector< double > > > d_variableHistoryOut
    Definition mixingClass.h:130
    +
    void addVariableToInHist(const mixingVariable mixingVariableName, const std::vector< double > &inputVariableToInHist)
    Adds to the input history.
    +
    std::vector< double > d_c
    Definition mixingClass.h:126
    +
    std::map< mixingVariable, std::vector< double > > d_vectorDotProductWeights
    Definition mixingClass.h:131
    +
    unsigned int d_mixingHistory
    Definition mixingClass.h:137
    +
    double d_cFinal
    Definition mixingClass.h:127
    +
    double mixVariable(const mixingVariable mixingVariableName, std::vector< double > &outputVariable)
    Computes the input for the next iteration based on the anderson coefficients.
    +
    void addVariableToOutHist(const mixingVariable mixingVariableName, const std::vector< double > &inputVariableToOutHist)
    Adds to the output history.
    +
    std::map< mixingVariable, bool > d_performMPIReduce
    Definition mixingClass.h:132
    +
    std::map< mixingVariable, double > d_mixingParameter
    Definition mixingClass.h:136
    +
    void addMixingVariable(const mixingVariable mixingVariableList, const std::vector< double > &weightDotProducts, const bool performMPIReduce, const double mixingValue)
    This function is used to add the mixing variables and its corresponding JxW values For dependent vari...
    +
    void computeMixingMatrices(const std::deque< std::vector< double > > &inHist, const std::deque< std::vector< double > > &outHist, const std::vector< double > &weightDotProducts, 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...
    + + +
    Definition upfToxml.cc:37
    +
    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..6326be32b --- /dev/null +++ b/molecular_dynamics_class_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..d83506ae8 --- /dev/null +++ b/molecular_dynamics_class_8h_source.html @@ -0,0 +1,624 @@ + + + + + + + +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
    +
    48
    +
    49 const double haPerBohrToeVPerAng = 27.211386245988 / 0.529177210903;
    +
    50 const double haToeV = 27.211386245988;
    +
    51 const double bohrToAng = 0.529177210903;
    +
    52 const double AngTobohr = 1.0 / bohrToAng;
    +
    53 const double kB = 8.617333262e-05; // eV/K **3.166811429e-6**;
    +
    54
    + +
    56 /**
    +
    57 * @brief runMD: Assign atom mass to charge. Create vectors for displacement, velocity, force.
    +
    58 * Create KE vector, TE vector, PE vector. Initialise velocities from
    +
    59 * Boltsmann distribution. Set Center of Mass velocities to be 0. Call the
    +
    60 * resepective ensemble based on input file
    +
    61 *
    +
    62 *
    +
    63 */
    +
    64 int
    + +
    66
    +
    67
    +
    68
    +
    69 private:
    +
    70 // pointer to dft class
    +
    71 std::unique_ptr<dftfeWrapper> d_dftfeWrapper;
    + +
    73
    +
    74 // parallel communication objects
    + +
    76 const unsigned int d_this_mpi_process;
    +
    77
    +
    78 // conditional stream object
    +
    79 dealii::ConditionalOStream pcout;
    +
    80
    +
    81 std::string d_restartFilesPath;
    +
    82 const int d_verbosity;
    +
    83
    +
    84 unsigned int d_restartFlag;
    + +
    86 double d_TimeStep;
    +
    87 unsigned int d_TimeIndex;
    +
    88 unsigned int d_numberofSteps;
    + + +
    91 std::string d_ThermostatType;
    + + +
    94 std::vector<std::vector<double>> d_atomFractionalunwrapped;
    +
    95 std::vector<double> d_domainLength;
    + + +
    98
    +
    99
    +
    100 /**
    +
    101 * @brief mdNVE Performs a Ccanonical Ensemble MD calculation. The inital temperature is set by runMD().
    +
    102 * Temperature is NOT_CONTROLLED. Controls the timeloop.
    +
    103
    +
    104 * @param[in] atomMass Stores the mass of each Charge.
    +
    105 * @param[out] KineticEnergyVector Stores KineticEnergy at each TimeStep
    +
    106 * @param[out] InternalEnergyVector Stores InternalEnergy at each TimeStep
    +
    107 * @param[out] EntropicEnergyVector Stores PotentialEnergy at each TimeStep
    +
    108 * @param[out] TotalEnergyVector Stores TotalEnergy at each TimeStep
    +
    109 * @param[out] displacements Stores the displacment of each Charge, updated
    +
    110 at each TimeStep
    +
    111 * @param[out] velocity Stores the velocity of each Charge, updated at each
    +
    112 TimeStep
    +
    113 * @param[out] force Stores the -ve of force on each charge, updated at each
    +
    114 TimeStep
    +
    115 *
    +
    116 *
    +
    117 *
    +
    118 */
    +
    119 int
    +
    120 mdNVE(std::vector<double> & KineticEnergyVector,
    +
    121 std::vector<double> & InternalEnergyVector,
    +
    122 std::vector<double> & EntropicEnergyVector,
    +
    123 std::vector<double> & TotalEnergyVector,
    +
    124 std::vector<dealii::Tensor<1, 3, double>> &displacements,
    +
    125 std::vector<double> & velocity,
    +
    126 std::vector<double> & force,
    +
    127 const std::vector<double> & atomMass);
    +
    128 /**
    +
    129
    +
    130 @brief mdNVTnosehoverchainsThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by runMD().
    +
    131 * Thermostat type is NOSE_HOVER_CHAINS. Controls the timeloop.
    +
    132 *
    +
    133 * @param[in] atomMass Stores the mass of each Charge.
    +
    134 * @param[out] KineticEnergyVector Stores KineticEnergy at each TimeStep
    +
    135 * @param[out] InternalEnergyVector Stores InternalEnergy at each TimeStep
    +
    136 * @param[out] EntropicEnergyVector Stores PotentialEnergy at each TimeStep
    +
    137 * @param[out] TotalEnergyVector Stores TotalEnergy at each TimeStep
    +
    138 * @param[out] displacements Stores the displacment of each Charge, updated
    +
    139 at each TimeStep
    +
    140 * @param[out] velocity Stores the velocity of each Charge, updated at each
    +
    141 TimeStep
    +
    142 * @param[out] force Stores the -ve of force on each charge, updated at each
    +
    143 TimeStep
    +
    144 *
    +
    145 *
    +
    146 *
    +
    147 */
    +
    148 int
    + +
    150 std::vector<double> & KineticEnergyVector,
    +
    151 std::vector<double> & InternalEnergyVector,
    +
    152 std::vector<double> & EntropicEnergyVector,
    +
    153 std::vector<double> & TotalEnergyVector,
    +
    154 std::vector<dealii::Tensor<1, 3, double>> &displacements,
    +
    155 std::vector<double> & velocity,
    +
    156 std::vector<double> & force,
    +
    157 const std::vector<double> & atomMass);
    +
    158
    +
    159 /**
    +
    160
    +
    161 @brief mdNVTrescaleThermostat Performs a Constant Kinetic Energy Ensemble MD calculation. The inital temperature is set by runMD().
    +
    162 * Thermostat type is RESCALE. Controls the timeloop. At timestep which is
    +
    163 multiple of Thermostat time constatn, the veloctites are rescaled *such that
    +
    164 the temperature is set to inital temperature .
    +
    165 *
    +
    166 * @param[in] atomMass Stores the mass of each Charge.
    +
    167 * @param[out] KineticEnergyVector Stores KineticEnergy at each TimeStep
    +
    168 * @param[out] InternalEnergyVector Stores InternalEnergy at each TimeStep
    +
    169 * @param[out] EntropicEnergyVector Stores PotentialEnergy at each TimeStep
    +
    170 * @param[out] TotalEnergyVector Stores TotalEnergy at each TimeStep
    +
    171 * @param[out] displacements Stores the displacment of each Charge, updated
    +
    172 at each TimeStep
    +
    173 * @param[out] velocity Stores the velocity of each Charge, updated at each
    +
    174 TimeStep
    +
    175 * @param[out] force Stores the -ve of force on each charge, updated at each
    +
    176 TimeStep
    +
    177 *
    +
    178 *
    +
    179 *
    +
    180 */
    +
    181 int
    + +
    183 std::vector<double> & KineticEnergyVector,
    +
    184 std::vector<double> & InternalEnergyVector,
    +
    185 std::vector<double> & EntropicEnergyVector,
    +
    186 std::vector<double> & TotalEnergyVector,
    +
    187 std::vector<dealii::Tensor<1, 3, double>> &displacements,
    +
    188 std::vector<double> & velocity,
    +
    189 std::vector<double> & force,
    +
    190 const std::vector<double> & atomMass);
    +
    191
    +
    192
    +
    193 /**
    +
    194
    +
    195 @brief mdNVTsvrThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by runMD().
    +
    196 * Thermostat type is SVR. Controls the timeloop.
    +
    197 * @param[in] massAtoms Stores the mass of each Charge. *
    +
    198 * @param[out] KineticEnergyVector Stores KineticEnergy at each TimeStep
    +
    199 * @param[out] InternalEnergyVector Stores InternalEnergy at each TimeStep
    +
    200 * @param[out] EntropicEnergyVector Stores PotentialEnergy at each TimeStep
    +
    201 * @param[out] TotalEnergyVector Stores TotalEnergy at each TimeStep
    +
    202 * @param[out] displacements Stores the displacment of each Charge, updated
    +
    203 at each TimeStep
    +
    204 * @param[out] velocity Stores the velocity of each Charge, updated at each
    +
    205 TimeStep
    +
    206 * @param[out] force Stores the -ve of force on each charge, updated at each
    +
    207 TimeStep
    +
    208 *
    +
    209 */
    +
    210 int
    + +
    212 std::vector<double> &InternalEnergyVector,
    +
    213 std::vector<double> &EntropicEnergyVector,
    +
    214 std::vector<double> &TotalEnergyVector,
    +
    215 std::vector<dealii::Tensor<1, 3, double>> &displacements,
    +
    216 std::vector<double> & velocity,
    +
    217 std::vector<double> & force,
    +
    218 const std::vector<double> & atomMass);
    +
    219
    +
    220
    +
    221 /**
    +
    222 * @brief RescaleVelocities controls the velocity at timestep t. The scaling of
    +
    223 * velocities depends on ratio of T at that timestep and inital Temperature.
    +
    224
    +
    225
    +
    226 * @param[in] M Stores the mass of each Charge.
    +
    227 * @param[in] Temperature temperature at current Timestep
    +
    228 * @param[out] v Stores the velocity of each Charge, updated at each
    +
    229 Timestep
    +
    230 *
    +
    231 * @param[return] KE Kinetic Energy at current timestp in eV
    +
    232
    +
    233 *
    +
    234 *
    +
    235 *
    +
    236 */
    +
    237 double
    +
    238 RescaleVelocities(std::vector<double> & v,
    +
    239 const std::vector<double> &M,
    +
    240 double Temperature);
    +
    241
    +
    242
    +
    243 /**
    +
    244
    +
    245 * @brief NoseHoverChains controls the velocity at timestep t. The temperature is contolled by
    +
    246 2 thermostats. Thermostat 1 contols the velocity of all Charges.
    +
    247 Thermostat 2 controls thermostat 1. Employs Extended Lagrangian approach.
    +
    248
    +
    249
    +
    250 * @param[in] Q stores mass of each Thermostat
    +
    251 * @param[in] Temperature temperature of previous timestep
    +
    252 * @param[out] v Stores the velocity of each Charge, updated at each
    +
    253 TimeStep
    +
    254 * @param[out] v_e Stores the thermostat velocity
    +
    255 * @param[out] e Stores the position of each thermosat
    +
    256 *
    +
    257 */
    +
    258 void
    +
    259 NoseHoverChains(std::vector<double> &v,
    +
    260 std::vector<double> &v_e,
    +
    261 std::vector<double> &e,
    +
    262 std::vector<double> Q,
    +
    263 double KE,
    +
    264 double Temperature);
    +
    265
    +
    266 /**
    +
    267
    +
    268 * @brief
    +
    269
    +
    270 *
    +
    271 * @param[in] KEref Target value of Kinetic Enegy from Temperature
    +
    272 * @param[out] v Stores the velocity of each Charge, updated at each
    +
    273 TimeStep
    +
    274 * @param[out] KE rescaled Kinetic Energy from svr thermostat
    +
    275 *
    +
    276 *
    +
    277 */
    +
    278 double
    +
    279 svr(std::vector<double> &v, double KE, double KEref);
    +
    280
    +
    281
    +
    282
    +
    283 /**
    +
    284
    +
    285 * @brief velocityVerlet
    +
    286
    +
    287
    +
    288 * @param[in] atomMass Stores the mass of each Charge.
    +
    289
    +
    290 *
    +
    291 * @param[return] KE Kinetic Energy at current timestp in eV
    +
    292 * @param[out] forceonAtoms Updated -ve forces on each charge.
    +
    293 * @param[out] r Updated displacement
    +
    294 * @param[out] v Updated velocity of each atom
    +
    295 *
    +
    296 *
    +
    297 *
    +
    298 */
    +
    299 double
    +
    300 velocityVerlet(std::vector<double> & v,
    +
    301 std::vector<dealii::Tensor<1, 3, double>> &r,
    +
    302 const std::vector<double> & atomMass,
    +
    303 std::vector<double> & forceOnAtoms);
    +
    304
    +
    305
    +
    306
    +
    307 /**
    +
    308 * @brief writeRestartFile: Writing files at each timestep to mdRestart
    +
    309
    +
    310 * @param[in] velocity Velocity updated from restart
    +
    311 * @param[in] force Force data at each timeStep
    +
    312 * @param[in] PE Free energy of system at current Timestep
    +
    313 * @param[in] KE Kinetic ENergy of nuclei at current Timestep
    +
    314 * @param[in] TE temperature at current Timestep
    +
    315 * @param[in] time Current TimeStep
    +
    316 *
    +
    317 *
    +
    318 */
    +
    319
    +
    320 void
    +
    321 writeRestartFile(const std::vector<dealii::Tensor<1, 3, double>> &disp,
    +
    322 const std::vector<double> & velocity,
    +
    323 const std::vector<double> & force,
    +
    324 const std::vector<double> &KineticEnergyVector,
    +
    325 const std::vector<double> &InternalEnergyVector,
    +
    326 const std::vector<double> &TotalEnergyVector,
    +
    327 int time);
    +
    328
    +
    329 /**
    +
    330
    +
    331* @brief InitialiseFromRestartFile : Initialise atomcordinates, velocity and force at restart
    +
    332
    +
    333 * @param[out] disp Displacements of previous timestep from restart
    +
    334 * @param[out] velocity Velocity updated from restart
    +
    335 * @param[out] force Force updated from dft->Solve
    +
    336 * @param[out] PE Free energy of system at current Timestep
    +
    337 * @param[out] KE Kinetic ENergy of nuclei at current Timestep
    +
    338 * @param[out] TE temperature at current Timestep
    +
    339 *
    +
    340
    +
    341 *
    +
    342 *
    +
    343 *
    +
    344 */
    +
    345 void
    +
    346 InitialiseFromRestartFile(std::vector<dealii::Tensor<1, 3, double>> &disp,
    +
    347 std::vector<double> &velocity,
    +
    348 std::vector<double> &force,
    +
    349 std::vector<double> &KE,
    +
    350 std::vector<double> &IE,
    +
    351 std::vector<double> &TE);
    +
    352
    +
    353 /**
    +
    354
    +
    355* @brief NoseHoverExtendedLagrangian Writes the NHC parameters at each timeStep
    +
    356
    +
    357 * @param[in] thermovelocity Velocity of each, updated at each TimeStep
    +
    358 * @param[in] thermoposition Position of each thermostat , updated at each
    +
    359 TimeStep
    +
    360 * @param[in] thermomass Stores the mass of each thermostat.
    +
    361 * @param[in] time Current TimeStep
    +
    362 *
    +
    363 *
    +
    364 */
    +
    365 void
    +
    366 writeRestartNHCfile(const std::vector<double> &v_e,
    +
    367 const std::vector<double> &e,
    +
    368 const std::vector<double> &Q,
    +
    369 const int time);
    +
    370
    +
    371 /**
    +
    372
    +
    373* @brief InitialiseFromRestartNHCFile: Reads the NHC parameters during restart
    +
    374
    +
    375 * @param[out] thermovelocity Velocity of each, updated at each TimeStep
    +
    376 * @param[out] thermoposition Position of each thermostat , updated at each
    +
    377 TimeStep
    +
    378 * @param[out] thermomass Stores the mass of each thermostat.
    +
    379 *
    +
    380 *
    +
    381 *
    +
    382 */
    +
    383 void
    +
    384 InitialiseFromRestartNHCFile(std::vector<double> &v_e,
    +
    385 std::vector<double> &e,
    +
    386 std::vector<double> &Q);
    +
    387
    +
    388 /**
    +
    389
    +
    390* @brief writeTotalDisplacementFile: Updates Displacement.chk and appends TotalDisplacement.chk
    +
    391
    +
    392 * @param[in] r Displacemnt of each atom, updated at each TimeStep
    +
    393 * @param[in] time each TimeStep
    +
    394
    +
    395 *
    +
    396 *
    +
    397 *
    +
    398 */
    +
    399 void
    + +
    401 const std::vector<dealii::Tensor<1, 3, double>> &r,
    +
    402 int time);
    +
    403
    +
    404 /**
    +
    405
    +
    406 * @brief NoseHoverExtendedLagrangian: Computes the Nose-Hover Hamiltonian when using NHC thermostat
    +
    407
    +
    408 * @param[in] thermovelocity Velocity of each, updated at each TimeStep
    +
    409 * @param[in] thermoposition Position of each thermostat , updated at each
    +
    410 TimeStep
    +
    411 * @param[in] thermomass Stores the mass of each thermostat.
    +
    412 * @param[in] PE Free energy of system at current Timestep
    +
    413 * @param[in] KE Kinetic ENergy of nuclei at current Timestep
    +
    414 * @param[in] Temperature temperature at current Timestep
    +
    415 *
    +
    416 * @return Hnose Nose Hamiltonian at each timestep
    +
    417 *
    +
    418 *
    +
    419 *
    +
    420 */
    +
    421
    +
    422 double
    +
    423 NoseHoverExtendedLagrangian(const std::vector<double> &thermovelocity,
    +
    424 const std::vector<double> &thermoposition,
    +
    425 const std::vector<double> &thermomass,
    +
    426 double PE,
    +
    427 double KE,
    +
    428 double T);
    +
    429 /**
    +
    430 * @brief checkRestart: Identifies the folder containing the restart file, sets the path of coordinates file and restursn the starting timestep *
    +
    431 * @return StartingTimeStep the timestep to restart the MD from.
    +
    432 *
    +
    433 *
    +
    434 *
    +
    435 */
    +
    436 int
    +
    437 checkRestart(std::string &coordinatesFile,
    +
    438 std::string &domainVectorsFile,
    +
    439 bool & scfRestart);
    +
    440
    +
    441 /**
    +
    442 * @brief DensityExtrapolation Identifies the folder containing the restart file, sets the path of coordinates file and restursn the starting timestep *
    +
    443 *
    +
    444 *
    +
    445 *
    +
    446 *
    +
    447 */
    +
    448 void
    + +
    450
    +
    451 /**
    +
    452 * @brief DensityExtrapolation calculates the t+dt density as a second order extrapolation of density from t, t-dt and t-2dt
    +
    453 *
    +
    454 *
    +
    455 *
    +
    456 *
    +
    457 *
    +
    458 */
    +
    459 void
    + +
    461
    +
    462
    +
    463 /**
    +
    464 * @brief set() initalises all the private datamembers of mdclass object from the parameters declared by user.
    +
    465 *
    +
    466 *
    +
    467 *
    +
    468 *
    +
    469 */
    +
    470 void
    + +
    472 };
    +
    +
    473} // namespace dftfe
    +
    474#endif
    +
    abstract base class for dft
    Definition dftBase.h:34
    +
    Definition molecularDynamicsClass.h:33
    +
    std::string d_ThermostatType
    Definition molecularDynamicsClass.h:91
    +
    void DensitySplitExtrapolation(int TimeStep)
    DensityExtrapolation calculates the t+dt density as a second order extrapolation of density from t,...
    +
    molecularDynamicsClass(const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity)
    molecularDynamicsClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsC...
    +
    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:94
    +
    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:79
    +
    const unsigned int d_this_mpi_process
    Definition molecularDynamicsClass.h:76
    +
    std::string d_restartFilesPath
    Definition molecularDynamicsClass.h:81
    +
    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:72
    +
    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:96
    +
    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:92
    +
    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:53
    +
    void set()
    set() initalises all the private datamembers of mdclass object from the parameters declared by user.
    +
    const int d_verbosity
    Definition molecularDynamicsClass.h:82
    +
    distributedCPUVec< double > d_extrapDensity_tp1
    Definition molecularDynamicsClass.h:97
    +
    int d_ThermostatTimeConstant
    Definition molecularDynamicsClass.h:90
    +
    unsigned int d_restartFlag
    Definition molecularDynamicsClass.h:84
    +
    distributedCPUVec< double > d_extrapDensity_tmin2
    Definition molecularDynamicsClass.h:96
    +
    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:97
    +
    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:95
    +
    const double AngTobohr
    Definition molecularDynamicsClass.h:52
    +
    std::unique_ptr< dftfeWrapper > d_dftfeWrapper
    Definition molecularDynamicsClass.h:71
    +
    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:85
    +
    const double haToeV
    Definition molecularDynamicsClass.h:50
    +
    unsigned int d_TimeIndex
    Definition molecularDynamicsClass.h:87
    +
    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:93
    +
    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:51
    +
    int d_startingTimeStep
    Definition molecularDynamicsClass.h:55
    +
    int runMD()
    runMD: Assign atom mass to charge. Create vectors for displacement, velocity, force....
    +
    unsigned int d_numberofSteps
    Definition molecularDynamicsClass.h:88
    +
    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:49
    +
    double d_TimeStep
    Definition molecularDynamicsClass.h:86
    +
    double d_startingTemperature
    Definition molecularDynamicsClass.h:89
    +
    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:75
    + + + + +
    Definition upfToxml.cc:37
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:99
    +
    + + + + diff --git a/namespacedftfe.html b/namespacedftfe.html new file mode 100644 index 000000000..b4d4b2f9b --- /dev/null +++ b/namespacedftfe.html @@ -0,0 +1,15811 @@ + + + + + + + +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  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  types
     
    namespace  utils
     
    namespace  vectorTools
     Contains generic utils functions related to custom partitioned flattened dealii vector.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    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  kohnShamDFTOperatorClass
     Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors. More...
     
    class  kohnShamDFTOperatorDeviceClass
     Implementation class for building the Kohn-Sham DFT discrete operator and the action of the discrete operator on a single vector or multiple vectors. More...
     
    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  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 = dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host >
     
    template<typename NumberType >
    using distributedCPUMultiVec = dftfe::linearAlgebra::MultiVector< NumberType, dftfe::utils::MemorySpace::HOST >
     
    using size_type = unsigned int
     
    using global_size_type = unsigned long int
     
    + + + + + + + + + + + + + + + + +

    +Enumerations

    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 + }
     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, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > *rhoValues, std::map< dealii::CellId, std::vector< double > > *gradRhoValues, std::map< dealii::CellId, std::vector< double > > *rhoValuesSpinPolarized, std::map< dealii::CellId, std::vector< double > > *gradRhoValuesSpinPolarized, 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, 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 >
    void computeRhoFirstOrderResponseCPU (const NumberType *X, const NumberType *XPrime, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, const unsigned int totalNumWaveFunctions, const unsigned int numLocalDofs, operatorDFTClass &operatorMatrix, const unsigned int matrixFreeDofhandlerIndex, const dealii::DoFHandler< 3 > &dofHandler, const unsigned int totalLocallyOwnedCells, const unsigned int numberNodesPerElement, const unsigned int numQuadPoints, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHam, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergy, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHamSpinPolarized, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergySpinPolarized, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
     
    template<typename NumberType , typename NumberTypeLowPrec >
    void computeRhoFirstOrderResponseCPUMixedPrec (const NumberType *X, const NumberType *XPrime, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, const unsigned int totalNumWaveFunctions, const unsigned int numLocalDofs, operatorDFTClass &operatorMatrix, const unsigned int matrixFreeDofhandlerIndex, const dealii::DoFHandler< 3 > &dofHandler, const unsigned int totalLocallyOwnedCells, const unsigned int numberNodesPerElement, const unsigned int numQuadPoints, const std::vector< double > &kPointWeights, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHam, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergy, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesHamSpinPolarized, std::map< dealii::CellId, std::vector< double > > &rhoResponseValuesFermiEnergySpinPolarized, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
     
    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

    + +
    +
    +
    +template<typename NumberType >
    + + + + +
    using dftfe::distributedCPUMultiVec = typedef dftfe::linearAlgebra::MultiVector<NumberType, dftfe::utils::MemorySpace::HOST>
    +
    + +
    +
    + +

    ◆ distributedCPUVec

    + +
    +
    +
    +template<typename elem_type >
    + + + + +
    using dftfe::distributedCPUVec = typedef dealii::LinearAlgebra::distributed::Vector<elem_type, dealii::MemorySpace::Host>
    +
    + +
    +
    + +

    ◆ global_size_type

    + +
    +
    + + + + +
    using dftfe::global_size_type = typedef unsigned long int
    +
    + +
    +
    + +

    ◆ size_type

    + +
    +
    + + + + +
    using dftfe::size_type = typedef unsigned int
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ 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 
    + +
    +
    + +

    ◆ 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
    +
    + +
    +
    + +

    ◆ computeRhoFirstOrderResponseCPU()

    + +
    +
    +
    +template<typename NumberType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::computeRhoFirstOrderResponseCPU (const NumberType * X,
    const NumberType * XPrime,
    const std::vector< std::vector< double > > & densityMatDerFermiEnergy,
    const unsigned int totalNumWaveFunctions,
    const unsigned int numLocalDofs,
    operatorDFTClassoperatorMatrix,
    const unsigned int matrixFreeDofhandlerIndex,
    const dealii::DoFHandler< 3 > & dofHandler,
    const unsigned int totalLocallyOwnedCells,
    const unsigned int numberNodesPerElement,
    const unsigned int numQuadPoints,
    const std::vector< double > & kPointWeights,
    std::map< dealii::CellId, std::vector< double > > & rhoResponseValuesHam,
    std::map< dealii::CellId, std::vector< double > > & rhoResponseValuesFermiEnergy,
    std::map< dealii::CellId, std::vector< double > > & rhoResponseValuesHamSpinPolarized,
    std::map< dealii::CellId, std::vector< double > > & rhoResponseValuesFermiEnergySpinPolarized,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interpoolcomm,
    const MPI_Comm & interBandGroupComm,
    const dftParametersdftParams 
    )
    +
    + +
    +
    + +

    ◆ computeRhoFirstOrderResponseCPUMixedPrec()

    + +
    +
    +
    +template<typename NumberType , typename NumberTypeLowPrec >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::computeRhoFirstOrderResponseCPUMixedPrec (const NumberType * X,
    const NumberType * XPrime,
    const std::vector< std::vector< double > > & densityMatDerFermiEnergy,
    const unsigned int totalNumWaveFunctions,
    const unsigned int numLocalDofs,
    operatorDFTClassoperatorMatrix,
    const unsigned int matrixFreeDofhandlerIndex,
    const dealii::DoFHandler< 3 > & dofHandler,
    const unsigned int totalLocallyOwnedCells,
    const unsigned int numberNodesPerElement,
    const unsigned int numQuadPoints,
    const std::vector< double > & kPointWeights,
    std::map< dealii::CellId, std::vector< double > > & rhoResponseValuesHam,
    std::map< dealii::CellId, std::vector< double > > & rhoResponseValuesFermiEnergy,
    std::map< dealii::CellId, std::vector< double > > & rhoResponseValuesHamSpinPolarized,
    std::map< dealii::CellId, std::vector< double > > & rhoResponseValuesFermiEnergySpinPolarized,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interpoolcomm,
    const MPI_Comm & interBandGroupComm,
    const dftParametersdftParams 
    )
    +
    + +
    +
    + +

    ◆ 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,
    const unsigned int matrixFreeDofhandlerIndex,
    const unsigned int quadratureIndex,
    const std::vector< double > & kPointWeights,
    std::map< dealii::CellId, std::vector< double > > * rhoValues,
    std::map< dealii::CellId, std::vector< double > > * gradRhoValues,
    std::map< dealii::CellId, std::vector< double > > * rhoValuesSpinPolarized,
    std::map< dealii::CellId, std::vector< double > > * gradRhoValuesSpinPolarized,
    const bool isEvaluateGradRho,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interpoolcomm,
    const MPI_Comm & interBandGroupComm,
    const dftParametersdftParams,
    const bool spectrumSplit 
    )
    +
    + +
    +
    + +

    ◆ computeRhoGradRhoFromInterpolatedValues()

    + +
    +
    +
    +template<typename NumberType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::computeRhoGradRhoFromInterpolatedValues (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
    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 
    )
    +
    + +
    +
    + +

    ◆ 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_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..349c56333 --- /dev/null +++ b/namespacedftfe_1_1_l_a_p_a_c_k_support.html @@ -0,0 +1,659 @@ + + + + + + + +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 char * state_name (State s)
     
    const char * property_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

    + +
    +
    + + + + +
    enum dftfe::LAPACKSupport::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..3081d6c1a --- /dev/null +++ b/namespacedftfe_1_1basis.html @@ -0,0 +1,286 @@ + + + + + + + +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
    +
    +
    + + + + + + + + +

    +Classes

    class  FEBasisOperations
     
    class  FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >
     
    class  FEBasisOperationsBase
     
    + + + +

    +Enumerations

    enum  UpdateFlags { update_default = 0 +, update_values = 0x0001 +, update_gradients = 0x0002 +, update_transpose = 0x0004 + }
     
    + + + + + + + + + +

    +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

    + +
    +
    + + + + +
    enum dftfe::basis::UpdateFlags
    +
    + + + + + +
    Enumerator
    update_default 
    update_values 
    update_gradients 
    update_transpose 
    + +
    +
    +

    Function Documentation

    + +

    ◆ operator&()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    UpdateFlags dftfe::basis::operator& (const UpdateFlags f1,
    const UpdateFlags f2 
    )
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator&=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    UpdateFlags & dftfe::basis::operator&= (UpdateFlagsf1,
    const UpdateFlags f2 
    )
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator|()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    UpdateFlags dftfe::basis::operator| (const UpdateFlags f1,
    const UpdateFlags f2 
    )
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator|=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    UpdateFlags & dftfe::basis::operator|= (UpdateFlagsf1,
    const UpdateFlags f2 
    )
    +
    +inline
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1data_types.html b/namespacedftfe_1_1data_types.html new file mode 100644 index 000000000..b320cb101 --- /dev/null +++ b/namespacedftfe_1_1data_types.html @@ -0,0 +1,474 @@ + + + + + + + +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

    + +
    +
    + + + + +
    typedef unsigned int dftfe::dataTypes::local_size_type
    +
    + +
    +
    + +

    ◆ number

    + +
    +
    + + + + +
    typedef double dftfe::dataTypes::number
    +
    + +
    +
    + +

    ◆ numberFP32

    + +
    +
    + + + + +
    typedef float dftfe::dataTypes::numberFP32
    +
    + +
    +
    + +

    ◆ numberFP32ValueType

    + +
    +
    + + + + +
    typedef float dftfe::dataTypes::numberFP32ValueType
    +
    + +
    +
    + +

    ◆ numberValueType

    + +
    +
    + + + + +
    typedef double dftfe::dataTypes::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..5256eaa84 --- /dev/null +++ b/namespacedftfe_1_1dft_utils.html @@ -0,0 +1,1218 @@ + + + + + + + +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< double > getFractionalCoordinates (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..d3d96099b --- /dev/null +++ b/namespacedftfe_1_1eshelby_tensor.html @@ -0,0 +1,464 @@ + + + + + + + +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, double > getVselfBallEshelbyTensor (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 > > getShadowPotentialForceRhoDiffXcEshelbyTensor (const dealii::VectorizedArray< double > &shadowKSRhoMinMinusRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &shadowKSGradRhoMinMinusGradRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRho, const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derVxcGradRho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &der2ExcGradRho)
     
    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)

    + +
    +
    + +

    ◆ getShadowPotentialForceRhoDiffXcEshelbyTensor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getShadowPotentialForceRhoDiffXcEshelbyTensor (const dealii::VectorizedArray< double > & shadowKSRhoMinMinusRho,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & shadowKSGradRhoMinMinusGradRho,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradRho,
    const dealii::VectorizedArray< double > & vxc,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & derVxcGradRho,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & derExcGradRho,
    const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > & der2ExcGradRho 
    )
    +
    +

    exchange-correlation part of the shadow potential (XL-BOMD) Eshelby tensor

    + +
    +
    + +

    ◆ 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..fe678db82 --- /dev/null +++ b/namespacedftfe_1_1eshelby_tensor_s_p.html @@ -0,0 +1,220 @@ + + + + + + + +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..bf414046a --- /dev/null +++ b/namespacedftfe_1_1force.html @@ -0,0 +1,255 @@ + + + + + + + +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

    void wfcContractionsForceKernelsAllH (operatorDFTClass &operatorMatrix, 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 *nonTrivialIdToElemIdMapH, const unsigned int *projecterKetTimesFlattenedVectorLocalIdsH, const unsigned int MLoc, const unsigned int N, const unsigned int numCells, const unsigned int numQuads, const unsigned int numQuadsNLP, const unsigned int numNodesPerElement, const unsigned int totalNonTrivialPseudoWfcs, 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()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::force::wfcContractionsForceKernelsAllH (operatorDFTClassoperatorMatrix,
    const dataTypes::numberX,
    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 * nonTrivialIdToElemIdMapH,
    const unsigned int * projecterKetTimesFlattenedVectorLocalIdsH,
    const unsigned int MLoc,
    const unsigned int N,
    const unsigned int numCells,
    const unsigned int numQuads,
    const unsigned int numQuadsNLP,
    const unsigned int numNodesPerElement,
    const unsigned int totalNonTrivialPseudoWfcs,
    double * eshelbyTensorQuadValuesH,
    dataTypes::numberprojectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattenedH,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interBandGroupComm,
    const bool isPsp,
    const bool isFloatingChargeForces,
    const bool addEk,
    const dftParametersdftParams 
    )
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1linear_algebra.html b/namespacedftfe_1_1linear_algebra.html new file mode 100644 index 000000000..bad9859ac --- /dev/null +++ b/namespacedftfe_1_1linear_algebra.html @@ -0,0 +1,139 @@ + + + + + + + +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  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..a434d038a --- /dev/null +++ b/namespacedftfe_1_1linear_algebra_operations.html @@ -0,0 +1,1162 @@ + + + + + + + +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 >
    std::pair< double, double > lanczosLowerUpperBoundEigenSpectrum (operatorDFTClass &operatorMatrix, const distributedCPUMultiVec< T > &vect, const dftParameters &dftParams)
     Calculates an estimate of lower and upper bounds of a matrix using k-step Lanczos method.
     
    template<typename T >
    void chebyshevFilter (operatorDFTClass &operatorMatrix, distributedCPUMultiVec< T > &X, const unsigned int numberComponents, const unsigned int m, const double a, const double b, const double a0)
     Apply Chebyshev filter to a given subspace.
     
    template<typename T >
    void chebyshevFilterOpt (operatorDFTClass &operatorMatrix, distributedCPUMultiVec< T > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix, const unsigned int numberComponents, const unsigned int m, const double a, const double b, const double a0)
     
    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 &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 &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 &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 &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 &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 &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.
     
    +

    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 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::chebyshevFilter (operatorDFTClassoperatorMatrix,
    distributedCPUMultiVec< T > & X,
    const unsigned int numberComponents,
    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
    +
    +
    + +
    +
    + +

    ◆ chebyshevFilterOpt()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::chebyshevFilterOpt (operatorDFTClassoperatorMatrix,
    distributedCPUMultiVec< T > & X,
    std::vector< dataTypes::number > & cellWaveFunctionMatrix,
    const unsigned int numberComponents,
    const unsigned int m,
    const double a,
    const double b,
    const double a0 
    )
    +
    + +
    +
    + +

    ◆ computeEigenResidualNorm()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::computeEigenResidualNorm (operatorDFTClassoperatorMatrix,
    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 dftParametersdftParams 
    )
    +
    + +

    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 (operatorDFTClassoperatorMatrix,
    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,
    elpaScalaManagerelpaScala,
    const dftParametersdftParams 
    )
    +
    + +

    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 >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::pair< double, double > dftfe::linearAlgebraOperations::lanczosLowerUpperBoundEigenSpectrum (operatorDFTClassoperatorMatrix,
    const distributedCPUMultiVec< T > & vect,
    const dftParametersdftParams 
    )
    +
    + +

    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 dftParametersdftParams 
    )
    +
    + +

    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 (elpaScalaManagerelpaScala,
    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 dftParametersdftParams 
    )
    +
    + +

    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 (operatorDFTClassoperatorMatrix,
    elpaScalaManagerelpaScala,
    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 dftParametersdftParams,
    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 (operatorDFTClassoperatorMatrix,
    elpaScalaManagerelpaScala,
    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 dftParametersdftParams 
    )
    +
    + +

    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 (operatorDFTClassoperatorMatrix,
    elpaScalaManagerelpaScala,
    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 dftParametersdftParams 
    )
    +
    + +

    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 (operatorDFTClassoperatorMatrix,
    elpaScalaManagerelpaScala,
    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 dftParametersdftParams 
    )
    +
    + +

    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
    +
    +
    + +
    +
    +
    + + + + 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..ba684fe19 --- /dev/null +++ b/namespacedftfe_1_1linear_algebra_operations_1_1internal.html @@ -0,0 +1,1039 @@ + + + + + + + +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 dftParametersdftParams 
    )
    +
    + +

    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 dftParametersdftParams,
    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 dftParametersdftParams 
    )
    +
    + +

    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 dftParametersdftParams 
    )
    +
    + +

    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 dftParametersdftParams 
    )
    +
    + +

    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 dftParametersdftParams,
    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 dftParametersdftParams,
    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 dftParametersdftParams,
    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 dftParametersdftParams,
    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 dftParametersdftParams,
    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..a2d467bb5 --- /dev/null +++ b/namespacedftfe_1_1mesh_gen_utils.html @@ -0,0 +1,339 @@ + + + + + + + +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 dftParametersdftParams 
    )
    +
    +inline
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1pseudo_utils.html b/namespacedftfe_1_1pseudo_utils.html new file mode 100644 index 000000000..ee0a201af --- /dev/null +++ b/namespacedftfe_1_1pseudo_utils.html @@ -0,0 +1,577 @@ + + + + + + + +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
     
    class  xmlTodftfeParser
     converts pseudopotential file from xml format to dftfe format More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    std::string find_start_element (std::string name, std::ifstream &upfFile)
     
    void find_end_element (std::string name, std::ifstream &upfFile)
     
    void seek_str (std::string tag, std::ifstream &upfFile)
     
    std::string get_attr (std::string buf, std::string attr)
     
    int upfToxml (const std::string &inputFile, const std::string &outputFile, const int verbosity, unsigned int &nlccFlag)
     read a given upf pseudopotential file name in upf format and convert to xml format
     
    int convert (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()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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
    +
    + +
    +
    + +

    ◆ find_end_element()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void dftfe::pseudoUtils::find_end_element (std::string name,
    std::ifstream & upfFile 
    )
    +
    + +
    +
    + +

    ◆ find_start_element()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::string dftfe::pseudoUtils::find_start_element (std::string name,
    std::ifstream & upfFile 
    )
    +
    + +
    +
    + +

    ◆ get_attr()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::string dftfe::pseudoUtils::get_attr (std::string buf,
    std::string attr 
    )
    +
    + +
    +
    + +

    ◆ 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
    +
    + +
    +
    + +

    ◆ seek_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void dftfe::pseudoUtils::seek_str (std::string tag,
    std::ifstream & upfFile 
    )
    +
    + +
    +
    + +

    ◆ upfToxml()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int dftfe::pseudoUtils::upfToxml (const std::string & inputFile,
    const std::string & outputFile,
    const int verbosity,
    unsigned int & nlccFlag 
    )
    +
    + +

    read a given upf pseudopotential file name in upf format and convert to xml format

    +
    Parameters
    + + + + +
    inputFilefilePath location of the upf file
    outputFilefilePath location of xml file
    nlccFlagflag indicating the nonlinear core-correction
    +
    +
    +
    Returns
    int errorCode indicating success or failure of conversion
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1types.html b/namespacedftfe_1_1types.html new file mode 100644 index 000000000..a3876f627 --- /dev/null +++ b/namespacedftfe_1_1types.html @@ -0,0 +1,110 @@ + + + + + + + +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

    + +
    +
    + + + + +
    using dftfe::types::blas_int = typedef int
    +
    +

    Integer type in BLAS.

    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1utils.html b/namespacedftfe_1_1utils.html new file mode 100644 index 000000000..e00859ed8 --- /dev/null +++ b/namespacedftfe_1_1utils.html @@ -0,0 +1,5245 @@ + + + + + + + +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< double > complexConj (const std::complex< double > x)
     
    std::complex< float > complexConj (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)
     
    int * makeDataTypeDeviceCompatible (int *a)
     
    const int * makeDataTypeDeviceCompatible (const int *a)
     
    long int * makeDataTypeDeviceCompatible (long int *a)
     
    const long int * makeDataTypeDeviceCompatible (const long int *a)
     
    unsigned int * makeDataTypeDeviceCompatible (unsigned int *a)
     
    const unsigned int * makeDataTypeDeviceCompatible (const unsigned int *a)
     
    unsigned long int * makeDataTypeDeviceCompatible (unsigned long int *a)
     
    const unsigned long int * makeDataTypeDeviceCompatible (const unsigned long int *a)
     
    double * makeDataTypeDeviceCompatible (double *a)
     
    const double * makeDataTypeDeviceCompatible (const double *a)
     
    float * makeDataTypeDeviceCompatible (float *a)
     
    const float * makeDataTypeDeviceCompatible (const float *a)
     
    cuDoubleComplex * makeDataTypeDeviceCompatible (std::complex< double > *a)
     
    const cuDoubleComplex * makeDataTypeDeviceCompatible (const std::complex< double > *a)
     
    cuFloatComplex * makeDataTypeDeviceCompatible (std::complex< float > *a)
     
    const cuFloatComplex * makeDataTypeDeviceCompatible (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, memorySpaceDst > memoryStorageFromSTL (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

    + +
    +
    + + + + +
    typedef hipblasHandle_t dftfe::utils::deviceBlasHandle_t
    +
    + +
    +
    + +

    ◆ deviceBlasMath_t

    + +
    +
    + + + + +
    typedef cublasMath_t dftfe::utils::deviceBlasMath_t
    +
    + +
    +
    + +

    ◆ deviceBlasOperation_t

    + +
    +
    + + + + +
    typedef hipblasOperation_t dftfe::utils::deviceBlasOperation_t
    +
    + +
    +
    + +

    ◆ deviceBlasStatus_t

    + +
    +
    + + + + +
    typedef hipblasStatus_t dftfe::utils::deviceBlasStatus_t
    +
    + +
    +
    + +

    ◆ deviceDoubleComplex

    + +
    +
    + + + + +
    typedef hipDoubleComplex dftfe::utils::deviceDoubleComplex
    +
    + +
    +
    + +

    ◆ deviceError_t

    + +
    +
    + + + + +
    typedef hipError_t dftfe::utils::deviceError_t
    +
    + +
    +
    + +

    ◆ deviceEvent_t

    + +
    +
    + + + + +
    typedef hipEvent_t dftfe::utils::deviceEvent_t
    +
    + +
    +
    + +

    ◆ deviceFloatComplex

    + +
    +
    + + + + +
    typedef hipFloatComplex dftfe::utils::deviceFloatComplex
    +
    + +
    +
    + +

    ◆ deviceStream_t

    + +
    +
    + + + + +
    typedef hipStream_t dftfe::utils::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..65fffd804 --- /dev/null +++ b/namespacedftfe_1_1utils_1_1mpi.html @@ -0,0 +1,145 @@ + + + + + + + +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
     
    + + + +

    +Enumerations

    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

    + +

    ◆ 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..8aa60fecd --- /dev/null +++ b/namespacedftfe_1_1vector_tools.html @@ -0,0 +1,788 @@ + + + + + + + +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..8aa09d36b --- /dev/null +++ b/namespacemembers.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:
    + +

    - a -

    +
    + + + + diff --git a/namespacemembers_b.html b/namespacemembers_b.html new file mode 100644 index 000000000..2ff1a5d52 --- /dev/null +++ b/namespacemembers_b.html @@ -0,0 +1,85 @@ + + + + + + + +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..9adffc82b --- /dev/null +++ b/namespacemembers_c.html @@ -0,0 +1,151 @@ + + + + + + + +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..7819d2111 --- /dev/null +++ b/namespacemembers_d.html @@ -0,0 +1,109 @@ + + + + + + + +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..e2fd79b66 --- /dev/null +++ b/namespacemembers_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 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..bbdc963f0 --- /dev/null +++ b/namespacemembers_enum.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 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..d51d5fbab --- /dev/null +++ b/namespacemembers_eval.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 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..1005e624a --- /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..5a44fdaaf --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,85 @@ + + + + + + + +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..47e8c0c0c --- /dev/null +++ b/namespacemembers_func_b.html @@ -0,0 +1,84 @@ + + + + + + + +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..d3b04d3df --- /dev/null +++ b/namespacemembers_func_c.html @@ -0,0 +1,143 @@ + + + + + + + +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..3a51a19a0 --- /dev/null +++ b/namespacemembers_func_d.html @@ -0,0 +1,90 @@ + + + + + + + +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..3c0ad9dfa --- /dev/null +++ b/namespacemembers_func_e.html @@ -0,0 +1,85 @@ + + + + + + + +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..9f7260dd1 --- /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..e0ea18025 --- /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..980d0b7d8 --- /dev/null +++ b/namespacemembers_func_i.html @@ -0,0 +1,90 @@ + + + + + + + +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..97c77e8ca --- /dev/null +++ b/namespacemembers_func_l.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:
    + +

    - l -

    +
    + + + + diff --git a/namespacemembers_func_m.html b/namespacemembers_func_m.html new file mode 100644 index 000000000..014ce6ced --- /dev/null +++ b/namespacemembers_func_m.html @@ -0,0 +1,90 @@ + + + + + + + +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..33ef92c6f --- /dev/null +++ b/namespacemembers_func_n.html @@ -0,0 +1,84 @@ + + + + + + + +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..9138f6b4c --- /dev/null +++ b/namespacemembers_func_o.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:
    + +

    - o -

    +
    + + + + diff --git a/namespacemembers_func_p.html b/namespacemembers_func_p.html new file mode 100644 index 000000000..c5cf624b8 --- /dev/null +++ b/namespacemembers_func_p.html @@ -0,0 +1,158 @@ + + + + + + + +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..800f03fb7 --- /dev/null +++ b/namespacemembers_func_r.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:
    + +

    - r -

    +
    + + + + diff --git a/namespacemembers_func_s.html b/namespacemembers_func_s.html new file mode 100644 index 000000000..4df09c9cd --- /dev/null +++ b/namespacemembers_func_s.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:
    + +

    - s -

    +
    + + + + diff --git a/namespacemembers_func_t.html b/namespacemembers_func_t.html new file mode 100644 index 000000000..440b642e3 --- /dev/null +++ b/namespacemembers_func_t.html @@ -0,0 +1,85 @@ + + + + + + + +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_u.html b/namespacemembers_func_u.html new file mode 100644 index 000000000..076815d3b --- /dev/null +++ b/namespacemembers_func_u.html @@ -0,0 +1,84 @@ + + + + + + + +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:
    + +

    - u -

    +
    + + + + diff --git a/namespacemembers_func_v.html b/namespacemembers_func_v.html new file mode 100644 index 000000000..39f800192 --- /dev/null +++ b/namespacemembers_func_v.html @@ -0,0 +1,84 @@ + + + + + + + +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..847e70667 --- /dev/null +++ b/namespacemembers_func_w.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:
    + +

    - w -

    +
    + + + + diff --git a/namespacemembers_func_x.html b/namespacemembers_func_x.html new file mode 100644 index 000000000..6c724a16d --- /dev/null +++ b/namespacemembers_func_x.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:
    + +

    - x -

    +
    + + + + diff --git a/namespacemembers_g.html b/namespacemembers_g.html new file mode 100644 index 000000000..7131ac060 --- /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..dadfa5a65 --- /dev/null +++ b/namespacemembers_h.html @@ -0,0 +1,85 @@ + + + + + + + +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..37f816389 --- /dev/null +++ b/namespacemembers_i.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:
    + +

    - i -

    +
    + + + + diff --git a/namespacemembers_l.html b/namespacemembers_l.html new file mode 100644 index 000000000..9fa4a723d --- /dev/null +++ b/namespacemembers_l.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 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..705dadff4 --- /dev/null +++ b/namespacemembers_m.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:
    + +

    - m -

    +
    + + + + diff --git a/namespacemembers_n.html b/namespacemembers_n.html new file mode 100644 index 000000000..d6f2e2836 --- /dev/null +++ b/namespacemembers_n.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:
    + +

    - n -

    +
    + + + + diff --git a/namespacemembers_o.html b/namespacemembers_o.html new file mode 100644 index 000000000..fe0320a6b --- /dev/null +++ b/namespacemembers_o.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:
    + +

    - o -

    +
    + + + + diff --git a/namespacemembers_p.html b/namespacemembers_p.html new file mode 100644 index 000000000..f32edec9d --- /dev/null +++ b/namespacemembers_p.html @@ -0,0 +1,159 @@ + + + + + + + +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..ca9d1e64e --- /dev/null +++ b/namespacemembers_r.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:
    + +

    - r -

    +
    + + + + diff --git a/namespacemembers_s.html b/namespacemembers_s.html new file mode 100644 index 000000000..64dc91ede --- /dev/null +++ b/namespacemembers_s.html @@ -0,0 +1,101 @@ + + + + + + + +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..a1b21cf94 --- /dev/null +++ b/namespacemembers_t.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:
    + +

    - t -

    +
    + + + + diff --git a/namespacemembers_type.html b/namespacemembers_type.html new file mode 100644 index 000000000..21785c60e --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,108 @@ + + + + + + + +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..5e2bea081 --- /dev/null +++ b/namespacemembers_u.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:
    + +

    - u -

    +
    + + + + diff --git a/namespacemembers_v.html b/namespacemembers_v.html new file mode 100644 index 000000000..d716b5f6b --- /dev/null +++ b/namespacemembers_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 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..85047e8ca --- /dev/null +++ b/namespacemembers_vars.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 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..03ede59db --- /dev/null +++ b/namespacemembers_w.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:
    + +

    - w -

    +
    + + + + diff --git a/namespacemembers_x.html b/namespacemembers_x.html new file mode 100644 index 000000000..3bd2876a0 --- /dev/null +++ b/namespacemembers_x.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:
    + +

    - x -

    +
    + + + + diff --git a/namespacemembers_z.html b/namespacemembers_z.html new file mode 100644 index 000000000..42fef81f0 --- /dev/null +++ b/namespacemembers_z.html @@ -0,0 +1,84 @@ + + + + + + + +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..602f842c9 --- /dev/null +++ b/non_linear_solver_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..c13cf7e91 --- /dev/null +++ b/non_linear_solver_8h_source.html @@ -0,0 +1,243 @@ + + + + + + + +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
    + +
    Definition upfToxml.cc:37
    +
    + + + + diff --git a/nonlinear_solver_problem_8h.html b/nonlinear_solver_problem_8h.html new file mode 100644 index 000000000..b39ee2b39 --- /dev/null +++ b/nonlinear_solver_problem_8h.html @@ -0,0 +1,104 @@ + + + + + + + +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..9c7b55e53 --- /dev/null +++ b/nonlinear_solver_problem_8h_source.html @@ -0,0 +1,241 @@ + + + + + + + +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.
    + +
    Definition upfToxml.cc:37
    +
    + + + + diff --git a/nudged_elastic_band_class_8h.html b/nudged_elastic_band_class_8h.html new file mode 100644 index 000000000..b9d18b207 --- /dev/null +++ b/nudged_elastic_band_class_8h.html @@ -0,0 +1,118 @@ + + + + + + + +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..1b5f192fe --- /dev/null +++ b/nudged_elastic_band_class_8h_source.html @@ -0,0 +1,445 @@ + + + + + + + +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 int d_numberOfImages,
    +
    55 const bool imageFreeze,
    +
    56 double Kmax,
    +
    57 double Kmin,
    +
    58 const double pathThreshold,
    +
    59 const int maximumNEBIteration,
    +
    60 const unsigned int _maxLineSearchIterCGPRP,
    +
    61 const unsigned int _lbfgsNumPastSteps,
    +
    62 const std::string &_bfgsStepMethod,
    +
    63 const double optimizermaxIonUpdateStep,
    +
    64 const std::string &optimizationSolver,
    +
    65 const std::string &coordinatesFileNEB,
    +
    66 const std::string &domainVectorsFileNEB,
    +
    67 const std::string &ionRelaxFlagsFile);
    +
    68
    +
    69 //~nudgedElasticBandClass();
    +
    70
    +
    71 double d_kmax = 0.1; // 0.1 Ha/bohr
    +
    72 double d_kmin = 0.1; // 0.1Ha/bohr
    + +
    74 /**
    +
    75 * @brief Calls optimizer(nonLinearClass) solve. Prints the Final NEB energies and forces.
    +
    76 * References:
    +
    77 * 1.
    +
    78 * https://pubs.aip.org/aip/jcp/article/113/22/9978/184858/Improved-tangent-estimate-in-the-nudged-elastic
    +
    79 * 2.
    +
    80 * https://pubs.aip.org/aip/jcp/article/128/13/134106/977389/Optimization-methods-for-finding-minimum-energy
    +
    81 */
    +
    82 int
    + +
    84 /**
    +
    85 * @brief Returns the Normed vetor satistfying ||v||_2 = 1
    +
    86 */
    +
    87 void
    +
    88 ReturnNormedVector(std::vector<double> &, int);
    +
    89 /**
    +
    90 * @brief Calculates the L-norm of a vector
    +
    91 */
    +
    92 void
    +
    93 LNorm(double &, std::vector<double>, int, int);
    +
    94 /**
    +
    95 * @brief Identifies the images to freeze, calculates gradient.
    +
    96 * First prints the Image No., free energy and force error of each image
    +
    97 * Prints activation energy of current step
    +
    98 */
    +
    99 void
    +
    100 gradient(std::vector<double> &gradient);
    +
    101 /**
    +
    102 * @brief Returns the total DoFs of the optimizer problem.
    +
    103 */
    +
    104 unsigned int
    + +
    106 /**
    +
    107 * @brief Updates the positions of atoms and the total step count.
    +
    108 * Calls dftPtr colve to compute eenergy and force for current step.
    +
    109 */
    +
    110 void
    +
    111 update(const std::vector<double> &solution,
    +
    112 const bool computeForces = true,
    +
    113 const bool useSingleAtomSolutionsInitialGuess = false);
    +
    114 /**
    +
    115 * @brief Saves the output files for restart.
    +
    116 */
    +
    117 void
    + +
    119 /**
    +
    120 * @brief initializes the data member d_relaxationFlags, nonlinearSolver,
    +
    121 *
    +
    122 */
    +
    123 void
    + +
    125 /**
    +
    126 * @brief Not working. Finds the saddle point energy.
    +
    127 */
    +
    128 void
    +
    129 value(std::vector<double> &functionValue);
    +
    130
    +
    131 /// not implemented
    +
    132 void
    +
    133 precondition(std::vector<double> &s, const std::vector<double> &gradient);
    +
    134 /// not implemented
    +
    135 void
    +
    136 solution(std::vector<double> &solution);
    +
    137 /// not implemented
    +
    138 std::vector<unsigned int>
    + +
    140
    +
    141 private:
    +
    142 std::vector<std::unique_ptr<dftfeWrapper>> d_dftfeWrapper;
    + +
    144 std::unique_ptr<nonLinearSolver> d_nonLinearSolverPtr;
    +
    145 // parallel communication objects
    + +
    147 // const unsigned int n_mpi_processes;
    +
    148 const unsigned int d_this_mpi_process;
    +
    149
    +
    150 // conditional stream object
    +
    151 dealii::ConditionalOStream pcout;
    +
    152
    + + + +
    156
    +
    157 /// total number of calls to update()
    + + + + + +
    163 unsigned int d_restartFlag;
    + + +
    166 unsigned int d_numberOfImages;
    + +
    168 // Solver Details
    + + + +
    172 std::string bfgsStepMethod;
    + +
    174 unsigned int lbfgsNumPastSteps;
    + + +
    177
    +
    178
    +
    179 std::map<int, std::vector<std::vector<double>>> d_atomLocationsInitial;
    +
    180 std::vector<unsigned int> d_relaxationFlags;
    +
    181 std::vector<double> d_externalForceOnAtom;
    +
    182 std::vector<double> d_ImageError;
    +
    183 std::vector<double> d_Length;
    + +
    185 const MPI_Comm &
    + +
    187
    +
    188 /**
    +
    189 * @brief Calculate the tangent between each image
    +
    190 */
    +
    191 void
    +
    192 CalculatePathTangent(int, std::vector<double> &);
    +
    193
    +
    194 /**
    +
    195 * @brief Calculates the force on atom along the tangent between images
    +
    196 */
    +
    197 void
    + +
    199 std::vector<double> &,
    +
    200 const std::vector<double> &);
    +
    201 /**
    +
    202 * @brief Calculates force perpendicular to the tangent
    +
    203 */
    +
    204 void
    + +
    206 std::vector<double> &,
    +
    207 const std::vector<double> &,
    +
    208 const std::vector<double> &);
    +
    209
    +
    210
    +
    211 /**
    +
    212 * @brief Calculates the force due to the spring.
    +
    213 */
    +
    214 void
    +
    215 CalculateSpringForce(int, std::vector<double> &, std::vector<double>);
    +
    216
    +
    217 /**
    +
    218 * @brief Calculates F_NEB = G_per+ F_spring
    +
    219 */
    +
    220 void
    +
    221 CalculateForceonImage(const std::vector<double> &,
    +
    222 const std::vector<double> &,
    +
    223 std::vector<double> &);
    +
    224
    +
    225 /**
    +
    226 * @brief Calculate path length: max diaplacement of atoms
    +
    227 */
    +
    228 double
    + +
    230
    +
    231 /**
    +
    232 * @brief Write Restart files
    +
    233 */
    +
    234 void
    + +
    236
    +
    237
    +
    238 /**
    +
    239 * @brief Find spring constant based on k_max and k_min.
    +
    240 */
    +
    241 void
    + +
    243
    +
    244 /**
    +
    245 * @brief Calculate F_per norm
    +
    246 */
    +
    247 void
    +
    248 ImageError(int image, double &Force);
    +
    249
    +
    250 /**
    +
    251 * @brief set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters declared by user.
    +
    252 */
    +
    253 void
    + +
    255
    +
    256 /**
    +
    257 * @brief check for convergence.
    +
    258 *
    +
    259 */
    +
    260 bool
    +
    261 isConverged() const;
    +
    262 /**
    +
    263 * @brief Check the restart files.
    +
    264 */
    +
    265 int
    + +
    267 };
    +
    +
    268
    +
    269
    +
    270} // namespace dftfe
    +
    271#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:144
    +
    std::string d_optimizationSolver
    Definition nudgedElasticBandClass.h:175
    +
    std::map< int, std::vector< std::vector< double > > > d_atomLocationsInitial
    Definition nudgedElasticBandClass.h:179
    +
    bool d_solverRestart
    Definition nudgedElasticBandClass.h:162
    +
    dftBase * d_dftPtr
    Definition nudgedElasticBandClass.h:143
    +
    int d_NEBImageno
    Definition nudgedElasticBandClass.h:73
    +
    double d_kmin
    Definition nudgedElasticBandClass.h:72
    +
    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:154
    +
    dealii::ConditionalOStream pcout
    Definition nudgedElasticBandClass.h:151
    +
    unsigned int d_countrelaxationFlags
    Definition nudgedElasticBandClass.h:167
    +
    void precondition(std::vector< double > &s, const std::vector< double > &gradient)
    not implemented
    +
    const unsigned int d_this_mpi_process
    Definition nudgedElasticBandClass.h:148
    +
    unsigned int maxLineSearchIterCGPRP
    Definition nudgedElasticBandClass.h:171
    +
    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:159
    +
    unsigned int d_maximumNEBIteration
    Definition nudgedElasticBandClass.h:169
    +
    double d_kmax
    Definition nudgedElasticBandClass.h:71
    +
    unsigned int d_numberOfImages
    Definition nudgedElasticBandClass.h:166
    +
    void set()
    set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters dec...
    +
    unsigned int lbfgsNumPastSteps
    Definition nudgedElasticBandClass.h:174
    +
    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:184
    +
    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...
    +
    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:173
    +
    void CalculateSpringConstant(int, double &)
    Find spring constant based on k_max and k_min.
    +
    double d_maximumAtomForceToBeRelaxed
    Definition nudgedElasticBandClass.h:165
    +
    unsigned int d_numberGlobalCharges
    Definition nudgedElasticBandClass.h:164
    +
    bool isConverged() const
    check for convergence.
    +
    unsigned int d_restartFlag
    Definition nudgedElasticBandClass.h:163
    +
    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:158
    +
    double d_optimizertolerance
    Definition nudgedElasticBandClass.h:170
    +
    std::vector< double > d_ImageError
    Definition nudgedElasticBandClass.h:182
    +
    void init()
    initializes the data member d_relaxationFlags, nonlinearSolver,
    +
    const MPI_Comm & getMPICommunicator()
    get MPI communicator.
    +
    std::vector< double > d_externalForceOnAtom
    Definition nudgedElasticBandClass.h:181
    +
    std::vector< unsigned int > d_relaxationFlags
    Definition nudgedElasticBandClass.h:180
    +
    std::string bfgsStepMethod
    Definition nudgedElasticBandClass.h:172
    +
    bool d_isRestart
    Definition nudgedElasticBandClass.h:161
    +
    std::string d_ionRelaxFlagsFile
    Definition nudgedElasticBandClass.h:176
    +
    bool d_imageFreeze
    Definition nudgedElasticBandClass.h:155
    +
    std::string d_solverRestartPath
    Definition nudgedElasticBandClass.h:154
    +
    std::vector< double > d_Length
    Definition nudgedElasticBandClass.h:183
    +
    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:160
    +
    std::vector< std::unique_ptr< dftfeWrapper > > d_dftfeWrapper
    Definition nudgedElasticBandClass.h:142
    +
    const MPI_Comm d_mpiCommParent
    Definition nudgedElasticBandClass.h:146
    +
    int d_verbosity
    Definition nudgedElasticBandClass.h:153
    +
    std::string d_coordinatesFileNEB
    Definition nudgedElasticBandClass.h:184
    +
    void ReturnNormedVector(std::vector< double > &, int)
    Returns the Normed vetor satistfying ||v||_2 = 1.
    +
    nudgedElasticBandClass(const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, 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 save()
    Saves the output files for restart.
    + + + + + +
    Contains commonly used I/O file utils functions.
    + + +
    Definition upfToxml.cc:37
    + + +
    + + + + 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
     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..a24d645eb --- /dev/null +++ b/operator_8h_source.html @@ -0,0 +1,497 @@ + + + + + + + +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
    +
    31namespace dftfe
    +
    32{
    +
    33 /**
    +
    34 * @brief Base class for building the DFT operator and the action of operator on a vector
    +
    35 *
    +
    36 * @author Phani Motamarri, Sambit Das
    +
    37 */
    +
    + +
    39 {
    +
    40 //
    +
    41 // methods
    +
    42 //
    +
    43 public:
    +
    44 /**
    +
    45 * @brief Destructor.
    +
    46 */
    +
    47 virtual ~operatorDFTClass() = 0;
    +
    48
    +
    49 /**
    +
    50 * @brief initialize operatorClass
    +
    51 *
    +
    52 */
    +
    53 virtual void
    +
    54 init() = 0;
    +
    55
    +
    56 /**
    +
    57 * @brief initializes parallel layouts and index maps for HX, XtHX and creates a flattened array format for X
    +
    58 *
    +
    59 * @param wavefunBlockSize number of wavefunction vector (block size of X).
    +
    60 * @param flag controls the creation of flattened array format and index maps or only index maps
    +
    61 *
    +
    62 * @return X format to store a multi-vector array
    +
    63 * in a flattened format with all the wavefunction values corresponding to a
    +
    64 * given node being stored contiguously
    +
    65 *
    +
    66 */
    +
    67 virtual void
    +
    68 reinit(const unsigned int wavefunBlockSize,
    + +
    70 bool flag) = 0;
    +
    71
    +
    72 virtual void
    +
    73 reinit(const unsigned int wavefunBlockSize,
    + +
    75 bool flag) = 0;
    +
    76
    +
    77 virtual void
    +
    78 reinit(const unsigned int wavefunBlockSize) = 0;
    +
    79
    +
    80 virtual void
    +
    81 reinitkPointSpinIndex(const unsigned int kPointIndex,
    +
    82 const unsigned int spinIndex) = 0;
    +
    83
    +
    84 virtual void
    + +
    86 const unsigned int numberWaveFunctions,
    + +
    88 std::vector<dataTypes::number> & cellWaveFunctionMatrix) = 0;
    +
    89
    +
    90
    +
    91 virtual void
    + +
    93 const unsigned int wavefunBlockSize,
    +
    94 const std::vector<dataTypes::number> & cellWaveFunctionMatrix,
    + +
    96
    +
    97 virtual void
    +
    98 initWithScalar(const unsigned int numberWaveFunctions,
    +
    99 double scalarValue,
    +
    100 std::vector<dataTypes::number> &cellWaveFunctionMatrix) = 0;
    +
    101
    +
    102 virtual void
    +
    103 axpby(double scalarA,
    +
    104 double scalarB,
    +
    105 const unsigned int numberWaveFunctions,
    +
    106 const std::vector<dataTypes::number> &cellXWaveFunctionMatrix,
    +
    107 std::vector<dataTypes::number> & cellYWaveFunctionMatrix) = 0;
    +
    108
    +
    109 virtual void
    + +
    111 std::vector<unsigned int> &globalArrayClassificationMap) = 0;
    +
    112
    +
    113
    +
    114 /**
    +
    115 * @brief compute diagonal mass matrix
    +
    116 *
    +
    117 * @param dofHandler dofHandler associated with the current mesh
    +
    118 * @param constraintMatrix constraints to be used
    +
    119 * @param sqrtMassVec output the value of square root of diagonal mass matrix
    +
    120 * @param invSqrtMassVec output the value of inverse square root of diagonal mass matrix
    +
    121 */
    +
    122 virtual void
    +
    123 computeMassVector(const dealii::DoFHandler<3> & dofHandler,
    +
    124 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    125 distributedCPUVec<double> & sqrtMassVec,
    +
    126 distributedCPUVec<double> &invSqrtMassVec) = 0;
    +
    127
    +
    128
    +
    129 /**
    +
    130 * @brief Compute operator times multi-field vectors
    +
    131 *
    +
    132 * @param X Vector containing multi-wavefunction fields (though X does not
    +
    133 * change inside the function it is scaled and rescaled back to
    +
    134 * avoid duplication of memory and hence is not const)
    +
    135 * @param numberComponents number of wavefunctions associated with a given node
    +
    136 * @param Y Vector containing multi-component fields after operator times vectors product
    +
    137 */
    +
    138 virtual void
    + +
    140 const unsigned int numberComponents,
    +
    141 const bool scaleFlag,
    +
    142 const double scalar,
    + +
    144 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false) = 0;
    +
    145
    +
    146
    +
    147 virtual void
    + +
    149 std::vector<dataTypes::number> & cellSrcWaveFunctionMatrix,
    +
    150 const unsigned int numberWaveFunctions,
    +
    151 const bool scaleFlag,
    +
    152 const double scalar,
    +
    153 const double scalarA,
    +
    154 const double scalarB,
    + +
    156 std::vector<dataTypes::number> &cellDstWaveFunctionMatrix) = 0;
    +
    157
    +
    158 virtual void
    + + + +
    162 & projectorKetTimesVectorFlattened,
    +
    163 const unsigned int numberWaveFunctions) = 0;
    +
    164
    +
    165
    +
    166 /**
    +
    167 * @brief Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj
    +
    168 *
    +
    169 * @param X Vector of Vectors containing multi-wavefunction fields
    +
    170 * @param numberComponents number of wavefunctions associated with a given node
    +
    171 * @param ProjMatrix projected small matrix
    +
    172 */
    +
    173 virtual void
    + +
    175 const unsigned int numberComponents,
    +
    176 const unsigned int numberLocalDofs,
    +
    177 std::vector<dataTypes::number> &ProjHam) = 0;
    +
    178
    +
    179 /**
    +
    180 * @brief Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj
    +
    181 *
    +
    182 * @param X Vector of Vectors containing multi-wavefunction fields
    +
    183 * @param numberComponents number of wavefunctions associated with a given node
    +
    184 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
    +
    185 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
    +
    186 * of the operation into the given subspace
    +
    187 */
    +
    188 virtual void
    + +
    190 const unsigned int numberComponents,
    +
    191 const unsigned int numberLocalDofs,
    +
    192 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
    + +
    194 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false) = 0;
    +
    195
    +
    196
    +
    197 /**
    +
    198 * @brief Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj
    +
    199 *
    +
    200 * @param X Vector of Vectors containing multi-wavefunction fields
    +
    201 * @param totalNumberComponents number of wavefunctions associated with a given node
    +
    202 * @param singlePrecComponents number of wavecfuntions starting from the first for
    +
    203 * which the project Hamiltionian block will be computed in single
    +
    204 * procession. However the cross blocks will still be computed in double
    +
    205 * precision.
    +
    206 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
    +
    207 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
    +
    208 * of the operation into the given subspace
    +
    209 */
    +
    210 virtual void
    + +
    212 const dataTypes::number * X,
    +
    213 const unsigned int totalNumberComponents,
    +
    214 const unsigned int singlePrecComponents,
    +
    215 const unsigned int numberLocalDofs,
    +
    216 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
    + +
    218 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false) = 0;
    +
    219
    +
    220
    +
    221 void
    + + + +
    225
    +
    226
    +
    227 /**
    +
    228 * @brief Get constraint matrix eigen
    +
    229 *
    +
    230 * @return pointer to constraint matrix eigen
    +
    231 */
    + + +
    234
    +
    235
    +
    236 /**
    +
    237 * @brief Get matrix free data
    +
    238 *
    +
    239 * @return pointer to matrix free data
    +
    240 */
    +
    241 const dealii::MatrixFree<3, double> *
    + +
    243
    +
    244
    +
    245 /**
    +
    246 * @brief Get relevant mpi communicator
    +
    247 *
    +
    248 * @return mpi communicator
    +
    249 */
    +
    250 const MPI_Comm &
    + +
    252
    +
    253
    +
    254 /**
    +
    255 * @brief Get index map of flattened array to cell based numbering
    +
    256 *
    +
    257 * @return pointer to constraint matrix eigen
    +
    258 */
    +
    259 virtual const std::vector<dealii::types::global_dof_index> &
    + +
    261
    +
    262
    + + +
    265
    +
    266
    +
    267 virtual const std::vector<double> &
    + +
    269
    +
    270 virtual const std::vector<double> &
    + +
    272
    +
    273 virtual const std::vector<double> &
    + +
    275
    +
    276 virtual const std::vector<double> &
    + +
    278
    +
    279 virtual const std::vector<double> &
    + +
    281
    +
    282 virtual const std::vector<double> &
    + +
    284
    +
    285 virtual const std::vector<double> &
    + +
    287
    +
    288
    +
    289 protected:
    +
    290 /**
    +
    291 * @brief default Constructor.
    +
    292 */
    + +
    294
    +
    295
    +
    296 /**
    +
    297 * @brief Constructor.
    +
    298 */
    +
    299 operatorDFTClass(const MPI_Comm & mpi_comm_replica,
    +
    300 const dealii::MatrixFree<3, double> &matrix_free_data,
    +
    301 dftUtils::constraintMatrixInfo & constraintMatrixNone);
    +
    302
    +
    303 protected:
    +
    304 //
    +
    305 // Get overloaded constraint matrix object constructed using 1-component FE
    +
    306 // object
    +
    307 //
    + +
    309 //
    +
    310 // matrix-free data
    +
    311 //
    +
    312 const dealii::MatrixFree<3, double> *d_matrix_free_data;
    +
    313
    +
    314 //
    +
    315 // inv sqrt mass vector
    +
    316 //
    + +
    318
    +
    319 /// index map
    +
    320 std::vector<dealii::types::global_dof_index>
    + +
    322
    +
    323 /// density quad rule shape function data for FEOrder mesh with node index
    +
    324 /// being the fastest index
    + +
    326
    + +
    328 /// FEOrderRhoNodal+1 Gauss Lobotto quadrature shape function data for
    +
    329 /// FEOrder mesh with node index being the fastest index
    + +
    331
    + +
    333
    + +
    335
    + +
    337
    +
    338 std::vector<double> d_inverseJacobiansNLP;
    +
    339
    +
    340 //
    +
    341 // mpi communicator
    +
    342 //
    + +
    344 };
    +
    +
    345} // namespace dftfe
    +
    346#endif
    +
    Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
    Definition scalapackWrapper.h:37
    +
    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:39
    +
    virtual void XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)=0
    Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T...
    +
    virtual void reinit(const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)=0
    initializes parallel layouts and index maps for HX, XtHX and creates a flattened array format for X
    +
    virtual void getInteriorSurfaceNodesMapFromGlobalArray(std::vector< unsigned int > &globalArrayClassificationMap)=0
    +
    void setInvSqrtMassVector(distributedCPUVec< double > &X)
    +
    virtual void initWithScalar(const unsigned int numberWaveFunctions, double scalarValue, std::vector< dataTypes::number > &cellWaveFunctionMatrix)=0
    +
    std::vector< double > d_inverseJacobiansNLP
    Definition operator.h:338
    +
    operatorDFTClass(const MPI_Comm &mpi_comm_replica, const dealii::MatrixFree< 3, double > &matrix_free_data, dftUtils::constraintMatrixInfo &constraintMatrixNone)
    Constructor.
    +
    std::vector< double > d_shapeFunctionGradientValueNLPTransposed
    Definition operator.h:336
    +
    virtual ~operatorDFTClass()=0
    Destructor.
    +
    virtual const std::vector< double > & getShapeFunctionGradientValuesNLPTransposed() const =0
    +
    virtual const std::vector< double > & getShapeFunctionValuesNLPTransposed() const =0
    +
    virtual void HX(distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)=0
    +
    std::vector< double > d_densityGlQuadShapeFunctionValues
    Definition operator.h:330
    +
    std::vector< double > d_shapeFunctionValueNLPTransposed
    Definition operator.h:334
    +
    std::vector< dealii::types::global_dof_index > d_FullflattenedArrayCellLocalProcIndexIdMap
    index map
    Definition operator.h:321
    +
    virtual void reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)=0
    +
    virtual distributedCPUMultiVec< dataTypes::number > & getParallelProjectorKetTimesBlockVector()=0
    +
    virtual void reinit(const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)=0
    +
    MPI_Comm d_mpi_communicator
    Definition operator.h:343
    +
    virtual const std::vector< double > & getInverseJacobiansNLP() const =0
    +
    virtual void HX(distributedCPUMultiVec< dataTypes::number > &X, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &Y, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0
    Compute operator times multi-field vectors.
    +
    dftUtils::constraintMatrixInfo * getOverloadedConstraintMatrix() const
    Get constraint matrix eigen.
    +
    virtual const std::vector< double > & getShapeFunctionGradValuesDensityGaussQuad() const =0
    +
    virtual void fillGlobalArrayFromCellWaveFunctionMatrix(const unsigned int wavefunBlockSize, const std::vector< dataTypes::number > &cellWaveFunctionMatrix, distributedCPUMultiVec< dataTypes::number > &X)=0
    +
    std::vector< double > d_densityGaussQuadShapeFunctionGradientValues
    Definition operator.h:327
    +
    virtual void init()=0
    initialize operatorClass
    +
    virtual void initCellWaveFunctionMatrix(const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &X, std::vector< dataTypes::number > &cellWaveFunctionMatrix)=0
    +
    const dealii::MatrixFree< 3, double > * d_matrix_free_data
    Definition operator.h:312
    +
    virtual const std::vector< dealii::types::global_dof_index > & getFlattenedArrayCellLocalProcIndexIdMap() const =0
    Get index map of flattened array to cell based numbering.
    +
    virtual void axpby(double scalarA, double scalarB, const unsigned int numberWaveFunctions, const std::vector< dataTypes::number > &cellXWaveFunctionMatrix, std::vector< dataTypes::number > &cellYWaveFunctionMatrix)=0
    +
    operatorDFTClass()
    default Constructor.
    +
    virtual void computeMassVector(const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &sqrtMassVec, distributedCPUVec< double > &invSqrtMassVec)=0
    compute diagonal mass matrix
    +
    virtual void reinit(const unsigned int wavefunBlockSize)=0
    +
    virtual const std::vector< double > & getShapeFunctionValuesDensityGaussQuad() const =0
    +
    virtual const std::vector< double > & getShapeFunctionValuesDensityTransposed() const =0
    +
    virtual void XtHXMixedPrec(const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0
    Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T...
    +
    virtual void computeNonLocalProjectorKetTimesXTimesV(distributedCPUMultiVec< dataTypes::number > &src, distributedCPUMultiVec< dataTypes::number > &projectorKetTimesVectorFlattened, const unsigned int numberWaveFunctions)=0
    +
    distributedCPUVec< double > & getInvSqrtMassVector()
    +
    virtual void XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0
    Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T...
    +
    std::vector< double > d_shapeFunctionValueDensityTransposed
    Definition operator.h:332
    +
    std::vector< double > d_densityGaussQuadShapeFunctionValues
    Definition operator.h:325
    +
    distributedCPUVec< double > d_invSqrtMassVector
    Definition operator.h:317
    +
    virtual const std::vector< double > & getShapeFunctionValuesDensityGaussLobattoQuad() const =0
    +
    dftUtils::constraintMatrixInfo * d_constraintMatrixData
    Definition operator.h:308
    +
    const dealii::MatrixFree< 3, double > * getMatrixFreeData() const
    Get matrix free data.
    +
    const MPI_Comm & getMPICommunicator() const
    Get relevant mpi communicator.
    + + + +
    double number
    Definition dftfeDataTypes.h:44
    +
    Definition upfToxml.cc:37
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:99
    + + +
    + + + + diff --git a/operator_device_8h.html b/operator_device_8h.html new file mode 100644 index 000000000..b81d0e20c --- /dev/null +++ b/operator_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: workspace/include/operatorDevice.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    operatorDevice.h File Reference
    +
    + + + + + diff --git a/operator_device_8h_source.html b/operator_device_8h_source.html new file mode 100644 index 000000000..523f30248 --- /dev/null +++ b/operator_device_8h_source.html @@ -0,0 +1,563 @@ + + + + + + + +DFT-FE: workspace/include/operatorDevice.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    operatorDevice.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, Sambit Das
    +
    19//
    +
    20#if defined(DFTFE_WITH_DEVICE)
    +
    21# ifndef operatorDFTDeviceClass_h
    +
    22# define operatorDFTDeviceClass_h
    +
    23
    + +
    25# include <constraintMatrixInfo.h>
    +
    26# include <DeviceBlasWrapper.h>
    +
    27# include <MemoryStorage.h>
    +
    28# include <headers.h>
    +
    29# include "process_grid.h"
    +
    30# include "scalapackWrapper.h"
    +
    31
    +
    32# include <vector>
    +
    33
    + +
    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 class operatorDFTDeviceClass
    +
    44 {
    +
    45 //
    +
    46 // methods
    +
    47 //
    +
    48 public:
    +
    49 /**
    +
    50 * @brief Destructor.
    +
    51 */
    +
    52 virtual ~operatorDFTDeviceClass() = 0;
    +
    53
    +
    54 /**
    +
    55 * @brief initialize operatorClass
    +
    56 *
    +
    57 */
    +
    58 virtual void
    +
    59 init() = 0;
    +
    60
    +
    61
    +
    62 virtual void
    +
    63 createDeviceBlasHandle() = 0;
    +
    64
    +
    65 virtual void
    +
    66 destroyDeviceBlasHandle() = 0;
    +
    67
    + +
    69 getDeviceBlasHandle() = 0;
    +
    70
    +
    71 virtual const double *
    +
    72 getSqrtMassVec() = 0;
    +
    73
    +
    74 virtual const double *
    +
    75 getInvSqrtMassVec() = 0;
    +
    76
    +
    77 virtual distributedCPUVec<dataTypes::number> &
    +
    78 getProjectorKetTimesVectorSingle() = 0;
    +
    79
    +
    80 virtual dftfe::utils::MemoryStorage<double,
    + +
    82 getShapeFunctionGradientIntegral() = 0;
    +
    83
    +
    84 virtual dftfe::utils::MemoryStorage<double,
    + +
    86 getShapeFunctionGradientIntegralElectro() = 0;
    +
    87
    +
    88 virtual dftfe::utils::MemoryStorage<double,
    + +
    90 getShapeFunctionValues() = 0;
    +
    91
    +
    92 virtual dftfe::utils::MemoryStorage<double,
    + +
    94 getShapeFunctionValuesTransposed(const bool use2pPlusOneGLQuad = false) = 0;
    +
    95
    +
    96 virtual dftfe::utils::MemoryStorage<double,
    + +
    98 getShapeFunctionValuesNLPTransposed() = 0;
    +
    99
    +
    100 virtual dftfe::utils::MemoryStorage<double,
    + +
    102 getShapeFunctionGradientValuesNLPTransposed() = 0;
    +
    103
    +
    104 virtual dftfe::utils::MemoryStorage<double,
    + +
    106 getInverseJacobiansNLP() = 0;
    +
    107
    +
    108 virtual dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
    + +
    110 getFlattenedArrayCellLocalProcIndexIdMap() = 0;
    +
    111
    +
    112 virtual dftfe::utils::MemoryStorage<dataTypes::number,
    + +
    114 getCellWaveFunctionMatrix() = 0;
    +
    115
    +
    116 virtual distributedCPUVec<dataTypes::number> &
    +
    117 getParallelVecSingleComponent() = 0;
    +
    118
    +
    119 virtual distributedDeviceVec<dataTypes::number> &
    +
    120 getParallelChebyBlockVectorDevice() = 0;
    +
    121
    +
    122 virtual distributedDeviceVec<dataTypes::number> &
    +
    123 getParallelChebyBlockVector2Device() = 0;
    +
    124
    +
    125 virtual distributedDeviceVec<dataTypes::number> &
    +
    126 getParallelProjectorKetTimesBlockVectorDevice() = 0;
    +
    127
    +
    128 virtual dftfe::utils::MemoryStorage<unsigned int,
    + +
    130 getLocallyOwnedProcBoundaryNodesVectorDevice() = 0;
    +
    131
    +
    132 /**
    +
    133 * @brief initializes parallel layouts and index maps for HX, XtHX and creates a flattened array format for X
    +
    134 *
    +
    135 * @param wavefunBlockSize number of wavefunction vector (block size of X).
    +
    136 * @param flag controls the creation of flattened array format and index maps or only index maps
    +
    137 *
    +
    138 * @return X format to store a multi-vector array
    +
    139 * in a flattened format with all the wavefunction values corresponding to a
    +
    140 * given node being stored contiguously
    +
    141 *
    +
    142 */
    +
    143
    +
    144 virtual void
    +
    145 reinit(const unsigned int wavefunBlockSize, bool flag) = 0;
    +
    146
    +
    147 /**
    +
    148 * @brief sets the data member to appropriate kPoint and spin Index
    +
    149 *
    +
    150 * @param kPointIndex k-point Index to set
    +
    151 */
    +
    152 virtual void
    +
    153 reinitkPointSpinIndex(const unsigned int kPointIndex,
    +
    154 const unsigned int spinIndex) = 0;
    +
    155
    +
    156
    +
    157 /**
    +
    158 * @brief compute diagonal mass matrix
    +
    159 *
    +
    160 * @param dofHandler dofHandler associated with the current mesh
    +
    161 * @param constraintMatrix constraints to be used
    +
    162 * @param sqrtMassVec output the value of square root of diagonal mass matrix
    +
    163 * @param invSqrtMassVec output the value of inverse square root of diagonal mass matrix
    +
    164 */
    +
    165 virtual void
    +
    166 computeMassVector(const dealii::DoFHandler<3> & dofHandler,
    +
    167 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    168 distributedCPUVec<double> & sqrtMassVec,
    +
    169 distributedCPUVec<double> &invSqrtMassVec) = 0;
    +
    170
    +
    171
    +
    172 /**
    +
    173 * @brief Compute operator times multi-field vectors
    +
    174 *
    +
    175 * @param X Vector containing multi-wavefunction fields (though X does not
    +
    176 * change inside the function it is scaled and rescaled back to
    +
    177 * avoid duplication of memory and hence is not const)
    +
    178 * @param numberComponents number of wavefunctions associated with a given node
    +
    179 * @param Y Vector containing multi-component fields after operator times vectors product
    +
    180 */
    +
    181 virtual void
    +
    182 HX(distributedDeviceVec<dataTypes::number> &X,
    +
    183 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
    +
    184 const unsigned int localVectorSize,
    +
    185 const unsigned int numberComponents,
    +
    186 const bool scaleFlag,
    +
    187 const double scalar,
    +
    188 distributedDeviceVec<dataTypes::number> &Y,
    +
    189 const bool doUnscalingX = true,
    +
    190 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false) = 0;
    +
    191
    +
    192
    +
    193 virtual void
    +
    194 HXCheby(distributedDeviceVec<dataTypes::number> & X,
    +
    195 distributedDeviceVec<dataTypes::numberFP32> &XTemp,
    +
    196 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
    +
    197 const unsigned int localVectorSize,
    +
    198 const unsigned int numberComponents,
    +
    199 distributedDeviceVec<dataTypes::number> &Y,
    +
    200 bool mixPrecFlag = false,
    +
    201 bool returnBeforeCompressSkipUpdateSkipNonLocal = false,
    +
    202 bool returnBeforeCompressSkipUpdateSkipLocal = false) = 0;
    +
    203
    +
    204 /**
    +
    205 * @brief implementation of non-local projector kets times psi product
    +
    206 * using non-local discretized projectors at cell-level.
    +
    207 * works for both complex and real data type
    +
    208 * @param src Vector containing current values of source array with multi-vector array stored
    +
    209 * in a flattened format with all the wavefunction value corresponding to a
    +
    210 * given node is stored contiguously.
    +
    211 * @param numberWaveFunctions Number of wavefunctions at a given node.
    +
    212 */
    +
    213 virtual void
    +
    214 computeNonLocalProjectorKetTimesXTimesV(
    +
    215 const dataTypes::number * src,
    +
    216 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
    +
    217 const unsigned int numberWaveFunctions) = 0;
    +
    218
    +
    219 /**
    +
    220 * @brief Compute projection of the operator into a subspace spanned by a given basis
    +
    221 *
    +
    222 * @param X Vector of Vectors containing all wavefunction vectors
    +
    223 * @param Xb parallel distributed vector datastructure for handling block of wavefunction vectors
    +
    224 * @param HXb parallel distributed vector datastructure for handling H multiplied by block of
    +
    225 * wavefunction vectors
    +
    226 * @param projectorKetTimesVector parallel distributed vector datastructure for handling nonlocal
    +
    227 * projector kets times block wavefunction vectors
    +
    228 * @param M number of local dofs
    +
    229 * @param N total number of wavefunction vectors
    +
    230 * @param handle deviceBlasHandle
    +
    231 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
    +
    232 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
    +
    233 * of the operation into the given subspace
    +
    234 */
    +
    235 virtual void
    +
    236 XtHX(const dataTypes::number * X,
    +
    237 distributedDeviceVec<dataTypes::number> &Xb,
    +
    238 distributedDeviceVec<dataTypes::number> &HXb,
    +
    239 distributedDeviceVec<dataTypes::number> &projectorKetTimesVector,
    +
    240 const unsigned int M,
    +
    241 const unsigned int N,
    + +
    243 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
    + +
    245 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
    +
    246 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false) = 0;
    +
    247
    +
    248 /**
    +
    249 * @brief Compute projection of the operator into a subspace spanned by a given basis.
    +
    250 * This routine also overlaps communication and computation.
    +
    251 *
    +
    252 * @param X Vector of Vectors containing all wavefunction vectors
    +
    253 * @param Xb parallel distributed vector datastructure for handling block of wavefunction vectors
    +
    254 * @param HXb parallel distributed vector datastructure for handling H multiplied by block of
    +
    255 * wavefunction vectors
    +
    256 * @param projectorKetTimesVector parallel distributed vector datastructure for handling nonlocal
    +
    257 * projector kets times block wavefunction vectors
    +
    258 * @param M number of local dofs
    +
    259 * @param N total number of wavefunction vectors
    +
    260 * @param handle deviceBlasHandle
    +
    261 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
    +
    262 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
    +
    263 * of the operation into the given subspace
    +
    264 */
    +
    265 virtual void
    +
    266 XtHXOverlapComputeCommun(
    +
    267 const dataTypes::number * X,
    +
    268 distributedDeviceVec<dataTypes::number> & Xb,
    +
    269 distributedDeviceVec<dataTypes::number> & HXb,
    +
    270 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
    +
    271 const unsigned int M,
    +
    272 const unsigned int N,
    + +
    274 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
    + +
    276 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
    +
    277 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false) = 0;
    +
    278
    +
    279 /**
    +
    280 * @brief Compute projection of the operator into a subspace spanned by a given basis.
    +
    281 * This routine uses a mixed precision algorithm
    +
    282 * (https://doi.org/10.1016/j.cpc.2019.07.016) and further overlaps
    +
    283 * communication and computation.
    +
    284 *
    +
    285 * @param X Vector of Vectors containing all wavefunction vectors
    +
    286 * @param Xb parallel distributed vector datastructure for handling block of wavefunction vectors
    +
    287 * @param floatXb parallel distributed vector datastructure for handling block of wavefunction
    +
    288 * vectors in single precision
    +
    289 * @param HXb parallel distributed vector datastructure for handling H multiplied by block of
    +
    290 * wavefunction vectors
    +
    291 * @param projectorKetTimesVector parallel distributed vector datastructure for handling nonlocal
    +
    292 * projector kets times block wavefunction vectors
    +
    293 * @param M number of local dofs
    +
    294 * @param N total number of wavefunction vectors
    +
    295 * @param Noc number of fully occupied wavefunction vectors considered in the mixed precision algorithm
    +
    296 * @param handle deviceBlasHandle
    +
    297 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
    +
    298 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
    +
    299 * of the operation into the given subspace
    +
    300 */
    +
    301 virtual void
    +
    302 XtHXMixedPrecOverlapComputeCommun(
    +
    303 const dataTypes::number * X,
    +
    304 distributedDeviceVec<dataTypes::number> & Xb,
    +
    305 distributedDeviceVec<dataTypes::numberFP32> & floatXb,
    +
    306 distributedDeviceVec<dataTypes::number> & HXb,
    +
    307 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
    +
    308 const unsigned int M,
    +
    309 const unsigned int N,
    +
    310 const unsigned int Noc,
    + +
    312 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
    + +
    314 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
    +
    315 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false) = 0;
    +
    316
    +
    317 virtual void
    +
    318 XtHXMixedPrecCommunOverlapComputeCommun(
    +
    319 const dataTypes::number * X,
    +
    320 distributedDeviceVec<dataTypes::number> & Xb,
    +
    321 distributedDeviceVec<dataTypes::number> & HXb,
    +
    322 distributedDeviceVec<dataTypes::number> & projectorKetTimesVector,
    +
    323 const unsigned int M,
    +
    324 const unsigned int N,
    +
    325 const unsigned int Noc,
    + +
    327 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
    + +
    329 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
    +
    330 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false) = 0;
    +
    331
    +
    332
    +
    333 /**
    +
    334 * @brief Get constraint matrix eigen
    +
    335 *
    +
    336 * @return pointer to constraint matrix eigen
    +
    337 */
    +
    338 dftUtils::constraintMatrixInfo *
    +
    339 getOverloadedConstraintMatrixHost() const;
    +
    340
    +
    341
    +
    342 /**
    +
    343 * @brief Get constraint matrix eigen
    +
    344 *
    +
    345 * @return pointer to constraint matrix eigen
    +
    346 */
    +
    347 dftUtils::constraintMatrixInfoDevice *
    +
    348 getOverloadedConstraintMatrix() const;
    +
    349
    +
    350
    +
    351 /**
    +
    352 * @brief Get matrix free data
    +
    353 *
    +
    354 * @return pointer to matrix free data
    +
    355 */
    +
    356 const dealii::MatrixFree<3, double> *
    +
    357 getMatrixFreeData() const;
    +
    358
    +
    359
    +
    360 /**
    +
    361 * @brief Get relevant mpi communicator
    +
    362 *
    +
    363 * @return mpi communicator
    +
    364 */
    +
    365 const MPI_Comm &
    +
    366 getMPICommunicator() const;
    +
    367
    +
    368
    +
    369 protected:
    +
    370 /**
    +
    371 * @brief default Constructor.
    +
    372 */
    +
    373 operatorDFTDeviceClass();
    +
    374
    +
    375
    +
    376 /**
    +
    377 * @brief Constructor.
    +
    378 */
    +
    379 operatorDFTDeviceClass(
    +
    380 const MPI_Comm & mpi_comm_replica,
    +
    381 const dealii::MatrixFree<3, double> & matrix_free_data,
    +
    382 dftUtils::constraintMatrixInfo & constraintMatrixNone,
    +
    383 dftUtils::constraintMatrixInfoDevice &constraintMatrixNoneDevice);
    +
    384
    +
    385 protected:
    +
    386 //
    +
    387 // Get overloaded constraint matrix object constructed using 1-component FE
    +
    388 // object
    +
    389 //
    +
    390 dftUtils::constraintMatrixInfo *d_constraintMatrixData;
    +
    391
    +
    392 //
    +
    393 // Get overloaded constraint matrix object constructed using 1-component FE
    +
    394 // object
    +
    395 //
    +
    396 dftUtils::constraintMatrixInfoDevice *d_constraintMatrixDataDevice;
    +
    397 //
    +
    398 // matrix-free data
    +
    399 //
    +
    400 const dealii::MatrixFree<3, double> *d_matrix_free_data;
    +
    401
    + +
    403 d_cellShapeFunctionGradientIntegralFlattenedDevice;
    +
    404
    + +
    406 d_cellShapeFunctionGradientIntegralFlattenedDeviceElectro;
    +
    407
    + +
    409 d_shapeFunctionValueDevice;
    +
    410
    + +
    412 d_shapeFunctionValueTransposedDevice;
    +
    413
    + +
    415 d_shapeFunctionValueNLPTransposedDevice;
    +
    416
    +
    417 // dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE>
    +
    418 // d_shapeFunctionGradientValueXTransposedDevice;
    +
    419
    +
    420 // dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE>
    +
    421 // d_shapeFunctionGradientValueYTransposedDevice;
    +
    422
    +
    423 // dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::DEVICE>
    +
    424 // d_shapeFunctionGradientValueZTransposedDevice;
    +
    425
    + +
    427 d_shapeFunctionGradientValueNLPTransposedDevice;
    +
    428
    + +
    430 d_inverseJacobiansNLPDevice;
    +
    431
    +
    432 /// 2p+1 Gauss Lobotta quadrature shape function values and shape function
    +
    433 /// gradients
    + +
    435 d_glShapeFunctionValueTransposedDevice;
    +
    436
    +
    437
    +
    438 dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
    + +
    440 d_flattenedArrayCellLocalProcIndexIdMapDevice;
    +
    441
    +
    442 dftfe::utils::MemoryStorage<dataTypes::number,
    + +
    444 d_cellWaveFunctionMatrix;
    +
    445
    +
    446 distributedDeviceVec<dataTypes::number>
    +
    447 d_parallelProjectorKetTimesBlockVectorDevice;
    +
    448
    +
    449 distributedCPUVec<dataTypes::number> d_parallelVecSingleComponent;
    +
    450
    +
    451 //
    +
    452 // mpi communicator
    +
    453 //
    +
    454 MPI_Comm d_mpi_communicator;
    +
    455 };
    +
    456
    +
    457} // namespace dftfe
    +
    458# endif
    +
    459#endif
    + + +
    Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
    Definition scalapackWrapper.h:37
    +
    Definition MemoryStorage.h:33
    + + + + + +
    cublasHandle_t deviceBlasHandle_t
    Definition DeviceTypeConfig.cu.h:36
    +
    Definition upfToxml.cc:37
    + + +
    + + + + 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..1c27c63da --- /dev/null +++ b/poisson_solver_problem_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..440dfa3e7 --- /dev/null +++ b/poisson_solver_problem_8h_source.html @@ -0,0 +1,424 @@ + + + + + + + +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
    +
    25namespace dftfe
    +
    26{
    +
    27 /**
    +
    28 * @brief poisson solver problem class template. template parameter FEOrderElectro
    +
    29 * is the finite element polynomial order. FEOrder template parameter is used
    +
    30 * in conjunction with FEOrderElectro to determine the order of the Gauss
    +
    31 * quadrature rule
    +
    32 *
    +
    33 * @author Shiva Rudraraju, Phani Motamarri, Sambit Das
    +
    34 */
    +
    35 template <unsigned int FEOrder, unsigned int FEOrderElectro>
    +
    + +
    37 {
    +
    38 public:
    +
    39 /// Constructor
    +
    40 poissonSolverProblem(const MPI_Comm &mpi_comm);
    +
    41
    +
    42
    +
    43 /**
    +
    44 * @brief clears all datamembers and reset to original state.
    +
    45 *
    +
    46 *
    +
    47 */
    +
    48 void
    + +
    50
    +
    51
    +
    52 /**
    +
    53 * @brief reinitialize data structures for total electrostatic potential solve.
    +
    54 *
    +
    55 * For Hartree electrostatic potential solve give an empty map to the atoms
    +
    56 * parameter.
    +
    57 *
    +
    58 */
    +
    59 void
    + +
    61 const dealii::MatrixFree<3, double> & matrixFreeData,
    + +
    63 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    64 const unsigned int matrixFreeVectorComponent,
    +
    65 const unsigned int matrixFreeQuadratureComponentRhsDensity,
    +
    66 const unsigned int matrixFreeQuadratureComponentAX,
    +
    67 const std::map<dealii::types::global_dof_index, double> &atoms,
    +
    68 const std::map<dealii::CellId, std::vector<double>> &smearedChargeValues,
    +
    69 const unsigned int smearedChargeQuadratureId,
    +
    70 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
    +
    71 const bool isComputeDiagonalA = true,
    +
    72 const bool isComputeMeanValueConstraints = false,
    +
    73 const bool smearedNuclearCharges = false,
    +
    74 const bool isRhoValues = true,
    +
    75 const bool isGradSmearedChargeRhs = false,
    +
    76 const unsigned int smearedChargeGradientComponentId = 0,
    +
    77 const bool storeSmearedChargeRhs = false,
    +
    78 const bool reuseSmearedChargeRhs = false,
    +
    79 const bool reinitializeFastConstraints = false);
    +
    80
    +
    81
    +
    82 /**
    +
    83 * @brief get the reference to x field
    +
    84 *
    +
    85 * @return reference to x field. Assumes x field data structure is already initialized
    +
    86 */
    + + +
    89
    +
    90 /**
    +
    91 * @brief Compute A matrix multipled by x.
    +
    92 *
    +
    93 */
    +
    94 void
    + +
    96
    +
    97 /**
    +
    98 * @brief Compute right hand side vector for the problem Ax = rhs.
    +
    99 *
    +
    100 * @param rhs vector for the right hand side values
    +
    101 */
    +
    102 void
    + +
    104
    +
    105 /**
    +
    106 * @brief Jacobi preconditioning.
    +
    107 *
    +
    108 */
    +
    109 void
    + +
    111 const distributedCPUVec<double> &src,
    +
    112 const double omega) const;
    +
    113
    +
    114 /**
    +
    115 * @brief distribute x to the constrained nodes.
    +
    116 *
    +
    117 */
    +
    118 void
    + +
    120
    +
    121 /// function needed by dealii to mimic SparseMatrix for Jacobi
    +
    122 /// preconditioning
    +
    123 void
    +
    +
    124 subscribe(std::atomic<bool> *const validity,
    +
    125 const std::string & identifier = "") const {};
    +
    +
    126
    +
    127 /// function needed by dealii to mimic SparseMatrix for Jacobi
    +
    128 /// preconditioning
    +
    129 void
    +
    +
    130 unsubscribe(std::atomic<bool> *const validity,
    +
    131 const std::string & identifier = "") const {};
    +
    +
    132
    +
    133 /// function needed by dealii to mimic SparseMatrix
    +
    134 bool
    +
    +
    135 operator!=(double val) const
    +
    136 {
    +
    137 return true;
    +
    138 };
    +
    +
    139
    +
    140 private:
    +
    141 /**
    +
    142 * @brief required for the cell_loop operation in dealii's MatrixFree class
    +
    143 *
    +
    144 */
    +
    145 void
    +
    146 AX(const dealii::MatrixFree<3, double> & matrixFreeData,
    + +
    148 const distributedCPUVec<double> & src,
    +
    149 const std::pair<unsigned int, unsigned int> &cell_range) const;
    +
    150
    +
    151
    +
    152 /**
    +
    153 * @brief Compute the diagonal of A.
    +
    154 *
    +
    155 */
    +
    156 void
    + +
    158
    +
    159 /**
    +
    160 * @brief Compute mean value constraint which is required in case of fully periodic
    +
    161 * boundary conditions.
    +
    162 *
    +
    163 */
    +
    164 void
    + +
    166
    +
    167
    +
    168 /**
    +
    169 * @brief Mean value constraint distibute
    +
    170 *
    +
    171 */
    +
    172 void
    + +
    174
    +
    175 /**
    +
    176 * @brief Mean value constraint distibute slave to master
    +
    177 *
    +
    178 */
    +
    179 void
    + +
    181 distributedCPUVec<double> &vec) const;
    +
    182
    +
    183
    +
    184 /**
    +
    185 * @brief Mean value constraint set zero
    +
    186 *
    +
    187 */
    +
    188 void
    + +
    190
    +
    191
    +
    192 /// storage for diagonal of the A matrix
    + +
    194
    +
    195 /// storage for smeared charge rhs in case of total potential solve (doesn't
    +
    196 /// change every scf)
    + +
    198
    +
    199 /// pointer to dealii MatrixFree object
    +
    200 const dealii::MatrixFree<3, double> *d_matrixFreeDataPtr;
    +
    201
    +
    202 /// pointer to the x vector being solved for
    + +
    204
    +
    205 /// pointer to dealii dealii::AffineConstraints<double> object
    +
    206 const dealii::AffineConstraints<double> *d_constraintMatrixPtr;
    +
    207
    +
    208 /// matrix free index required to access the DofHandler and
    +
    209 /// dealii::AffineConstraints<double> objects corresponding to the problem
    + +
    211
    +
    212 /// matrix free quadrature index
    + +
    214
    +
    215 /// matrix free quadrature index
    + +
    217
    +
    218 /// pointer to electron density cell quadrature data
    +
    219 const std::map<dealii::CellId, std::vector<double>> *d_rhoValuesPtr;
    +
    220
    +
    221 /// pointer to smeared charge cell quadrature data
    +
    222 const std::map<dealii::CellId, std::vector<double>>
    + +
    224
    +
    225 ///
    + +
    227
    +
    228 /// pointer to map between global dof index in current processor and the
    +
    229 /// atomic charge on that dof
    +
    230 const std::map<dealii::types::global_dof_index, double> *d_atomsPtr;
    +
    231
    +
    232 /// shape function gradient integral storage
    + +
    234
    +
    235 /// storage for mean value constraint vector
    + +
    237
    +
    238 /// boolean flag to query if mean value constraint datastructures are
    +
    239 /// precomputed
    + +
    241
    +
    242 ///
    + +
    244
    +
    245 ///
    + +
    247
    +
    248 ///
    + +
    250
    +
    251 ///
    + +
    253
    +
    254 /// mean value constraints: mean value constrained node
    +
    255 dealii::types::global_dof_index d_meanValueConstraintNodeId;
    +
    256
    +
    257 /// mean value constraints: constrained proc id containing the mean value
    +
    258 /// constrained node
    + +
    260
    +
    261 /// duplicate constraints object with flattened maps for faster access
    + +
    263
    +
    264 ///
    + +
    266
    +
    267 const MPI_Comm mpi_communicator;
    +
    268 const unsigned int n_mpi_processes;
    +
    269 const unsigned int this_mpi_process;
    +
    270 dealii::ConditionalOStream pcout;
    +
    271 };
    +
    +
    272
    +
    273} // namespace dftfe
    +
    274#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
    +
    poisson solver problem class template. template parameter FEOrderElectro is the finite element polyno...
    Definition poissonSolverProblem.h:37
    +
    unsigned int d_matrixFreeQuadratureComponentAX
    matrix free quadrature index
    Definition poissonSolverProblem.h:216
    +
    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:124
    +
    const dealii::AffineConstraints< double > * d_constraintMatrixPtr
    pointer to dealii dealii::AffineConstraints<double> object
    Definition poissonSolverProblem.h:206
    +
    bool d_isFastConstraintsInitialized
    Definition poissonSolverProblem.h:265
    +
    void clear()
    clears all datamembers and reset to original state.
    +
    const MPI_Comm mpi_communicator
    Definition poissonSolverProblem.h:267
    +
    unsigned int d_matrixFreeVectorComponent
    Definition poissonSolverProblem.h:210
    +
    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:193
    +
    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:226
    +
    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:246
    +
    unsigned int d_meanValueConstraintProcId
    Definition poissonSolverProblem.h:259
    +
    dealii::ConditionalOStream pcout
    Definition poissonSolverProblem.h:270
    +
    std::vector< double > d_cellShapeFunctionGradientIntegralFlattened
    shape function gradient integral storage
    Definition poissonSolverProblem.h:233
    +
    distributedCPUVec< double > d_rhsSmearedCharge
    Definition poissonSolverProblem.h:197
    +
    const dealii::MatrixFree< 3, double > * d_matrixFreeDataPtr
    pointer to dealii MatrixFree object
    Definition poissonSolverProblem.h:200
    +
    const unsigned int n_mpi_processes
    Definition poissonSolverProblem.h:268
    +
    const std::map< dealii::CellId, std::vector< double > > * d_smearedChargeValuesPtr
    pointer to smeared charge cell quadrature data
    Definition poissonSolverProblem.h:223
    +
    bool d_isMeanValueConstraintComputed
    Definition poissonSolverProblem.h:240
    +
    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:135
    +
    void reinit(const dealii::MatrixFree< 3, double > &matrixFreeData, 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 std::map< dealii::CellId, std::vector< double > > &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.
    +
    dealii::types::global_dof_index d_meanValueConstraintNodeId
    mean value constraints: mean value constrained node
    Definition poissonSolverProblem.h:255
    +
    void unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
    Definition poissonSolverProblem.h:130
    +
    distributedCPUVec< double > d_meanValueConstraintVec
    storage for mean value constraint vector
    Definition poissonSolverProblem.h:236
    +
    distributedCPUVec< double > * d_xPtr
    pointer to the x vector being solved for
    Definition poissonSolverProblem.h:203
    +
    unsigned int d_matrixFreeQuadratureComponentRhsDensity
    matrix free quadrature index
    Definition poissonSolverProblem.h:213
    +
    unsigned int d_smearedChargeGradientComponentId
    Definition poissonSolverProblem.h:252
    +
    bool d_isReuseSmearedChargeRhs
    Definition poissonSolverProblem.h:249
    +
    poissonSolverProblem(const MPI_Comm &mpi_comm)
    Constructor.
    +
    const std::map< dealii::CellId, std::vector< double > > * d_rhoValuesPtr
    pointer to electron density cell quadrature data
    Definition poissonSolverProblem.h:219
    +
    dftUtils::constraintMatrixInfo d_constraintsInfo
    duplicate constraints object with flattened maps for faster access
    Definition poissonSolverProblem.h:262
    +
    bool d_isGradSmearedChargeRhs
    Definition poissonSolverProblem.h:243
    +
    const std::map< dealii::types::global_dof_index, double > * d_atomsPtr
    Definition poissonSolverProblem.h:230
    +
    const unsigned int this_mpi_process
    Definition poissonSolverProblem.h:269
    +
    void precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const
    Jacobi preconditioning.
    + + +
    Definition upfToxml.cc:37
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:99
    +
    + + + + diff --git a/poisson_solver_problem_device_8h.html b/poisson_solver_problem_device_8h.html new file mode 100644 index 000000000..e953127de --- /dev/null +++ b/poisson_solver_problem_device_8h.html @@ -0,0 +1,88 @@ + + + + + + + +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..a133678c9 --- /dev/null +++ b/poisson_solver_problem_device_8h_source.html @@ -0,0 +1,427 @@ + + + + + + + +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 <deviceKernelsGeneric.h>
    +
    27# include <dftUtils.h>
    +
    28# include <headers.h>
    +
    29
    +
    30namespace dftfe
    +
    31{
    +
    32 /**
    +
    33 * @brief poisson solver problem device class template. template parameter FEOrderElectro
    +
    34 * is the finite element polynomial order. FEOrder template parameter is used
    +
    35 * in conjunction with FEOrderElectro to determine the order of the Gauss
    +
    36 * quadrature rule. The class should not be used with FLOATING NUCLEAR
    +
    37 * CHARGES = false or POINT WISE DIRICHLET CONSTRAINT = true
    +
    38 *
    +
    39 * @author Gourab Panigrahi
    +
    40 */
    +
    41 template <unsigned int FEOrder, unsigned int FEOrderElectro>
    +
    42 class poissonSolverProblemDevice : public linearSolverProblemDevice
    +
    43 {
    +
    44 public:
    +
    45 /// Constructor
    +
    46 poissonSolverProblemDevice(const MPI_Comm &mpi_comm);
    +
    47
    +
    48 /**
    +
    49 * @brief clears all datamembers and reset to original state.
    +
    50 *
    +
    51 *
    +
    52 */
    +
    53 void
    +
    54 clear();
    +
    55
    +
    56 /**
    +
    57 * @brief reinitialize data structures for total electrostatic potential solve.
    +
    58 *
    +
    59 * For Hartree electrostatic potential solve give an empty map to the atoms
    +
    60 * parameter.
    +
    61 *
    +
    62 */
    +
    63 void
    +
    64 reinit(
    +
    65 const dealii::MatrixFree<3, double> & matrixFreeData,
    +
    66 distributedCPUVec<double> & x,
    +
    67 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    68 const unsigned int matrixFreeVectorComponent,
    +
    69 const unsigned int matrixFreeQuadratureComponentRhsDensity,
    +
    70 const unsigned int matrixFreeQuadratureComponentAX,
    +
    71 const std::map<dealii::types::global_dof_index, double> &atoms,
    +
    72 const std::map<dealii::CellId, std::vector<double>> &smearedChargeValues,
    +
    73 const unsigned int smearedChargeQuadratureId,
    +
    74 const std::map<dealii::CellId, std::vector<double>> &rhoValues,
    +
    75 dftfe::utils::deviceBlasHandle_t & deviceBlasHandle,
    +
    76 const bool isComputeDiagonalA = true,
    +
    77 const bool isComputeMeanValueConstraints = false,
    +
    78 const bool smearedNuclearCharges = false,
    +
    79 const bool isRhoValues = true,
    +
    80 const bool isGradSmearedChargeRhs = false,
    +
    81 const unsigned int smearedChargeGradientComponentId = 0,
    +
    82 const bool storeSmearedChargeRhs = false,
    +
    83 const bool reuseSmearedChargeRhs = false,
    +
    84 const bool reinitializeFastConstraints = false);
    +
    85
    +
    86 /**
    +
    87 * @brief Compute A matrix multipled by x.
    +
    88 *
    +
    89 */
    +
    90 void
    +
    91 computeAX(distributedDeviceVec<double> &Ax,
    +
    92 distributedDeviceVec<double> &x);
    +
    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
    +
    100 computeRhs(distributedCPUVec<double> &rhs);
    +
    101
    +
    102 /**
    +
    103 * @brief get the reference to x field
    +
    104 *
    +
    105 * @return reference to x field. Assumes x field data structure is already initialized
    +
    106 */
    +
    107 distributedDeviceVec<double> &
    +
    108 getX();
    +
    109
    +
    110 /**
    +
    111 * @brief get the reference to Preconditioner
    +
    112 *
    +
    113 * @return reference to Preconditioner
    +
    114 */
    +
    115 distributedDeviceVec<double> &
    +
    116 getPreconditioner();
    +
    117
    +
    118 /**
    +
    119 * @brief Copies x from Device to Host
    +
    120 *
    +
    121 */
    +
    122 void
    +
    123 copyXfromDeviceToHost();
    +
    124
    +
    125 /**
    +
    126 * @brief distribute x to the constrained nodes.
    +
    127 *
    +
    128 */
    +
    129 void
    +
    130 distributeX();
    +
    131
    +
    132 /// function needed by dealii to mimic SparseMatrix for Jacobi
    +
    133 /// preconditioning
    +
    134 void
    +
    135 subscribe(std::atomic<bool> *const validity,
    +
    136 const std::string & identifier = "") const {};
    +
    137
    +
    138 /// function needed by dealii to mimic SparseMatrix for Jacobi
    +
    139 /// preconditioning
    +
    140 void
    +
    141 unsubscribe(std::atomic<bool> *const validity,
    +
    142 const std::string & identifier = "") const {};
    +
    143
    +
    144 /// function needed by dealii to mimic SparseMatrix
    +
    145 bool
    +
    146 operator!=(double val) const
    +
    147 {
    +
    148 return true;
    +
    149 };
    +
    150
    +
    151 void
    +
    152 setX();
    +
    153
    +
    154
    +
    155 private:
    +
    156 /**
    +
    157 * @brief Sets up the matrixfree shapefunction, gradient, jacobian and map for matrixfree computeAX
    +
    158 *
    +
    159 */
    +
    160 void
    +
    161 setupMatrixFree();
    +
    162
    +
    163 /**
    +
    164 * @brief Sets up the constraints matrix
    +
    165 *
    +
    166 */
    +
    167 void
    +
    168 setupconstraints();
    +
    169
    +
    170 /**
    +
    171 * @brief Compute the diagonal of A.
    +
    172 *
    +
    173 */
    +
    174 void
    +
    175 computeDiagonalA();
    +
    176
    +
    177 /**
    +
    178 * @brief Compute mean value constraint which is required in case of fully periodic
    +
    179 * boundary conditions.
    +
    180 *
    +
    181 */
    +
    182 void
    +
    183 computeMeanValueConstraint();
    +
    184
    +
    185 /**
    +
    186 * @brief Mean value constraint distibute
    +
    187 *
    +
    188 */
    +
    189 void
    +
    190 meanValueConstraintDistribute(distributedDeviceVec<double> &vec) const;
    +
    191
    +
    192 /**
    +
    193 * @brief Mean value constraint distibute slave to master
    +
    194 *
    +
    195 */
    +
    196 void
    +
    197 meanValueConstraintDistributeSlaveToMaster(
    +
    198 distributedDeviceVec<double> &vec) const;
    +
    199
    +
    200 void
    +
    201 meanValueConstraintDistributeSlaveToMaster(
    +
    202 distributedCPUVec<double> &vec) const;
    +
    203
    +
    204 /**
    +
    205 * @brief Mean value constraint set zero
    +
    206 *
    +
    207 */
    +
    208 void
    +
    209 meanValueConstraintSetZero(distributedDeviceVec<double> &vec) const;
    +
    210
    +
    211 void
    +
    212 meanValueConstraintSetZero(distributedCPUVec<double> &vec) const;
    +
    213
    +
    214 /// storage for diagonal of the A matrix
    +
    215 distributedCPUVec<double> d_diagonalA;
    +
    216 distributedDeviceVec<double> d_diagonalAdevice;
    +
    217
    +
    218 /// storage for smeared charge rhs in case of total potential solve (doesn't
    +
    219 /// change every scf)
    +
    220 distributedCPUVec<double> d_rhsSmearedCharge;
    +
    221
    +
    222 /// pointer to dealii MatrixFree object
    +
    223 const dealii::MatrixFree<3, double> *d_matrixFreeDataPtr;
    +
    224
    +
    225 /// pointer to the x vector being solved for
    +
    226 distributedCPUVec<double> * d_xPtr;
    +
    227 distributedDeviceVec<double> d_xDevice;
    +
    228
    +
    229 // number of cells local to each mpi task, number of degrees of freedom
    +
    230 // locally owned and total degrees of freedom including ghost
    +
    231 int d_nLocalCells, d_xLocalDof, d_xLen;
    +
    232
    +
    233 // shape function value, gradient, jacobian and map for matrixfree
    + +
    235 d_shapeFunction, d_jacobianFactor;
    + +
    237
    +
    238 // Pointers to shape function value, gradient, jacobian and map for
    +
    239 // matrixfree
    +
    240 double *d_shapeFunctionPtr;
    +
    241 double *d_jacobianFactorPtr;
    +
    242 int * d_mapPtr;
    +
    243
    +
    244 // cuBLAS handle for cuBLAS operations
    +
    245 dftfe::utils::deviceBlasHandle_t *d_deviceBlasHandlePtr;
    +
    246
    +
    247 // constraints
    +
    248 dftUtils::constraintMatrixInfoDevice d_constraintsTotalPotentialInfo;
    +
    249
    +
    250 /// pointer to dealii dealii::AffineConstraints<double> object
    +
    251 const dealii::AffineConstraints<double> *d_constraintMatrixPtr;
    +
    252
    +
    253 /// matrix free index required to access the DofHandler and
    +
    254 /// dealii::AffineConstraints<double> objects corresponding to the problem
    +
    255 unsigned int d_matrixFreeVectorComponent;
    +
    256
    +
    257 /// matrix free quadrature index
    +
    258 unsigned int d_matrixFreeQuadratureComponentRhsDensity;
    +
    259
    +
    260 /// matrix free quadrature index
    +
    261 unsigned int d_matrixFreeQuadratureComponentAX;
    +
    262
    +
    263 /// pointer to electron density cell quadrature data
    +
    264 const std::map<dealii::CellId, std::vector<double>> *d_rhoValuesPtr;
    +
    265
    +
    266 /// pointer to smeared charge cell quadrature data
    +
    267 const std::map<dealii::CellId, std::vector<double>>
    +
    268 *d_smearedChargeValuesPtr;
    +
    269
    +
    270 ///
    +
    271 unsigned int d_smearedChargeQuadratureId;
    +
    272
    +
    273 /// pointer to map between global dof index in current processor and the
    +
    274 /// atomic charge on that dof
    +
    275 const std::map<dealii::types::global_dof_index, double> *d_atomsPtr;
    +
    276
    +
    277 /// shape function gradient integral storage
    +
    278 std::vector<double> d_cellShapeFunctionGradientIntegralFlattened;
    +
    279
    +
    280 /// storage for mean value constraint vector
    +
    281 distributedCPUVec<double> d_meanValueConstraintVec;
    +
    282
    +
    283 /// storage for mean value constraint device vector
    +
    284 distributedDeviceVec<double> d_meanValueConstraintDeviceVec;
    +
    285
    +
    286 /// boolean flag to query if mean value constraint datastructures are
    +
    287 /// precomputed
    +
    288 bool d_isMeanValueConstraintComputed;
    +
    289
    +
    290 ///
    +
    291 bool d_isGradSmearedChargeRhs;
    +
    292
    +
    293 ///
    +
    294 bool d_isStoreSmearedChargeRhs;
    +
    295
    +
    296 ///
    +
    297 bool d_isReuseSmearedChargeRhs;
    +
    298
    +
    299 ///
    +
    300 unsigned int d_smearedChargeGradientComponentId;
    +
    301
    +
    302 /// mean value constraints: mean value constrained node
    +
    303 dealii::types::global_dof_index d_meanValueConstraintNodeId;
    +
    304
    +
    305 /// mean value constrained node local id
    +
    306 dealii::types::global_dof_index d_meanValueConstraintNodeIdLocal;
    +
    307
    +
    308 /// mean value constraints: constrained proc id containing the mean value
    +
    309 /// constrained node
    +
    310 unsigned int d_meanValueConstraintProcId;
    +
    311
    +
    312 /// duplicate constraints object with flattened maps for faster access
    +
    313 dftUtils::constraintMatrixInfo d_constraintsInfo;
    +
    314
    +
    315 ///
    +
    316 bool d_isFastConstraintsInitialized;
    +
    317
    +
    318 const MPI_Comm mpi_communicator;
    +
    319 const unsigned int n_mpi_processes;
    +
    320 const unsigned int this_mpi_process;
    +
    321 dealii::ConditionalOStream pcout;
    +
    322 };
    +
    323
    +
    324} // namespace dftfe
    +
    325# endif // poissonSolverProblemDevice_H_
    +
    326#endif
    +
    Definition MemoryStorage.h:33
    + + + + + + + +
    cublasHandle_t deviceBlasHandle_t
    Definition DeviceTypeConfig.cu.h:36
    +
    Definition upfToxml.cc:37
    +
    + + + + diff --git a/process__grid_8h.html b/process__grid_8h.html new file mode 100644 index 000000000..16188aa5a --- /dev/null +++ b/process__grid_8h.html @@ -0,0 +1,103 @@ + + + + + + + +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..3a17f5feb --- /dev/null +++ b/process__grid_8h_source.html @@ -0,0 +1,379 @@ + + + + + + + +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 */
    +
    65 ProcessGrid(const MPI_Comm & mpi_communicator,
    +
    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 */
    +
    86 ProcessGrid(const MPI_Comm & mpi_communicator,
    +
    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
    + +
    Definition upfToxml.cc:37
    +
    + + + + diff --git a/pseudo_converter_8h.html b/pseudo_converter_8h.html new file mode 100644 index 000000000..a6dc89160 --- /dev/null +++ b/pseudo_converter_8h.html @@ -0,0 +1,107 @@ + + + + + + + +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

    int dftfe::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..5cc7d60d9 --- /dev/null +++ b/pseudo_converter_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +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 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
    +
    int convert(const std::string &file, const std::string &dftfeScratchFolderName, const int verbosity, const unsigned natomTypes, const bool pseudoTestsFlag)
    +
    Definition upfToxml.cc:37
    +
    + + + + diff --git a/pseudo_utils_8h.html b/pseudo_utils_8h.html new file mode 100644 index 000000000..0de2000c8 --- /dev/null +++ b/pseudo_utils_8h.html @@ -0,0 +1,118 @@ + + + + + + + +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..d31c44d95 --- /dev/null +++ b/pseudo_utils_8h_source.html @@ -0,0 +1,319 @@ + + + + + + + +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 {
    +
    41 int numberMasterNodesOnLocalProc = masterNodeIdList.size();
    +
    42
    +
    43 int *masterNodeIdListSizes = new int[numMeshPartitions];
    +
    44
    +
    45 MPI_Allgather(&numberMasterNodesOnLocalProc,
    +
    46 1,
    +
    47 MPI_INT,
    +
    48 masterNodeIdListSizes,
    +
    49 1,
    +
    50 MPI_INT,
    +
    51 mpi_communicator);
    +
    52
    +
    53 int newMasterNodeIdListSize =
    +
    54 std::accumulate(&(masterNodeIdListSizes[0]),
    +
    55 &(masterNodeIdListSizes[numMeshPartitions]),
    +
    56 0);
    +
    57
    +
    58 globalMasterNodeIdList.resize(newMasterNodeIdListSize);
    +
    59
    +
    60 int *mpiOffsets = new int[numMeshPartitions];
    +
    61
    +
    62 mpiOffsets[0] = 0;
    +
    63
    +
    64 for (int i = 1; i < numMeshPartitions; ++i)
    +
    65 mpiOffsets[i] = masterNodeIdListSizes[i - 1] + mpiOffsets[i - 1];
    +
    66
    +
    67 MPI_Allgatherv(&(masterNodeIdList[0]),
    +
    68 numberMasterNodesOnLocalProc,
    +
    69 MPI_INT,
    +
    70 &(globalMasterNodeIdList[0]),
    +
    71 &(masterNodeIdListSizes[0]),
    +
    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 }
    +
    102 int localSpreadVecSize = localSpreadVec.size();
    +
    103
    +
    104 int *spreadVecSizes = new int[numMeshPartitions];
    +
    105
    +
    106 MPI_Allgather(&localSpreadVecSize,
    +
    107 1,
    +
    108 MPI_INT,
    +
    109 spreadVecSizes,
    +
    110 1,
    +
    111 MPI_INT,
    +
    112 mpi_communicator);
    +
    113
    +
    114 int globalSpreadVecSize =
    +
    115 std::accumulate(&(spreadVecSizes[0]),
    +
    116 &(spreadVecSizes[numMeshPartitions]),
    +
    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
    +
    128 MPI_Allgatherv(&(localSpreadVec[0]),
    +
    129 localSpreadVecSize,
    +
    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)
    +
    138 localMap[globalSpreadVec[i]] = globalSpreadVec[i + 1];
    +
    139
    +
    140
    +
    141 delete[] spreadVecSizes;
    +
    142 delete[] mpiOffsets;
    +
    143
    +
    144 return;
    +
    145 }
    +
    +
    146
    +
    147 inline void
    +
    +
    148 getRadialFunctionVal(const double radialCoordinate,
    +
    149 double & splineVal,
    +
    150 const alglib::spline1dinterpolant *spline)
    +
    151 {
    +
    152 splineVal = alglib::spline1dcalc(*spline, radialCoordinate);
    +
    153 return;
    +
    154 }
    +
    +
    155
    +
    156 inline void
    +
    +
    157 getSphericalHarmonicVal(const double theta,
    +
    158 const double phi,
    +
    159 const int l,
    +
    160 const int m,
    +
    161 double & sphericalHarmonicVal)
    +
    162 {
    +
    163 if (m < 0)
    +
    164 sphericalHarmonicVal =
    +
    165 std::sqrt(2.0) * boost::math::spherical_harmonic_i(l, -m, theta, phi);
    +
    166
    +
    167 else if (m == 0)
    +
    168 sphericalHarmonicVal =
    +
    169 boost::math::spherical_harmonic_r(l, m, theta, phi);
    +
    170
    +
    171 else if (m > 0)
    +
    172 sphericalHarmonicVal =
    +
    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
    + +
    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 upfToxml.cc:37
    +
    + + + + diff --git a/run_parameters_8h.html b/run_parameters_8h.html new file mode 100644 index 000000000..65dec019d --- /dev/null +++ b/run_parameters_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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..9043fb61c --- /dev/null +++ b/run_parameters_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +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;
    + + +
    47
    + +
    49 std::string bfgsStepMethod;
    + +
    51 unsigned int lbfgsNumPastSteps;
    +
    52 std::string optimizationSolver;
    +
    53 std::string ionRelaxFlagsFile;
    +
    54
    + +
    56 runParameters() = default;
    +
    57
    +
    58 /**
    +
    59 * Parse parameters.
    +
    60 */
    +
    61 void
    +
    62 parse_parameters(const std::string &parameter_file);
    +
    63 void
    + +
    65
    +
    66 private:
    +
    67 dealii::ParameterHandler prm;
    +
    68
    +
    69
    +
    70
    +
    71 }; // class runParameters
    +
    +
    72
    +
    73} // namespace dftfe
    +
    74#endif
    +
    Namespace which declares the input outer run parameters.
    Definition runParameters.h:35
    +
    dealii::ParameterHandler prm
    Definition runParameters.h:67
    +
    double Kmax
    Definition runParameters.h:43
    +
    unsigned int maxLineSearchIterCGPRP
    Definition runParameters.h:48
    +
    unsigned int lbfgsNumPastSteps
    Definition runParameters.h:51
    +
    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:52
    +
    std::string restartFilesPath
    Definition runParameters.h:40
    +
    std::string bfgsStepMethod
    Definition runParameters.h:49
    +
    int numberOfImages
    Definition runParameters.h:41
    +
    std::string coordinatesFileNEB
    Definition runParameters.h:55
    +
    std::string domainVectorsFileNEB
    Definition runParameters.h:55
    + +
    int verbosity
    Definition runParameters.h:37
    + +
    double pathThreshold
    Definition runParameters.h:45
    +
    std::string ionRelaxFlagsFile
    Definition runParameters.h:53
    +
    bool imageFreeze
    Definition runParameters.h:42
    +
    double optimizermaxIonUpdateStep
    Definition runParameters.h:50
    +
    Definition upfToxml.cc:37
    +
    + + + + diff --git a/scalapack_8templates_8h.html b/scalapack_8templates_8h.html new file mode 100644 index 000000000..9669a9e77 --- /dev/null +++ b/scalapack_8templates_8h.html @@ -0,0 +1,425 @@ + + + + + + + +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..364f4a429 --- /dev/null +++ b/scalapack_8templates_8h_source.html @@ -0,0 +1,3150 @@ + + + + + + + +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
    +
    55 Cblacs_pinfo(int *rank, int *nprocs);
    +
    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
    +
    78 Cblacs_gridinit(int * context,
    +
    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
    +
    89 Cblacs_gridinfo(int context,
    +
    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
    +
    106 Cblacs_gridexit(int context);
    +
    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
    +
    119 Cblacs_exit(int error_code);
    +
    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
    +
    138 Cdgesd2d(int context,
    +
    139 int M,
    +
    140 int N,
    +
    141 double *A,
    +
    142 int lda,
    +
    143 int rdest,
    +
    144 int cdest);
    +
    145 void
    +
    146 Csgesd2d(int context,
    +
    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
    +
    158 Csys2blacs_handle(MPI_Comm comm);
    +
    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
    +
    453 descinit_(int * desc,
    +
    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 {
    +
    1675 pdgemm_(transa,
    +
    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 {
    +
    1717 psgemm_(transa,
    +
    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 {
    +
    1760 pzgemm_(transa,
    +
    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
    +
    2615 fenv_t fp_exceptions;
    +
    2616 feholdexcept(&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
    +
    2645 fesetenv(&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
    +
    2682 fenv_t fp_exceptions;
    +
    2683 feholdexcept(&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
    +
    2712 fesetenv(&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
    +
    2749 fenv_t fp_exceptions;
    +
    2750 feholdexcept(&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
    +
    2779 fesetenv(&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
    + +
    Definition upfToxml.cc:37
    +
    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..ba665d1ff --- /dev/null +++ b/scalapack_wrapper_8h.html @@ -0,0 +1,106 @@ + + + + + + + +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..4bc919864 --- /dev/null +++ b/scalapack_wrapper_8h_source.html @@ -0,0 +1,1016 @@ + + + + + + + +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
    +
    231 mult(const NumberType b,
    + +
    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
    +
    260 zmult(const NumberType b,
    + +
    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 */
    +
    491 NumberType
    +
    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
    +
    +
    781 ScaLAPACKMatrix<NumberType>::local_el(const unsigned int loc_row,
    +
    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 &
    +
    +
    792 ScaLAPACKMatrix<NumberType>::local_el(const unsigned int loc_row,
    +
    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
    + +
    unsigned int size_type
    Definition scalapackWrapper.h:42
    +
    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()))
    + + +
    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 upfToxml.cc:37
    + + +
    + + + + 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..8e3b37be6 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,50 @@ +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#a9e77c4ec9b5903d1cde8388eae721652',1,'dftfe::dftClass']]], + ['about_2',['About',['../index.html#autotoc_md0',1,'']]], + ['abs_3',['abs',['../namespacedftfe_1_1utils.html#a8b7003ef5691229b2d0d72d599723da0',1,'dftfe::utils::abs(hipFloatComplex a)'],['../namespacedftfe_1_1utils.html#a38216533205864c03370f088aea62d1c',1,'dftfe::utils::abs(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#ac210a8f535f05ab1217533db3f485875',1,'dftfe::utils::abs(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#aac862b56ee93ec676261fd3b30d0eb72',1,'dftfe::utils::abs(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#ad5f75e28a1997f91f2e31ad20bc52658',1,'dftfe::utils::abs(float a)'],['../namespacedftfe_1_1utils.html#ad4552f7270a0d908717d8773a15c426d',1,'dftfe::utils::abs(double 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#a074a5a3585f53d64504f73d63ec00d47',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(const size_type communicationChannel=0)']]], + ['accumulateaddlocallyownedend_10',['accumulateaddlocallyownedend',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a694fae78f2e2e396682f10366f4052ab',1,'dftfe::linearAlgebra::MultiVector::accumulateAddLocallyOwnedEnd()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a200dacffba340cafbc9de789221bd65a',1,'dftfe::utils::mpi::MPICommunicatorP2P::accumulateAddLocallyOwnedEnd()']]], + ['accumulateforcecontributiongammaatomsfloating_11',['accumulateForceContributionGammaAtomsFloating',['../classdftfe_1_1force_class.html#abd58fcfd408a17056729886c3e37b877',1,'dftfe::forceClass']]], + ['accumulatefromcellnodaldata_12',['accumulateFromCellNodalData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a78909b02303fd00831f3cc145e485d2f',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['accumulatefromcellnodaldatakernel_13',['accumulateFromCellNodalDataKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a7b5c5944d2a5ef534a24bb81171f538a',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['ad_5ffile_14',['ad_file',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#ae4f68af529fcf3dea159eda904baf8d7',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['adaptiverankreltollrd_15',['adaptiveRankRelTolLRD',['../classdftfe_1_1dft_parameters.html#a9c175299d9cf1d8f126a43cfa5b21879',1,'dftfe::dftParameters']]], + ['add_16',['add',['../namespacedftfe_1_1utils.html#abbf68a475588415614dabd9492947c57',1,'dftfe::utils::add()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#abc6647144c62132f41fead1ae79977e2',1,'dftfe::linearAlgebra::MultiVector::add(const ValueBaseType val, const MultiVector &u)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aca286dacf130ec5477f447685f6d1c81',1,'dftfe::linearAlgebra::MultiVector::add(const ValueBaseType *valVec, const MultiVector &u)'],['../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#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)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a42d20c5ad908996be22d9bc6a452e5d4',1,'dftfe::ScaLAPACKMatrix::add()']]], + ['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#ad9dc9f5a075fe17d98681736ba9716c5',1,'dftfe::dftClass']]], + ['addenonlinearcorecorrectionstresscontribution_19',['addENonlinearCoreCorrectionStressContribution',['../classdftfe_1_1force_class.html#a355fde9b419a2e1eccab6ba5cbc5d819',1,'dftfe::forceClass']]], + ['addenonlinearcorecorrectionstresscontributionspinpolarized_20',['addENonlinearCoreCorrectionStressContributionSpinPolarized',['../classdftfe_1_1force_class.html#a68868081478617ad414d341ed118e88e',1,'dftfe::forceClass']]], + ['addephitotsmearedstresscontribution_21',['addEPhiTotSmearedStressContribution',['../classdftfe_1_1force_class.html#aaa89f7af3612e1ab7a5cfe008345e43a',1,'dftfe::forceClass']]], + ['addepspstresscontribution_22',['addEPSPStressContribution',['../classdftfe_1_1force_class.html#a31dd6c55c31935a9cd30c508b19f29d3',1,'dftfe::forceClass']]], + ['addevselfsmearedstresscontribution_23',['addEVselfSmearedStressContribution',['../classdftfe_1_1force_class.html#af82cd61019b0f193f05c8b943e3306ae',1,'dftfe::forceClass']]], + ['addmixingvariable_24',['addMixingVariable',['../classdftfe_1_1_mixing_scheme.html#ae8b4d7ec2b0d3bb0d06eae31ac5fef5e',1,'dftfe::MixingScheme']]], + ['addvariabletoinhist_25',['addVariableToInHist',['../classdftfe_1_1_mixing_scheme.html#a4da5c0b3b2263f9977cea31c713b6f43',1,'dftfe::MixingScheme']]], + ['addvariabletoouthist_26',['addVariableToOutHist',['../classdftfe_1_1_mixing_scheme.html#ac77ba111c3c89d4b3d2b57f103c41d99',1,'dftfe::MixingScheme']]], + ['algotype_27',['algoType',['../classdftfe_1_1dft_parameters.html#a40fb2d3380832b149dd90523b1747616',1,'dftfe::dftParameters']]], + ['allocate_28',['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_29',['allowFullCPUMemSubspaceRot',['../classdftfe_1_1dft_parameters.html#a497d496bcf9221c1b0964e614933a5ea',1,'dftfe::dftParameters']]], + ['allowmultiplefilteringpassesafterfirstscf_30',['allowMultipleFilteringPassesAfterFirstScf',['../classdftfe_1_1dft_parameters.html#a638d63fe92653d90795ee8a8725b8991',1,'dftfe::dftParameters']]], + ['angtobohr_31',['AngTobohr',['../classdftfe_1_1molecular_dynamics_class.html#a9329c04b16c9e50a77afe8004e099e7c',1,'dftfe::molecularDynamicsClass']]], + ['aposteriorimeshgenerate_32',['aposterioriMeshGenerate',['../classdftfe_1_1dft_class.html#ab7fb7d7943dfa2e3762e9d2c94217a7d',1,'dftfe::dftClass']]], + ['applyhomogeneousdirichletbc_33',['applyHomogeneousDirichletBC',['../classdftfe_1_1dft_class.html#a7f0a7a8ee7fc70ee3a1a6e5d59e323c4',1,'dftfe::dftClass']]], + ['applyperiodicbchigherordernodes_34',['applyPeriodicBCHigherOrderNodes',['../classdftfe_1_1dft_class.html#a5a5a766b99e8719045eb55c7e8fa7ec2',1,'dftfe::dftClass']]], + ['applywavefunctiondependentvxc_35',['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_36',['areAllCellsAffine',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a41c3d82c8e0c619355257e43b7f9bbab',1,'dftfe::basis::FEBasisOperationsBase']]], + ['areallcellscartesian_37',['areAllCellsCartesian',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a79070f4d4ed87b9bd2753e9e398e61a0',1,'dftfe::basis::FEBasisOperationsBase']]], + ['assembler_5flock_38',['assembler_lock',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a61937d264c1ff3305c1f3507703d3c7c',1,'dftfe::kohnShamDFTOperatorClass']]], + ['atomicmassesfile_39',['atomicMassesFile',['../classdftfe_1_1dft_parameters.html#a6cc82f371365551da05d3cfea5687716',1,'dftfe::dftParameters']]], + ['atomlocations_40',['atomLocations',['../classdftfe_1_1dft_class.html#aaf674a8935a2389bf3dd26723cddf372',1,'dftfe::dftClass']]], + ['atomlocationsfractional_41',['atomLocationsFractional',['../classdftfe_1_1dft_class.html#a301f68472580fc2464c240d57a28a2bc',1,'dftfe::dftClass']]], + ['atomtypes_42',['atomTypes',['../classdftfe_1_1dft_class.html#a5025061b5dceb2b7731a573687b7826c',1,'dftfe::dftClass']]], + ['autoadaptbasemeshsize_43',['autoAdaptBaseMeshSize',['../classdftfe_1_1dft_parameters.html#a56b4fc41868709c7f427299e6d3df482',1,'dftfe::dftParameters']]], + ['autodeviceblocksizes_44',['autoDeviceBlockSizes',['../classdftfe_1_1dft_parameters.html#ae5c023b60b3fe965e0ce886091973a31',1,'dftfe::dftParameters']]], + ['ax_45',['ax',['../classdftfe_1_1poisson_solver_problem.html#a080f87858752f6e4e1df13c8531e310c',1,'dftfe::poissonSolverProblem::AX()'],['../classdftfe_1_1kerker_solver_problem.html#a32839116a83e5a699408bdf46944a0d8',1,'dftfe::kerkerSolverProblem::AX()']]], + ['axpby_46',['axpby',['../classdftfe_1_1operator_d_f_t_class.html#a97ca45bee93486b8752e34457df38b30',1,'dftfe::operatorDFTClass::axpby()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#af56269e6e380e2085a0f721604fd4e8b',1,'dftfe::kohnShamDFTOperatorClass::axpby()']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 000000000..9e871793f --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,118 @@ +var searchData= +[ + ['parse_5fparameters_0',['parse_parameters',['../classdftfe_1_1dft_parameters.html#a973e7cebb8b8705fe8e8872081629ed2',1,'dftfe::dftParameters::parse_parameters()'],['../classdftfe_1_1run_parameters.html#a2e398eed3eafd1748e44dcc9b73c74e9',1,'dftfe::runParameters::parse_parameters()']]], + ['parsefile_1',['parseFile',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a9dea84e7b17a9b0c2211335e00d5fe6f',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['paththreshold_2',['pathThreshold',['../classdftfe_1_1run_parameters.html#ad08be79f22a7dfec817bb56ec7b6b849',1,'dftfe::runParameters']]], + ['pcout_3',['pcout',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ab282e4a65a88f60764558cb7003b6161',1,'dftfe::kohnShamDFTOperatorDeviceClass::pcout'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ad4c09e672c5f6f7a4c61320f3653bd1e',1,'dftfe::kohnShamDFTOperatorClass::pcout'],['../classdftfe_1_1kerker_solver_problem.html#a1eeb9797f3c816982a449b923757bfe9',1,'dftfe::kerkerSolverProblem::pcout'],['../classdftfe_1_1geo_opt_ion.html#a7da83cd686146cc98a9ee22981336de8',1,'dftfe::geoOptIon::pcout'],['../classdftfe_1_1geo_opt_cell.html#a9979567120cc38ffe6732b36c7826a09',1,'dftfe::geoOptCell::pcout'],['../classdftfe_1_1geometry_optimization_class.html#aca62620fb0d7e56e382c60b2c946cfd1',1,'dftfe::geometryOptimizationClass::pcout'],['../classdftfe_1_1force_class.html#a8fb0067f4f68d3943c03f6bee9c3e309',1,'dftfe::forceClass::pcout'],['../classdftfe_1_1energy_calculator.html#a5e844a8417fc8d2af6b8a5df62db1fed',1,'dftfe::energyCalculator::pcout'],['../classdftfe_1_1dft_class.html#affeda088604a330c99dcde42bac74b64',1,'dftfe::dftClass::pcout'],['../classdftfe_1_1dealii_linear_solver.html#a05213637c64633bcfca2964b84666140',1,'dftfe::dealiiLinearSolver::pcout'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#aafde4dcf28e61ef1330dd1f7d5b1fc36',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::pcout'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a9c4c297c5a84d7b5b0a152213b1bd601',1,'dftfe::cgPRPNonLinearSolver::pcout'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a06c53bd709044e5e36745ead8eb2cf6d',1,'dftfe::BFGSNonLinearSolver::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_1molecular_dynamics_class.html#a0ef6927dd007a4311fc95889b63b9c43',1,'dftfe::molecularDynamicsClass::pcout'],['../classdftfe_1_1nudged_elastic_band_class.html#a3878589f97e41ed2ad8bb2a694038875',1,'dftfe::nudgedElasticBandClass::pcout'],['../classdftfe_1_1poisson_solver_problem.html#a7251bebe2be06bbe022100b30d4cc191',1,'dftfe::poissonSolverProblem::pcout'],['../classdftfe_1_1symmetry_class.html#aa4c9b6bd4e74e78c9e20f69b2ea962c5',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_4',['pdgeadd_',['../namespacedftfe.html#a221815568916358c46a411f2eaf8a622',1,'dftfe']]], + ['pdgels_5f_5',['pdgels_',['../namespacedftfe.html#adaa498bcbb07c15a2d5be67a678b63a0',1,'dftfe']]], + ['pdgemm_5f_6',['pdgemm_',['../namespacedftfe.html#afcd4617f3c829f0e97e950caf20324af',1,'dftfe']]], + ['pdgemr2d_5f_7',['pdgemr2d_',['../namespacedftfe.html#ab6a7b32848fa87d641a74bac65272d2b',1,'dftfe']]], + ['pdgesv_5f_8',['pdgesv_',['../namespacedftfe.html#a24d2ddff1d3f167c76d65b35a5e5b6b8',1,'dftfe']]], + ['pdgesvd_5f_9',['pdgesvd_',['../namespacedftfe.html#a3828b64eb1e8fb649d3c25da1614e384',1,'dftfe']]], + ['pdgetrf_5f_10',['pdgetrf_',['../namespacedftfe.html#a2fc8e14dce993b4584b79ac2c3c3b71f',1,'dftfe']]], + ['pdgetri_5f_11',['pdgetri_',['../namespacedftfe.html#a002f688ca93979940594131a843fdfd4',1,'dftfe']]], + ['pdlacpy_5f_12',['pdlacpy_',['../namespacedftfe.html#af38708a1d214262c1cee343f229abb50',1,'dftfe']]], + ['pdlamch_5f_13',['pdlamch_',['../namespacedftfe.html#abe6d16eb94b0fae6f7a1d1451c14fc92',1,'dftfe']]], + ['pdlange_5f_14',['pdlange_',['../namespacedftfe.html#a129935f715565db171f51520d37c82c4',1,'dftfe']]], + ['pdlansy_5f_15',['pdlansy_',['../namespacedftfe.html#ab5a9ea1c809dbc2b0b8b432a1b87e27f',1,'dftfe']]], + ['pdpocon_5f_16',['pdpocon_',['../namespacedftfe.html#a8bf82b760bdb3444929c5af5d27dd6ac',1,'dftfe']]], + ['pdpotrf_5f_17',['pdpotrf_',['../namespacedftfe.html#ae253dc496641780227d5acaab9c8c0ce',1,'dftfe']]], + ['pdpotri_5f_18',['pdpotri_',['../namespacedftfe.html#a52e4e94cb6d6249b0f172d6154da1511',1,'dftfe']]], + ['pdsyev_5f_19',['pdsyev_',['../namespacedftfe.html#aa7486105b406d173f93a86a6cf1eca74',1,'dftfe']]], + ['pdsyevr_5f_20',['pdsyevr_',['../namespacedftfe.html#abe69a61918297c8a21e31f773208c864',1,'dftfe']]], + ['pdsyevx_5f_21',['pdsyevx_',['../namespacedftfe.html#a10d901b8632df151002719691be7cc6c',1,'dftfe']]], + ['pdtran_5f_22',['pdtran_',['../namespacedftfe.html#a03f4d6b17504d2d3a551f5d24ecc7f42',1,'dftfe']]], + ['pdtrtri_5f_23',['pdtrtri_',['../namespacedftfe.html#a7d5dca590290c8d280d24bec6dd2ab8a',1,'dftfe']]], + ['periodictable_24',['periodictable',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a36d2c3f1a82480a1508892e68836246f',1,'dftfe::pseudoUtils::PeriodicTable::PeriodicTable()'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['periodictable_2eh_25',['PeriodicTable.h',['../_periodic_table_8h.html',1,'']]], + ['periodicx_26',['periodicX',['../classdftfe_1_1dft_parameters.html#a133388b8aba995f0e6c02d2fa5532ab8',1,'dftfe::dftParameters']]], + ['periodicy_27',['periodicY',['../classdftfe_1_1dft_parameters.html#a2c140828677fda45b0b7f5d5fc084279',1,'dftfe::dftParameters']]], + ['periodicz_28',['periodicZ',['../classdftfe_1_1dft_parameters.html#aac98da4a3110ae8cb5d1d1db258f0764',1,'dftfe::dftParameters']]], + ['pgeadd_29',['pgeadd',['../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#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#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_30',['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_31',['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_32',['pgemr2d',['../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#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#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_33',['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_34',['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_35',['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_36',['pgetri',['../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)'],['../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#a2a82c250c7cbedc80087765993a11c35',1,'dftfe::pgetri(const int *, number *, const int *, const int *, const int *, const int *, number *, int *, int *, int *, int *)']]], + ['pinnednodeforpbc_37',['pinnedNodeForPBC',['../classdftfe_1_1dft_parameters.html#a9423331ee0aebf60200c0c4225075535',1,'dftfe::dftParameters']]], + ['placpy_38',['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_39',['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_40',['plange',['../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)'],['../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)']]], + ['plansy_41',['plansy',['../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)'],['../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#a097c1dee8268bf876a177fa6d43c8fe3',1,'dftfe::plansy(const char *, const char *, const int *, const number *, const int *, const int *, const int *, number *)']]], + ['pointer_42',['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_43',['poissonGPU',['../classdftfe_1_1dft_parameters.html#a881c0723e5092869f59c9c2285a3e799',1,'dftfe::dftParameters']]], + ['poissonsolverproblem_44',['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_45',['poissonSolverProblem.h',['../poisson_solver_problem_8h.html',1,'']]], + ['poissonsolverproblemdevice_2eh_46',['poissonSolverProblemDevice.h',['../poisson_solver_problem_device_8h.html',1,'']]], + ['pool_47',['pool',['../classdftfe_1_1dft_utils_1_1_pool.html#ab25f9a7e1ce0aa8ca1a13601af0c5c16',1,'dftfe::dftUtils::Pool::Pool()'],['../classdftfe_1_1dft_utils_1_1_pool.html',1,'dftfe::dftUtils::Pool']]], + ['popoldhistory_48',['popOldHistory',['../classdftfe_1_1_mixing_scheme.html#a366b186ea5c549d5b7fa8b8f8d03a942',1,'dftfe::MixingScheme']]], + ['popoutrhoinrhooutvals_49',['popOutRhoInRhoOutVals',['../classdftfe_1_1dft_class.html#aceb3d7a87d6766025aad6bf307f3c2a6',1,'dftfe::dftClass']]], + ['pplacgv_50',['pplacgv',['../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)'],['../namespacedftfe.html#a8b096c1092d1287ee77384a89bf2f622',1,'dftfe::pplacgv(const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)']]], + ['ppocon_51',['ppocon',['../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)'],['../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#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 *)']]], + ['ppotrf_52',['ppotrf',['../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)'],['../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)']]], + ['ppotri_53',['ppotri',['../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#a80d803b1a175c1b084d5d3cefe51d0ea',1,'dftfe::ppotri(const char *, const int *, number *, const int *, const int *, const int *, int *)'],['../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)']]], + ['precomputeshapefunctiongradientintegrals_54',['precomputeshapefunctiongradientintegrals',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a573e4abdc69ea11930d8f2af3a64d057',1,'dftfe::kohnShamDFTOperatorClass::preComputeShapeFunctionGradientIntegrals()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a44df37e054cd57ff01e363b1ef2e6661',1,'dftfe::kohnShamDFTOperatorDeviceClass::preComputeShapeFunctionGradientIntegrals()']]], + ['precondition_55',['precondition',['../classdftfe_1_1geo_opt_ion.html#a16e8a34fdb36346a775a400e8dc9909a',1,'dftfe::geoOptIon::precondition()'],['../classdftfe_1_1geo_opt_cell.html#ac89fb1efead7b14abc19cc67e5a719df',1,'dftfe::geoOptCell::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_56',['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_57',['print_parameters',['../classdftfe_1_1run_parameters.html#a9cb638fb2ddc454b9719df55156de137',1,'dftfe::runParameters']]], + ['printatomsforces_58',['printAtomsForces',['../classdftfe_1_1force_class.html#aacae38b969c007a56f19e30ea977a01b',1,'dftfe::forceClass']]], + ['printcurrentmemoryusage_59',['printCurrentMemoryUsage',['../namespacedftfe_1_1dft_utils.html#aa50216d4c39752e65055aff5ec377421',1,'dftfe::dftUtils']]], + ['printstress_60',['printStress',['../classdftfe_1_1force_class.html#a02cd993da68f16943844d60476c6bfc4',1,'dftfe::forceClass']]], + ['prm_61',['prm',['../classdftfe_1_1run_parameters.html#a00b6289661bf222c616e2632157a6276',1,'dftfe::runParameters']]], + ['probeandreceiveincomingmsg_62',['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_63',['process_grid.h',['../process__grid_8h.html',1,'']]], + ['processgrid_64',['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_65',['processGridELPASetup',['../classdftfe_1_1elpa_scala_manager.html#a8e659cb2f7aab167c168269aadd9c25c',1,'dftfe::elpaScalaManager']]], + ['projectors_66',['projectors',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a169e8039f019814844185ab8d2450d1c',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['projectpreviousgroundstaterho_67',['projectPreviousGroundStateRho',['../classdftfe_1_1dft_class.html#a912df5206689e1d373768ae53a2f98c9',1,'dftfe::dftClass']]], + ['property_68',['property',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a0c818961322247597311ada36af4c6b7',1,'dftfe::ScaLAPACKMatrix::property'],['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9ac',1,'dftfe::LAPACKSupport::Property']]], + ['property_5fname_69',['property_name',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a4f0bba6ecbb502d68dbe13ec7b8e3852',1,'dftfe::LAPACKSupport']]], + ['pseudo_70',['pseudo',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a61dea88fbaec5bec5a27595f434a688a',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['pseudoconverter_2eh_71',['pseudoConverter.h',['../pseudo_converter_8h.html',1,'']]], + ['pseudogramschmidtorthogonalization_72',['pseudoGramSchmidtOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#aece2d5de1c664b00010ff47f5633e6af',1,'dftfe::linearAlgebraOperations']]], + ['pseudopotentialfile_73',['pseudoPotentialFile',['../classdftfe_1_1dft_parameters.html#a1f64a5581f6d416bfeb10c0c21b8cb44',1,'dftfe::dftParameters']]], + ['pseudotestsflag_74',['pseudoTestsFlag',['../classdftfe_1_1dft_parameters.html#a0ca8da48b8bdd3ae7658d405acc14f49',1,'dftfe::dftParameters']]], + ['pseudoutils_2eh_75',['pseudoUtils.h',['../pseudo_utils_8h.html',1,'']]], + ['psgeadd_5f_76',['psgeadd_',['../namespacedftfe.html#a233629b7a5e4d911de61898d349c6832',1,'dftfe']]], + ['psgels_5f_77',['psgels_',['../namespacedftfe.html#afd819e4e2c97e5a87871f0b3ef4fbf31',1,'dftfe']]], + ['psgemm_5f_78',['psgemm_',['../namespacedftfe.html#a712e6c38908c491a443b52778df44966',1,'dftfe']]], + ['psgemr2d_5f_79',['psgemr2d_',['../namespacedftfe.html#a0f575fdd814ce60d6c1b281159982ff6',1,'dftfe']]], + ['psgesv_5f_80',['psgesv_',['../namespacedftfe.html#aef3583562b2a9bb4a4470be8bf13927e',1,'dftfe']]], + ['psgesvd_5f_81',['psgesvd_',['../namespacedftfe.html#a0e761ff7b7e2af56709a3810a9328c30',1,'dftfe']]], + ['psgetrf_5f_82',['psgetrf_',['../namespacedftfe.html#abde5ab01317e19ac8feeca5602339d51',1,'dftfe']]], + ['psgetri_5f_83',['psgetri_',['../namespacedftfe.html#a9e0a4b60e5d7a3a2d9c56d7bcca7b3a1',1,'dftfe']]], + ['pslacpy_5f_84',['pslacpy_',['../namespacedftfe.html#a341659efbe4ac80f340443830891e557',1,'dftfe']]], + ['pslamch_5f_85',['pslamch_',['../namespacedftfe.html#a7c61818e9eb2bdbcfb0d8ebdb1945c12',1,'dftfe']]], + ['pslange_5f_86',['pslange_',['../namespacedftfe.html#af4b521c6694c2682ef70694b20f8ec6d',1,'dftfe']]], + ['pslansy_5f_87',['pslansy_',['../namespacedftfe.html#a619f9a1e5a3dc5e2542db2542ea4159b',1,'dftfe']]], + ['pspcutoffimagecharges_88',['pspCutoffImageCharges',['../classdftfe_1_1dft_parameters.html#a592ceb4c131074c5c053e96b5c942f97',1,'dftfe::dftParameters']]], + ['pspocon_5f_89',['pspocon_',['../namespacedftfe.html#a9bd6a7d349646376a1d62ba9decf7212',1,'dftfe']]], + ['pspotrf_5f_90',['pspotrf_',['../namespacedftfe.html#a7b312f4ec912904f739e3884959ae74f',1,'dftfe']]], + ['pspotri_5f_91',['pspotri_',['../namespacedftfe.html#aff107ce3bc9296f14c90a2577146aa94',1,'dftfe']]], + ['pssyev_5f_92',['pssyev_',['../namespacedftfe.html#aafa91b6b369496e0a7507d591ee82705',1,'dftfe']]], + ['pssyevr_5f_93',['pssyevr_',['../namespacedftfe.html#accde1d8ea16247a5878e9e56e1fa3ad0',1,'dftfe']]], + ['pssyevx_5f_94',['pssyevx_',['../namespacedftfe.html#af7898cfd26024e906c28470ee08d0bd2',1,'dftfe']]], + ['pstran_5f_95',['pstran_',['../namespacedftfe.html#af852f56eb67805d3bda3a2eef708c5bf',1,'dftfe']]], + ['pstrtri_5f_96',['pstrtri_',['../namespacedftfe.html#a44af8d71d934a11b0d3606bf008f7b7b',1,'dftfe']]], + ['pswfc_97',['PSwfc',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a7a09114f99ca5b6fbcd53054a3a6e6c2',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['psyev_98',['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_99',['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_100',['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_101',['ptable',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a26c6e2598bece56f45cfc79a4e5a279d',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['ptran_102',['ptran',['../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)'],['../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)']]], + ['ptrtri_103',['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_104',['pzgeadd_',['../namespacedftfe.html#aaf96e3cb8da123837a2377856357f67e',1,'dftfe']]], + ['pzgemm_5f_105',['pzgemm_',['../namespacedftfe.html#ac983f66dcae225deff57ab9240317432',1,'dftfe']]], + ['pzgetrf_5f_106',['pzgetrf_',['../namespacedftfe.html#a7c568a3b74e953fcf5b3e42a9a88e5aa',1,'dftfe']]], + ['pzgetri_5f_107',['pzgetri_',['../namespacedftfe.html#a3c535a126efb2a7819e59c35d2f5ba43',1,'dftfe']]], + ['pzheev_5f_108',['pzheev_',['../namespacedftfe.html#a4c528a0b8b8e334819754e69c8481299',1,'dftfe']]], + ['pzheevr_5f_109',['pzheevr_',['../namespacedftfe.html#ae0e0243bcf842451ed42faba81fb2c4a',1,'dftfe']]], + ['pzheevx_5f_110',['pzheevx_',['../namespacedftfe.html#a53980a0e19402e09d15af41be52cd979',1,'dftfe']]], + ['pzlacgv_5f_111',['pzlacgv_',['../namespacedftfe.html#ac6a9217aa19c7367285078037d4f5583',1,'dftfe']]], + ['pzpotrf_5f_112',['pzpotrf_',['../namespacedftfe.html#a8c350b90b550b87a811af738e9dccb64',1,'dftfe']]], + ['pzpotri_5f_113',['pzpotri_',['../namespacedftfe.html#a3f7be7ce745104479b872684e5cd467c',1,'dftfe']]], + ['pztrtri_5f_114',['pztrtri_',['../namespacedftfe.html#aea480fc447349ffb0996fb46220cabd8',1,'dftfe']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 000000000..05610b7d8 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,5 @@ +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,'']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 000000000..13c3ede2e --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,72 @@ +var searchData= +[ + ['radiusatomball_0',['radiusAtomBall',['../classdftfe_1_1dft_parameters.html#a61aeeaf83366820db300f6ba0e6b4a1b',1,'dftfe::dftParameters']]], + ['radvalues_1',['radValues',['../classdftfe_1_1dft_class.html#a0eb7bfad57d6e26fb560ae40cedad667',1,'dftfe::dftClass']]], + ['rayleighritz_2',['rayleighRitz',['../namespacedftfe_1_1linear_algebra_operations.html#a53a8186b77aebcdeaa7c90c213313df8',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzgep_3',['rayleighRitzGEP',['../namespacedftfe_1_1linear_algebra_operations.html#a30899ff81a036aac9aa8b955ea78f8a1',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzgepspectrumsplitdirect_4',['rayleighRitzGEPSpectrumSplitDirect',['../namespacedftfe_1_1linear_algebra_operations.html#ae1f67994f31a21da082ea96da982686c',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzspectrumsplitdirect_5',['rayleighRitzSpectrumSplitDirect',['../namespacedftfe_1_1linear_algebra_operations.html#aeed0689c8e46f73683a1f4e616e2ddcf',1,'dftfe::linearAlgebraOperations']]], + ['readfile_6',['readFile',['../namespacedftfe_1_1dft_utils.html#a8c6d0d0249775853719a1e599f8fa707',1,'dftfe::dftUtils']]], + ['readkpointdata_7',['readkPointData',['../classdftfe_1_1dft_class.html#ace0ee185652e4addef41a3e5a609677d',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#af9c604ecfc21dfa947115728b6421289',1,'dftfe::dftClass']]], + ['readpsifile_10',['readPsiFile',['../namespacedftfe_1_1dft_utils.html#a9cd072ebfa9f0046d25fb14684398796',1,'dftfe::dftUtils']]], + ['readpsiradialvalues_11',['readPSIRadialValues',['../classdftfe_1_1dft_class.html#aad4305a56be183b14df306033ddba1ae',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#a329fee6055d6ab0349e28d73e2cc39cb',1,'dftfe::utils::realPart(const float x)'],['../namespacedftfe_1_1utils.html#ac842eff416fd8183670411de8a30bfc4',1,'dftfe::utils::realPart(const std::complex< float > x)'],['../namespacedftfe_1_1utils.html#a17e0aa81a720251abed8169ac0270117',1,'dftfe::utils::realPart(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#af397c74986c0a3da6b343a3f8cfb3d27',1,'dftfe::utils::realPart(const double x)']]], + ['realpartdevice_15',['realpartdevice',['../namespacedftfe_1_1utils.html#a802442d76e55dbea34797983807d3671',1,'dftfe::utils::realPartDevice(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#ae98b64c742276241ee15b1973725ecbd',1,'dftfe::utils::realPartDevice(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a55f60c6c5b9896ac149b5949123b2996',1,'dftfe::utils::realPartDevice(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a7ac38ab177210ca02e546c0db8101f5c',1,'dftfe::utils::realPartDevice(float a)'],['../namespacedftfe_1_1utils.html#a7f189677d8a881de936a196765025e32',1,'dftfe::utils::realPartDevice(double a)'],['../namespacedftfe_1_1utils.html#aa84ed5d5f5aaa9693e423ed1023edaff',1,'dftfe::utils::realPartDevice(hipFloatComplex a)']]], + ['recomputekpointcoordinates_16',['recomputeKPointCoordinates',['../classdftfe_1_1dft_class.html#a722b2d6b361e73915ee3518a20c5e22c',1,'dftfe::dftClass']]], + ['recv_5fbuf_5fsize_17',['recv_buf_size',['../classdftfe_1_1symmetry_class.html#a11bf5bb62761a5bd094928e4ba3ce861',1,'dftfe::symmetryClass']]], + ['recv_5fsize_18',['recv_size',['../classdftfe_1_1symmetry_class.html#a9e9352ae929a6239bbb48d1295009b64',1,'dftfe::symmetryClass']]], + ['recv_5fsize0_19',['recv_size0',['../classdftfe_1_1symmetry_class.html#ab1ed825d19e49b4ff088016f10bbcc97',1,'dftfe::symmetryClass']]], + ['recv_5fsize1_20',['recv_size1',['../classdftfe_1_1symmetry_class.html#a171aa76295cdaa4e2791abb173bf43dd',1,'dftfe::symmetryClass']]], + ['recvddata0_21',['recvdData0',['../classdftfe_1_1symmetry_class.html#ae617c110669a275d99c141246a2304f3',1,'dftfe::symmetryClass']]], + ['recvddata1_22',['recvdData1',['../classdftfe_1_1symmetry_class.html#a0b8734c13d0c150f63e0cb2fc237d3b5',1,'dftfe::symmetryClass']]], + ['recvddata2_23',['recvdData2',['../classdftfe_1_1symmetry_class.html#ac342d6d9e6ab9303b5d1b8ecea4de9f8',1,'dftfe::symmetryClass']]], + ['recvddata3_24',['recvdData3',['../classdftfe_1_1symmetry_class.html#ae01f64ab6f53d6a2c5c4591e562c0cf4',1,'dftfe::symmetryClass']]], + ['recvgrad_5fsize1_25',['recvGrad_size1',['../classdftfe_1_1symmetry_class.html#ab9b4bae8195125665224f81f54af25ed',1,'dftfe::symmetryClass']]], + ['reference_26',['reference',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aeea85bae38644c63b80fb6ba6d695a5f',1,'dftfe::linearAlgebra::MultiVector::reference'],['../classdftfe_1_1utils_1_1_memory_storage.html#a2f15bec864198b311348b924d8e81eb9',1,'dftfe::utils::MemoryStorage::reference']]], + ['refinementalgorithma_27',['refinementAlgorithmA',['../classdftfe_1_1triangulation_manager.html#a08592645d6a3a1c4a56ac3e8247fa9f4',1,'dftfe::triangulationManager']]], + ['refineserialmesh_28',['refineSerialMesh',['../classdftfe_1_1triangulation_manager.html#a48ab7214b9743b44274cafc2040d20ba',1,'dftfe::triangulationManager']]], + ['reinit_29',['reinit',['../classdftfe_1_1dftfe_wrapper.html#acd578816aab8377362fbc77c2e847796',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)'],['../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_1dftfe_wrapper.html#a1e846cab63970993eb53bc6da8be79cc',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 isScfRestart=true)'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a685d504e57f0b514772b8ce390c5043f',1,'dftfe::basis::FEBasisOperationsBase::reinit()'],['../classdftfe_1_1kerker_solver_problem.html#a0f147066e39f2945e7427432572a15e9',1,'dftfe::kerkerSolverProblem::reinit()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aaed845f95346eafeb60c1ec5b27bb465',1,'dftfe::kohnShamDFTOperatorClass::reinit()'],['../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)'],['../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_1poisson_solver_problem.html#aa45f2ffd06029c91970e3b35d93307df',1,'dftfe::poissonSolverProblem::reinit()'],['../classdftfe_1_1operator_d_f_t_class.html#a9c7688aabd519a3a9bfcf67d1b2460e0',1,'dftfe::operatorDFTClass::reinit(const unsigned int wavefunBlockSize)=0'],['../classdftfe_1_1operator_d_f_t_class.html#a5af15f8575f26f5c770f1f31104c0917',1,'dftfe::operatorDFTClass::reinit(const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)=0'],['../classdftfe_1_1operator_d_f_t_class.html#a06534aa9fa56dc90f5312f75aa969a0c',1,'dftfe::operatorDFTClass::reinit(const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)=0'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a347e3c4efbb0501729f5e38f74993ef3',1,'dftfe::linearAlgebra::MultiVector::reinit(const MultiVector &u)'],['../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_1kohn_sham_d_f_t_operator_device_class.html#add01fb30ffc69889cc5a170666e7f813',1,'dftfe::kohnShamDFTOperatorDeviceClass::reinit()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae2b1527c9cd51f84080463e4e5cffb12',1,'dftfe::kohnShamDFTOperatorClass::reinit(const unsigned int wavefunBlockSize)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a3187ab80ade565b601080333eaa7eb46',1,'dftfe::kohnShamDFTOperatorClass::reinit(const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)']]], + ['reinitializekohnshamdftoperator_30',['reInitializeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#a83e9def88c02ba94d6c977cd5b807751',1,'dftfe::dftClass']]], + ['reinitkpointspinindex_31',['reinitkpointspinindex',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a5d2e459e778de6536daa4ced50fb7752',1,'dftfe::kohnShamDFTOperatorDeviceClass::reinitkPointSpinIndex()'],['../classdftfe_1_1operator_d_f_t_class.html#a52181d95b4e1036110d88b7ebb767eaf',1,'dftfe::operatorDFTClass::reinitkPointSpinIndex()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#acd368f422454a45d41700a72cb9fd755',1,'dftfe::kohnShamDFTOperatorClass::reinitkPointSpinIndex()']]], + ['reinitspectrumbounds_32',['reinitSpectrumBounds',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a34cc1a9a57e84e79e392841219886fff',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['reproducible_5foutput_33',['reproducible_output',['../classdftfe_1_1dft_parameters.html#a513bf52c61ae46bd22ae9b4472dc09f4',1,'dftfe::dftParameters']]], + ['rescalevelocities_34',['RescaleVelocities',['../classdftfe_1_1molecular_dynamics_class.html#a9f064dae8f3c00a23ba58b69c88609cd',1,'dftfe::molecularDynamicsClass']]], + ['resetextpothamflag_35',['resetextpothamflag',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a948b6c2bdeb6cc20801de9df367f5221',1,'dftfe::kohnShamDFTOperatorDeviceClass::resetExtPotHamFlag()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae8b0fd5dca88eae95e50763c08ebdebc',1,'dftfe::kohnShamDFTOperatorClass::resetExtPotHamFlag()']]], + ['resetmesh_36',['resetMesh',['../classdftfe_1_1triangulation_manager.html#a8d10e3842e326bd523d3d9401038ce32',1,'dftfe::triangulationManager']]], + ['resetrhonodalin_37',['resetrhonodalin',['../classdftfe_1_1dft_class.html#a03c98a5732c08cb1cb683e35097ee4cc',1,'dftfe::dftClass::resetRhoNodalIn()'],['../classdftfe_1_1dft_base.html#afb55667a7521ffe8a6b6aebce139ebc3',1,'dftfe::dftBase::resetRhoNodalIn()']]], + ['resetrhonodalsplitin_38',['resetrhonodalsplitin',['../classdftfe_1_1dft_class.html#a008d814e1de564babb2580821af6cd41',1,'dftfe::dftClass::resetRhoNodalSplitIn()'],['../classdftfe_1_1dft_base.html#a62350a0841630fdbebac2931d15439da',1,'dftfe::dftBase::resetRhoNodalSplitIn()']]], + ['resize_39',['resize',['../classdftfe_1_1utils_1_1_memory_storage.html#a444af8c7c6a92f83b0db6422075ac9b8',1,'dftfe::utils::MemoryStorage']]], + ['resizetempstorage_40',['resizeTempStorage',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a0b370b7fc59c20016d0a0c32e746abd9',1,'dftfe::basis::FEBasisOperationsBase']]], + ['restart_41',['restart',['../classdftfe_1_1run_parameters.html#a38dfa64b3247e99c00b27913fcbea56b',1,'dftfe::runParameters::restart'],['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a393d5137bf83313de43e0ffdb59513b4',1,'dftfe::nonLinearSolver::RESTART']]], + ['restartfilespath_42',['restartFilesPath',['../classdftfe_1_1run_parameters.html#a4c21c57289a6a9ef4081ffe67e2e54f8',1,'dftfe::runParameters']]], + ['restartfolder_43',['restartFolder',['../classdftfe_1_1dft_parameters.html#a718dcc9b1c7852e42a4208720b7882a7',1,'dftfe::dftParameters']]], + ['restartspinfromnospin_44',['restartSpinFromNoSpin',['../classdftfe_1_1dft_parameters.html#a332d14ebec3bf0c268cad02086407627',1,'dftfe::dftParameters']]], + ['restricttoonepass_45',['restrictToOnePass',['../classdftfe_1_1dft_parameters.html#ad5c5310cc43c2b02b00875f54bc95a46',1,'dftfe::dftParameters']]], + ['returnnormedvector_46',['ReturnNormedVector',['../classdftfe_1_1nudged_elastic_band_class.html#af06d3ee71b8a7e14e22ad540b6bf0950',1,'dftfe::nudgedElasticBandClass']]], + ['returnvaluetype_47',['returnvaluetype',['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700',1,'dftfe::eigenSolverClass::ReturnValueType'],['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7',1,'dftfe::nonLinearSolver::ReturnValueType']]], + ['reusedensitygeoopt_48',['reuseDensityGeoOpt',['../classdftfe_1_1dft_parameters.html#a49a2478c31af6ed725e925ef5f83037b',1,'dftfe::dftParameters']]], + ['reuselanczosupperboundfromfirstcall_49',['reuseLanczosUpperBoundFromFirstCall',['../classdftfe_1_1dft_parameters.html#a3d580e11010c8b30bf2a97b9b237af63',1,'dftfe::dftParameters']]], + ['reusewfcgeoopt_50',['reuseWfcGeoOpt',['../classdftfe_1_1dft_parameters.html#a9419961b863a64dcfdc2ca48791a8499',1,'dftfe::dftParameters']]], + ['rho_51',['rho',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a843a28dfdc5b2d5463ba2a7b83fdec7c',1,'dftfe']]], + ['rhodataattributes_52',['rhoDataAttributes',['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7',1,'dftfe']]], + ['rhofieldinnerproduct_53',['rhofieldInnerProduct',['../classdftfe_1_1dft_class.html#ab8072353bcca630cb60230e9e24cc96b',1,'dftfe::dftClass']]], + ['rhofieldl2norm_54',['rhofieldl2Norm',['../classdftfe_1_1dft_class.html#a7393137c5f1fc1f307f4006547791fc3',1,'dftfe::dftClass']]], + ['rhoinvalues_55',['rhoInValues',['../classdftfe_1_1dft_class.html#a3f8b43ffa9cd8ad34276fa81e2dad999',1,'dftfe::dftClass']]], + ['rhoinvaluesspinpolarized_56',['rhoInValuesSpinPolarized',['../classdftfe_1_1dft_class.html#a0df98cb70bba1304aaed98e8b8ac1079',1,'dftfe::dftClass']]], + ['rhooutvalues_57',['rhoOutValues',['../classdftfe_1_1dft_class.html#a572d606518bed9eeaf394e340165430d',1,'dftfe::dftClass']]], + ['rhooutvaluesspinpolarized_58',['rhoOutValuesSpinPolarized',['../classdftfe_1_1dft_class.html#a32384533a4f15bfe0debbda704eaaaa6',1,'dftfe::dftClass']]], + ['rhorecvd_59',['rhoRecvd',['../classdftfe_1_1symmetry_class.html#a378c4a834b7919f3851e540af9d42837',1,'dftfe::symmetryClass']]], + ['root_60',['root',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a8775cf9d5a5f1f156aa7593cbc36af4c',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['row_5fblock_5fsize_61',['row_block_size',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ac49f03ec236b08f7670343cf072f912d',1,'dftfe::ScaLAPACKMatrix']]], + ['run_62',['run',['../classdftfe_1_1dft_class.html#a2615251523d24d3c0e50c5ebb54b0d19',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_63',['runMD',['../classdftfe_1_1molecular_dynamics_class.html#ad50b54b4bc6f8afc490783ca7e92ad44',1,'dftfe::molecularDynamicsClass']]], + ['running_20dft_20fe_64',['Running DFT-FE',['../index.html#autotoc_md2',1,'']]], + ['runopt_65',['runOpt',['../classdftfe_1_1geometry_optimization_class.html#a654861464517f6da7cb0be690bf1d2a7',1,'dftfe::geometryOptimizationClass']]], + ['runparameters_66',['runparameters',['../classdftfe_1_1run_parameters.html#ace05f085e50a0485502d8103cf6aa060',1,'dftfe::runParameters::runParameters()'],['../classdftfe_1_1run_parameters.html',1,'dftfe::runParameters']]], + ['runparameters_2eh_67',['runParameters.h',['../run_parameters_8h.html',1,'']]], + ['runtimeerror_68',['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..dc8881e52 --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,97 @@ +var searchData= +[ + ['save_0',['save',['../classdftfe_1_1nudged_elastic_band_class.html#af51109e0dd719061f6032f308045e17e',1,'dftfe::nudgedElasticBandClass::save()'],['../classdftfe_1_1nonlinear_solver_problem.html#aef5a7d70f38f60fc254553b3cf42c12d',1,'dftfe::nonlinearSolverProblem::save()'],['../classdftfe_1_1non_linear_solver.html#aa81440478681e39d87f3665e4a62b7c6',1,'dftfe::nonLinearSolver::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()']]], + ['saverhodata_1',['saveRhoData',['../classdftfe_1_1dft_parameters.html#a23a0e981382ae02fbc3d9290fe5bde9f',1,'dftfe::dftParameters']]], + ['savesupporttriangulations_2',['saveSupportTriangulations',['../classdftfe_1_1triangulation_manager.html#a5403284760785c6ce4c9ea9a92c7d296',1,'dftfe::triangulationManager']]], + ['savetriainfoandrhonodaldata_3',['saveTriaInfoAndRhoNodalData',['../classdftfe_1_1dft_class.html#a518794653070d913fe23580ff4eb5557',1,'dftfe::dftClass']]], + ['savetriangulationssolutionvectors_4',['saveTriangulationsSolutionVectors',['../classdftfe_1_1triangulation_manager.html#a40210727e959e453c3f51950816a4a27',1,'dftfe::triangulationManager']]], + ['scalapack_2etemplates_2eh_5',['scalapack.templates.h',['../scalapack_8templates_8h.html',1,'']]], + ['scalapackblocksize_6',['scalapackBlockSize',['../classdftfe_1_1dft_parameters.html#a1d568905b0fb58c9d29b92a2ebb0d8e9',1,'dftfe::dftParameters']]], + ['scalapackmatrix_7',['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)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html',1,'dftfe::ScaLAPACKMatrix< NumberType >']]], + ['scalapackparalprocs_8',['scalapackParalProcs',['../classdftfe_1_1dft_parameters.html#a69e15d4de72201067bd32709068c1aba',1,'dftfe::dftParameters']]], + ['scalapackwrapper_2eh_9',['scalapackWrapper.h',['../scalapack_wrapper_8h.html',1,'']]], + ['scale_10',['scale',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a38f37020fabce832e4420917297a8c13',1,'dftfe::linearAlgebra::MultiVector']]], + ['scale_5fcolumns_11',['scale_columns',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aab1e407c313486935ec3721ab3a964f8',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5fcolumns_5frealfactors_12',['scale_columns_realfactors',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8bc3849a2ce63c21eff33ed6c31ce0b3',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5frows_13',['scale_rows',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#af2a0e3fdc8f1fd82872b936b8f411512',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5frows_5frealfactors_14',['scale_rows_realfactors',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a9281a7b0cfbe3a779e09aa5312229488',1,'dftfe::ScaLAPACKMatrix']]], + ['scaleandadd_15',['scaleAndAdd',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9ce3abbe60bf23a9fc6007bed302251b',1,'dftfe::linearAlgebra::MultiVector']]], + ['scaled_5ffock_16',['SCALED_FOCK',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800aa78ddbc9f811a897f116a3d8a324a3a1',1,'dftfe']]], + ['scalehessian_17',['scaleHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0ee49a85038fccb65c54130e438e41e9',1,'dftfe::BFGSNonLinearSolver']]], + ['scalepreconditioner_18',['scalePreconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#aa2573093fc0b5b767e2163821b9fa76f',1,'dftfe::LBFGSNonLinearSolver']]], + ['scalescalapackmat_19',['scaleScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a735a697df81b760e87196b3e137420e8',1,'dftfe::linearAlgebraOperations::internal']]], + ['scfconverged_20',['scfConverged',['../classdftfe_1_1dft_class.html#ad82749b1146b5bebb3f2d9f4d9f11fa4',1,'dftfe::dftClass']]], + ['scratchmultivectors_21',['scratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a4cdbd8e0a3f1d1b22df92044895ec869',1,'dftfe::basis::FEBasisOperationsBase']]], + ['seek_5fstr_22',['seek_str',['../namespacedftfe_1_1pseudo_utils.html#a9d5c06d77292285d412124923fdb3d2d',1,'dftfe::pseudoUtils']]], + ['selecteddofshanging_23',['selectedDofsHanging',['../classdftfe_1_1dft_class.html#a12e29e59e33c7f2ef6f85464adb1f3d2',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#a9d5f18fee9fe5c7e427092ef54e3c5d3',1,'dftfe::symmetryClass']]], + ['send_5fscatter_5fsize_26',['send_scatter_size',['../classdftfe_1_1symmetry_class.html#aeb812bd6e082cf411afcbaf161dcc098',1,'dftfe::symmetryClass']]], + ['send_5fscattergrad_5fsize_27',['send_scatterGrad_size',['../classdftfe_1_1symmetry_class.html#a5ee29df91c332ad98c50e6bbe6fc5c81',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#a4696f69c1ed2b0355fa9cc12c3e4587a',1,'dftfe::dftClass::set()'],['../classdftfe_1_1nudged_elastic_band_class.html#a62c297ceaf7e870e89559802abdd8580',1,'dftfe::nudgedElasticBandClass::set()'],['../classdftfe_1_1molecular_dynamics_class.html#a5d9444743904b5a324352e68de6c98b4',1,'dftfe::molecularDynamicsClass::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_1utils_1_1_memory_manager.html#ad5d17986a3964b33f5aa37d15e4ccce7',1,'dftfe::utils::MemoryManager::set()'],['../classdftfe_1_1dft_base.html#abc1f4594ddf0955da8e160b054e44a38',1,'dftfe::dftBase::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#aa0971677b6775af0eeed4fd3e340ba13',1,'dftfe::dftUtils::constraintMatrixInfo::set_zero(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) const']]], + ['setautoparameters_32',['setAutoParameters',['../classdftfe_1_1dft_parameters.html#a4eb986c625ed4f9d706634d028ae4812',1,'dftfe::dftParameters']]], + ['setinvsqrtmassvector_33',['setInvSqrtMassVector',['../classdftfe_1_1operator_d_f_t_class.html#a18171bb9bee297cbfaff8e8cf445e9d0',1,'dftfe::operatorDFTClass']]], + ['setupelpahandleparameters_34',['setupELPAHandleParameters',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#af89cc23ee6f73c883aa9118a960de7a3',1,'dftfe::linearAlgebraOperations::internal']]], + ['setvalue_35',['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_36',['shapefunctionbasisdata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a52a6c1f5eced2f4c1f5f3936ed869341',1,'dftfe::basis::FEBasisOperationsBase::shapeFunctionBasisData(bool transpose=false) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a52a6c1f5eced2f4c1f5f3936ed869341',1,'dftfe::basis::FEBasisOperationsBase::shapeFunctionBasisData(bool transpose=false) const']]], + ['shapefunctiondata_37',['shapeFunctionData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a35b2bf96e00189818d42aae8266be98e',1,'dftfe::basis::FEBasisOperationsBase']]], + ['shapefunctiongradientbasisdata_38',['shapefunctiongradientbasisdata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a2f36c9e1ffe9474ca02f4f67e736627d',1,'dftfe::basis::FEBasisOperationsBase::shapeFunctionGradientBasisData(bool transpose=false) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a2f36c9e1ffe9474ca02f4f67e736627d',1,'dftfe::basis::FEBasisOperationsBase::shapeFunctionGradientBasisData(bool transpose=false) const']]], + ['shapefunctiongradientdata_39',['shapeFunctionGradientData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a729dbfc7ab4fa7dd35db66bbb6f6368d',1,'dftfe::basis::FEBasisOperationsBase']]], + ['sigmagradvalue_40',['sigmaGradValue',['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7a3751137a69e981a5b124cc00959cb39d',1,'dftfe']]], + ['signallocalsendcompletion_41',['signalLocalSendCompletion',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#ae6eb820306e12ee181fed52c1436acf7',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['singlepreclrd_42',['singlePrecLRD',['../classdftfe_1_1dft_parameters.html#a3bbb1aa3d2d952a4ef0b04dcd010fbfd',1,'dftfe::dftParameters']]], + ['size_43',['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_44',['size_type',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a4caf4c02adc2c4ab39026a39be6b243a',1,'dftfe::ScaLAPACKMatrix::size_type'],['../namespacedftfe.html#ae8c604362e274d448116a29637b7bcbf',1,'dftfe::size_type'],['../classdftfe_1_1dealii_linear_solver_problem.html#a96907b7dde61d2be894abfe09d4c0a75',1,'dftfe::dealiiLinearSolverProblem::size_type']]], + ['sizetypevector_45',['sizetypevector',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a249679d90cda79b3c0512032704dfef0',1,'dftfe::utils::mpi::MPIPatternP2P::SizeTypeVector'],['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#a99e21c46f9ab35c86231b4ec5737fc65',1,'dftfe::utils::MPICommunicatorP2PKernels::SizeTypeVector']]], + ['smearedcharge_46',['smearedCharge',['../namespacedftfe_1_1dft_utils.html#ab40366b16eed96067c605074c9ed4f07',1,'dftfe::dftUtils']]], + ['smearedchargedr_47',['smearedChargeDr',['../namespacedftfe_1_1dft_utils.html#a46110cc38e1a2d4cccfa5fcad5969791',1,'dftfe::dftUtils']]], + ['smearednuclearcharges_48',['smearedNuclearCharges',['../classdftfe_1_1dft_parameters.html#a24a908b53cd2c5c793bafeafad111060',1,'dftfe::dftParameters']]], + ['smearedpot_49',['smearedPot',['../namespacedftfe_1_1dft_utils.html#a15c9bd0524aa6c965278c90c8ff0d18c',1,'dftfe::dftUtils']]], + ['smearedpotdr_50',['smearedPotDr',['../namespacedftfe_1_1dft_utils.html#a209b19b28e8259ac7e0cd5dcc99704ac',1,'dftfe::dftUtils']]], + ['solution_51',['solution',['../classdftfe_1_1geo_opt_cell.html#a0b63235c81c90ac29c3cf07ff5b496d7',1,'dftfe::geoOptCell::solution()'],['../classdftfe_1_1nudged_elastic_band_class.html#a0980b28edb852b0b34a31d55c060b896',1,'dftfe::nudgedElasticBandClass::solution()'],['../classdftfe_1_1nonlinear_solver_problem.html#a57432a0cd4697e3af47a04923c481ef9',1,'dftfe::nonlinearSolverProblem::solution()'],['../classdftfe_1_1geo_opt_ion.html#a513ee21951cdd9114752f43e6b045010',1,'dftfe::geoOptIon::solution()']]], + ['solve_52',['solve',['../classdftfe_1_1dft_class.html#a22a48975cf095457bfebb68e0802de17',1,'dftfe::dftClass::solve()'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#ae51b3f31b54141993f738e4d427b0d3c',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve(operatorDFTClass &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a66495fd526536301f5efef0418a60e16',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve(operatorDFTClass &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 bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a978ed675629e3570f2e6702a5d9bfcef',1,'dftfe::cgPRPNonLinearSolver::solve()'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a4834be342d730c5536c1c60c4b457bf4',1,'dftfe::BFGSNonLinearSolver::solve()'],['../classdftfe_1_1dealii_linear_solver.html#afeb3a3fd987a6c8dbfd070511edc11a5',1,'dftfe::dealiiLinearSolver::solve()'],['../classdftfe_1_1non_linear_solver.html#a2e2d921bc700a699ba30165cf78d212a',1,'dftfe::nonLinearSolver::solve()'],['../classdftfe_1_1linear_solver.html#a1408df7f509ce8bdd7dad94ff19b6050',1,'dftfe::linearSolver::solve()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afad3f1e3e7313d118fc1d2a124b2e10f',1,'dftfe::LBFGSNonLinearSolver::solve()'],['../classdftfe_1_1eigen_solver_class.html#a0b1820bab87e160405335a3095288cc2',1,'dftfe::eigenSolverClass::solve()'],['../classdftfe_1_1dft_base.html#abd320fa08778b4b1bc46e837b5f1ccbb',1,'dftfe::dftBase::solve()']]], + ['solvenoscf_53',['solveNoSCF',['../classdftfe_1_1dft_class.html#afa9668adcfe541996e53881d090a4e73',1,'dftfe::dftClass']]], + ['solvermode_54',['solvermode',['../classdftfe_1_1run_parameters.html#a26aaba1ee86e0b57a17822d21183f2b0',1,'dftfe::runParameters::solvermode'],['../classdftfe_1_1dft_parameters.html#a91f881759a11ff4b08d2c9bc4ef41102',1,'dftfe::dftParameters::solverMode']]], + ['solvertype_55',['solverType',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2',1,'dftfe::dealiiLinearSolver']]], + ['solvevselfinbins_56',['solveVselfInBins',['../classdftfe_1_1vself_bins_manager.html#a47c9182d6d236c160bbe21533b2e3c74',1,'dftfe::vselfBinsManager']]], + ['solvevselfinbinsdevice_2eh_57',['solveVselfInBinsDevice.h',['../solve_vself_in_bins_device_8h.html',1,'']]], + ['solvevselfinbinsperturbeddomain_58',['solveVselfInBinsPerturbedDomain',['../classdftfe_1_1vself_bins_manager.html#a17a036f51e64def2ec6d77514aef433b',1,'dftfe::vselfBinsManager']]], + ['spectrumsplitstartingscfiter_59',['spectrumSplitStartingScfIter',['../classdftfe_1_1dft_parameters.html#aa590e5f13af6576a1dd8324bf12233f5',1,'dftfe::dftParameters']]], + ['spinpolarized_60',['spinPolarized',['../classdftfe_1_1dft_parameters.html#a6cb31b5acd2a52f5445850d0bfb4fa7f',1,'dftfe::dftParameters']]], + ['start_5fmagnetization_61',['start_magnetization',['../classdftfe_1_1dft_parameters.html#a50bdd409e495e8e88d03eea25a24f1ca',1,'dftfe::dftParameters']]], + ['startingnormlrdlargedamping_62',['startingNormLRDLargeDamping',['../classdftfe_1_1dft_parameters.html#afa14d903aa8597cc3c37682db1d2703b',1,'dftfe::dftParameters']]], + ['startingtempbomd_63',['startingTempBOMD',['../classdftfe_1_1dft_parameters.html#a0efb0fc7288c93d2ec21257eedaebe09',1,'dftfe::dftParameters']]], + ['startingwfctype_64',['startingWFCType',['../classdftfe_1_1dft_parameters.html#a7f3eb4176f12016b5b03f9e10da961ac',1,'dftfe::dftParameters']]], + ['startlocalsend_65',['startLocalSend',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#aaa5098493d6e441db02af3e9c3e58315',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['state_66',['state',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a92f0c297eb4bf18aabc413b2b698c5af',1,'dftfe::ScaLAPACKMatrix::state'],['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06',1,'dftfe::LAPACKSupport::State']]], + ['state_5fname_67',['state_name',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a1ad6cab489e9639b5217b1d344e4ca7a',1,'dftfe::LAPACKSupport']]], + ['storage_68',['Storage',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ae010c684c6667ef6ffa3db74b6413fef',1,'dftfe::linearAlgebra::MultiVector']]], + ['stressenlelementalcontribution_69',['stressEnlElementalContribution',['../classdftfe_1_1force_class.html#a15a0f8fb1dd270a7c03ec6efca5c7227',1,'dftfe::forceClass']]], + ['stressrelaxtol_70',['stressRelaxTol',['../classdftfe_1_1dft_parameters.html#a21f6d95865a474ee1877d0ffe6bb5607',1,'dftfe::dftParameters']]], + ['sub_71',['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#a56029a4638d183d7e4ed7738dd0ddf44',1,'dftfe::utils::sub(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a139302928ca4fa468b8ddbf545ff385b',1,'dftfe::utils::sub(hipFloatComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#ad93526c8e042450872672c296ba335ec',1,'dftfe::utils::sub(cuFloatComplex a, cuFloatComplex b)']]], + ['submatrix_5fcolumn_72',['submatrix_column',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aac8bdfe5c541d0464e16ed95c56b00e0',1,'dftfe::ScaLAPACKMatrix']]], + ['submatrix_5frow_73',['submatrix_row',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8d0ce8a69e77fa11614929042bd3e276',1,'dftfe::ScaLAPACKMatrix']]], + ['subscribe_74',['subscribe',['../classdftfe_1_1poisson_solver_problem.html#a0a57b1ab7a21ed34cd62c73ce3cc2404',1,'dftfe::poissonSolverProblem::subscribe()'],['../classdftfe_1_1kerker_solver_problem.html#a6a60087b1bb2c42fe475276086bd92ab',1,'dftfe::kerkerSolverProblem::subscribe()'],['../classdftfe_1_1dealii_linear_solver_problem.html#abe9cc5ee76771f260dc527db4b4dc159',1,'dftfe::dealiiLinearSolverProblem::subscribe()']]], + ['subspacerotation_75',['subspaceRotation',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a68bad9fd7afb389abf78b37629efd9e5',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationcgsmixedprec_76',['subspaceRotationCGSMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a23ba10da48e0fb28d232bee3c9df411f',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationmixedprec_77',['subspaceRotationMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a6d03dd66f5aaf2768bc1af6f8362cf3d',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationspectrumsplit_78',['subspaceRotationSpectrumSplit',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a0905baf1d7c457180580c64f1a57d2ed',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationspectrumsplitmixedprec_79',['subspaceRotationSpectrumSplitMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#afbf8d821857e0f111897ecdb8ce4db5a',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotdofsblocksize_80',['subspaceRotDofsBlockSize',['../classdftfe_1_1dft_parameters.html#a5e290b67a03d5243ba31d215be254e4c',1,'dftfe::dftParameters']]], + ['subtractatomicrhoquadvaluesgradients_81',['subtractAtomicRhoQuadValuesGradients',['../classdftfe_1_1dft_class.html#ad5c37e9f1f997897eccba6f7ee0e5936',1,'dftfe::dftClass']]], + ['success_82',['success',['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700ad0749aaba8b833466dfcbb0428e4f89c',1,'dftfe::eigenSolverClass::SUCCESS'],['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7ac3eb2ff0ea3ba5a2fd29f81d5dd21e3a',1,'dftfe::nonLinearSolver::SUCCESS']]], + ['sumacrossintercommscalapackmat_83',['sumAcrossInterCommScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#abbb04264506d10f84faf370ff41e9622',1,'dftfe::linearAlgebraOperations::internal']]], + ['svd_84',['svd',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a497aadc9a46708ab7fb255c9e44800e1',1,'dftfe::LAPACKSupport']]], + ['svr_85',['svr',['../classdftfe_1_1molecular_dynamics_class.html#a252129e528db8582e34c17d0213bde86',1,'dftfe::molecularDynamicsClass']]], + ['swap_86',['swap',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ac32ddffd17246347c688558d7cd48800',1,'dftfe::linearAlgebra::MultiVector::swap()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a673649b25448f73587021f756761aea0',1,'dftfe::utils::MemoryStorage::swap()']]], + ['symbol_87',['symbol',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a56c0dd3d4fba24fc42ec38e9311b2b4e',1,'dftfe::pseudoUtils::PeriodicTable::symbol()'],['../structdftfe_1_1pseudo_utils_1_1_element.html#ad68eca304b2068af76052ea80b7e19cc',1,'dftfe::pseudoUtils::Element::symbol']]], + ['symmetry_2eh_88',['symmetry.h',['../symmetry_8h.html',1,'']]], + ['symmetryclass_89',['symmetryclass',['../classdftfe_1_1symmetry_class.html#aa73185c3c57d368215fc158409c269f3',1,'dftfe::symmetryClass::symmetryClass()'],['../classdftfe_1_1symmetry_class.html',1,'dftfe::symmetryClass< FEOrder, FEOrderElectro >']]], + ['symmetryclass_3c_20feorder_2c_20feorderelectro_20_3e_90',['symmetryClass< FEOrder, FEOrderElectro >',['../classdftfe_1_1dft_class.html#ac29bbcd37405741a435b8ae786eeaa88',1,'dftfe::dftClass']]], + ['symmetryptr_91',['symmetryPtr',['../classdftfe_1_1dft_class.html#ac4c9c303c9c768a43c1a92a9f700b3b7',1,'dftfe::dftClass']]], + ['symmmat_92',['symmMat',['../classdftfe_1_1symmetry_class.html#acabe332fb9896d11cd52f2f79cb1e924',1,'dftfe::symmetryClass']]], + ['symmundergroup_93',['symmUnderGroup',['../classdftfe_1_1symmetry_class.html#a61701bfc4d02257485fae9cfdff59bbf',1,'dftfe::symmetryClass']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 000000000..42a177839 --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['t_0',['T',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a23abbc89484eac7485f14aa3428577ed',1,'dftfe::LAPACKSupport']]], + ['tempcellnodaldata_1',['tempCellNodalData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a1211c31ea978f2767e6d4a270c812ee9',1,'dftfe::basis::FEBasisOperationsBase']]], + ['tempcontrollertypebomd_2',['tempControllerTypeBOMD',['../classdftfe_1_1dft_parameters.html#ae22f7484bbfe9eff7d43ffe7958606cb',1,'dftfe::dftParameters']]], + ['tempquadraturegradientsdata_3',['tempQuadratureGradientsData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a643e5b97b23ba7a1a9be8c07849bf463',1,'dftfe::basis::FEBasisOperationsBase']]], + ['tempquadraturegradientsdatanonaffine_4',['tempQuadratureGradientsDataNonAffine',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a77619911208b9bc0cf505ff6d67cdcba',1,'dftfe::basis::FEBasisOperationsBase']]], + ['theory_20with_20finite_20elements_5',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['thermostattimeconstantbomd_6',['thermostatTimeConstantBOMD',['../classdftfe_1_1dft_parameters.html#a5a023d54f4b97002a7c777509cc460c1',1,'dftfe::dftParameters']]], + ['this_5fmpi_5fprocess_7',['this_mpi_process',['../classdftfe_1_1_process_grid.html#af9a5841fc68f1977ce209095726d5e06',1,'dftfe::ProcessGrid::this_mpi_process'],['../classdftfe_1_1vself_bins_manager.html#af41dd68b7d4bda12037b4bd652e4af19',1,'dftfe::vselfBinsManager::this_mpi_process'],['../classdftfe_1_1triangulation_manager.html#a58a4dc9645a643fc91f99882e12e9692',1,'dftfe::triangulationManager::this_mpi_process'],['../classdftfe_1_1symmetry_class.html#a8c90aade24a99618c0d0e162ac39b59b',1,'dftfe::symmetryClass::this_mpi_process'],['../classdftfe_1_1poisson_solver_problem.html#af3b44da31ac6d0225db855250722c92a',1,'dftfe::poissonSolverProblem::this_mpi_process'],['../classdftfe_1_1mesh_movement_class.html#a3656cf4f689d2025fd4c5dbc8da87a7e',1,'dftfe::meshMovementClass::this_mpi_process'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a731110abc0a3a25970c813c7e34e07ed',1,'dftfe::kohnShamDFTOperatorDeviceClass::this_mpi_process'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a227f02799793f926a4ab70fd59c9fd58',1,'dftfe::kohnShamDFTOperatorClass::this_mpi_process'],['../classdftfe_1_1geo_opt_ion.html#a682487493133d34d190405fd6fc7630c',1,'dftfe::geoOptIon::this_mpi_process'],['../classdftfe_1_1geo_opt_cell.html#af6650f4b024049748d224b01f68e0166',1,'dftfe::geoOptCell::this_mpi_process'],['../classdftfe_1_1force_class.html#aca4f47e98bf7e6c01a065c86a096275a',1,'dftfe::forceClass::this_mpi_process'],['../classdftfe_1_1kerker_solver_problem.html#abe4425e156034c37dfa830d692840265',1,'dftfe::kerkerSolverProblem::this_mpi_process'],['../classdftfe_1_1dft_class.html#af68ebcf77146a603ed1d533011067def',1,'dftfe::dftClass::this_mpi_process'],['../classdftfe_1_1dealii_linear_solver.html#aa74cf02cb97cbd6e16b30f614570c594',1,'dftfe::dealiiLinearSolver::this_mpi_process'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a6795bd86340932e093734407d7fbb380',1,'dftfe::cgPRPNonLinearSolver::this_mpi_process']]], + ['this_5fprocess_5fcolumn_8',['this_process_column',['../classdftfe_1_1_process_grid.html#a332830e158b698289d1ced6f97cb212f',1,'dftfe::ProcessGrid']]], + ['this_5fprocess_5frow_9',['this_process_row',['../classdftfe_1_1_process_grid.html#a3e1a43e08f7254b408e008fb39e0a352',1,'dftfe::ProcessGrid']]], + ['thisprocessid_10',['thisProcessId',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a2c31fb840cc600d3bceeacb368869b5c',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['throwexception_11',['throwexception',['../namespacedftfe_1_1utils.html#ac54eca2707f27846f6964e10d603688e',1,'dftfe::utils::throwException(bool condition, std::string msg="")'],['../namespacedftfe_1_1utils.html#a1e850c2ac1993e0c5b5677ecb4a49cd2',1,'dftfe::utils::throwException(bool condition, std::string msg="")']]], + ['timereversal_12',['timeReversal',['../classdftfe_1_1dft_parameters.html#ad892483cedcc119fae135e785869beb0',1,'dftfe::dftParameters']]], + ['timestepbomd_13',['timeStepBOMD',['../classdftfe_1_1dft_parameters.html#a606916170785aa3470a84322100be401',1,'dftfe::dftParameters']]], + ['tmmult_14',['Tmmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6f9a582f73de96239b2ffa4ead2934cd',1,'dftfe::ScaLAPACKMatrix']]], + ['tmtmult_15',['TmTmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aac663b0fe6a673b3fef08226fdd24d9b',1,'dftfe::ScaLAPACKMatrix']]], + ['to_20dft_20fe_16',['Contributing to DFT-FE',['../index.html#autotoc_md3',1,'']]], + ['tolerancekinetic_17',['toleranceKinetic',['../classdftfe_1_1dft_parameters.html#ad848edfd3de5ed1e1890565fd2d79663',1,'dftfe::dftParameters']]], + ['topfrac_18',['topfrac',['../classdftfe_1_1dft_parameters.html#a6bf721c3fe4e6bcfad460e6eabd99cfe',1,'dftfe::dftParameters']]], + ['totalcharge_19',['totalcharge',['../classdftfe_1_1dft_class.html#a6526ff0dc26022b4be5c0a77a70485b8',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)'],['../classdftfe_1_1dft_class.html#a38b0460996f081071f8c32ed103c5a1f',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)'],['../classdftfe_1_1dft_class.html#ad4a2a7fa78e6fe75f4278ff7bff4f545',1,'dftfe::dftClass::totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)'],['../classdftfe_1_1dft_class.html#a620d35087439a6b1385e153c8b366da6',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField, std::map< dealii::CellId, std::vector< double > > &rhoQuadValues)']]], + ['totalimages_20',['TotalImages',['../classdftfe_1_1dft_parameters.html#af0da06ffc63762055c41b44342424622',1,'dftfe::dftParameters']]], + ['totalmagnetization_21',['totalMagnetization',['../classdftfe_1_1dft_class.html#a06dd19a99bd5e9f67100023badf20c41',1,'dftfe::dftClass']]], + ['totpoints_22',['totPoints',['../classdftfe_1_1symmetry_class.html#a07eeac43665b1df8ac5c9a6df98f37ec',1,'dftfe::symmetryClass']]], + ['transform_23',['transform',['../classdftfe_1_1mesh_movement_affine_transform.html#a6385bbaa67561110576ecf617d59a05d',1,'dftfe::meshMovementAffineTransform']]], + ['transformdomainboundingvectors_24',['transformDomainBoundingVectors',['../namespacedftfe_1_1dft_utils.html#a1f7afbc91240286b736b7d5b8b44114c',1,'dftfe::dftUtils']]], + ['translation_25',['translation',['../classdftfe_1_1symmetry_class.html#a319089adf77c39466a4271ae33921c77',1,'dftfe::symmetryClass']]], + ['triangulationmanager_26',['triangulationmanager',['../classdftfe_1_1triangulation_manager.html',1,'dftfe::triangulationManager'],['../classdftfe_1_1triangulation_manager.html#a17674b06487db0d720498947732c0f18',1,'dftfe::triangulationManager::triangulationManager()']]], + ['triangulationmanager_2eh_27',['triangulationManager.h',['../triangulation_manager_8h.html',1,'']]], + ['trivialsolveforstress_28',['trivialsolveforstress',['../classdftfe_1_1dft_base.html#ab876a152d60a2dcd491f5f308226d947',1,'dftfe::dftBase::trivialSolveForStress()'],['../classdftfe_1_1dft_class.html#a6e0f1ba395a49e457f47429b0a8719d4',1,'dftfe::dftClass::trivialSolveForStress()']]], + ['tval_29',['TVal',['../classdftfe_1_1dft_parameters.html#a7cc2b83e99ac1faecfa02ce8bea846ff',1,'dftfe::dftParameters']]], + ['typeconfig_2eh_30',['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..1b249b3ac --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,47 @@ +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_5ftranspose_7',['update_transpose',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898aa5dfe1fc7ae4c74d7cf29a46cf9dd752',1,'dftfe::basis']]], + ['update_5fvalues_8',['update_values',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898a095fedfd2ca7d7f5e9a7763b85034463',1,'dftfe::basis']]], + ['updateatompositions_9',['updateAtomPositions',['../classdftfe_1_1dftfe_wrapper.html#a26c0c96d12c27974a83df8ef07f79c57',1,'dftfe::dftfeWrapper']]], + ['updateatompositionsandmovemesh_10',['updateatompositionsandmovemesh',['../classdftfe_1_1dft_class.html#aa38b1d0d1815e1fa1294ec95986476c2',1,'dftfe::dftClass::updateAtomPositionsAndMoveMesh()'],['../classdftfe_1_1dft_base.html#a141f823163a2e85369902c4b9dd67b1a',1,'dftfe::dftBase::updateAtomPositionsAndMoveMesh()']]], + ['updatebinsbc_11',['updateBinsBc',['../classdftfe_1_1vself_bins_manager.html#ae1227aa5898f520d3551197a986830ec',1,'dftfe::vselfBinsManager']]], + ['updatedirection_12',['updateDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ab7a2a4652b7421c2e990c6949de40ba5',1,'dftfe::cgPRPNonLinearSolver']]], + ['updateflags_13',['UpdateFlags',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898',1,'dftfe::basis']]], + ['updateghostvalues_14',['updateghostvalues',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ab399344072370e4a44f9f10d3ad86078',1,'dftfe::linearAlgebra::MultiVector::updateGhostValues()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#af58c204da503454f522e84a50cb36298',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValues()']]], + ['updateghostvaluesbegin_15',['updateghostvaluesbegin',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a15b81174350826d4fb17daa2d647b283',1,'dftfe::linearAlgebra::MultiVector::updateGhostValuesBegin()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a7b196d90bc4055d62ea776ca92405d61',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValuesBegin()']]], + ['updateghostvaluesend_16',['updateghostvaluesend',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ab4f724ffa1de3a529952337d29b52a4c',1,'dftfe::linearAlgebra::MultiVector::updateGhostValuesEnd()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ad94b8d8494b97a202315dfb6cb5cf2da',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValuesEnd()']]], + ['updatehessian_17',['updateHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ab93ec934e140490c13187f971e9ccab6',1,'dftfe::BFGSNonLinearSolver']]], + ['updatehistory_18',['updateHistory',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a2c934cdf608b9ddb6be3a6cacc9c61bf',1,'dftfe::LBFGSNonLinearSolver']]], + ['updatesolution_19',['updatesolution',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#add50753c3cdc48bd5142d2130d1e109c',1,'dftfe::LBFGSNonLinearSolver::updateSolution()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad10d1d9390073a7ad836f7a3dc9b24dc',1,'dftfe::cgPRPNonLinearSolver::updateSolution()'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a315d10d82309b48b1ad0ac3511bb42c7',1,'dftfe::BFGSNonLinearSolver::updateSolution()']]], + ['updatetriangulationvertices_20',['updateTriangulationVertices',['../classdftfe_1_1mesh_movement_class.html#a392861a690db2ee6bf4e35163f8a9593',1,'dftfe::meshMovementClass']]], + ['updatewavefunctiondependentvxc_21',['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()']]], + ['upftoxml_22',['upfToxml',['../namespacedftfe_1_1pseudo_utils.html#a412b1b4b0fd7aed5722d966633ddbd7b',1,'dftfe::pseudoUtils']]], + ['upftoxml_2ecc_23',['upfToxml.cc',['../upf_toxml_8cc.html',1,'']]], + ['upftoxml_2eh_24',['upfToxml.h',['../upf_toxml_8h.html',1,'']]], + ['uplo_25',['uplo',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ad47f6241046a290b56afe3015f68d562',1,'dftfe::ScaLAPACKMatrix']]], + ['upper_5ftriangular_26',['upper_triangular',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9acab99738c18bb979ff47b22d1cac0d0727',1,'dftfe::LAPACKSupport']]], + ['usedensitymatrixperturbationrankupdates_27',['useDensityMatrixPerturbationRankUpdates',['../classdftfe_1_1dft_parameters.html#abafa118ebce2caee310f26902b548a83',1,'dftfe::dftParameters']]], + ['usedevice_28',['useDevice',['../classdftfe_1_1dft_parameters.html#abedadd43c574cee4d2a731659ecd1b8d',1,'dftfe::dftParameters']]], + ['usedevicedirectallreduce_29',['useDeviceDirectAllReduce',['../classdftfe_1_1dft_parameters.html#a0a584f99f20df9cd76aeb2b718652bcd',1,'dftfe::dftParameters']]], + ['useelpa_30',['useELPA',['../classdftfe_1_1dft_parameters.html#a7f58747474f485c64f6793550b0ddcb3',1,'dftfe::dftParameters']]], + ['useelpadevicekernel_31',['useELPADeviceKernel',['../classdftfe_1_1dft_parameters.html#ad91b4178dfc161875564aff8d47a2b9b',1,'dftfe::dftParameters']]], + ['useflattopgenerator_32',['useFlatTopGenerator',['../classdftfe_1_1dft_parameters.html#adb98f25931bbaf8de75083dc2e6f7b33',1,'dftfe::dftParameters']]], + ['usemeshsizesfromatomsfile_33',['useMeshSizesFromAtomsFile',['../classdftfe_1_1dft_parameters.html#aa36dcdd671fb3cf8b09c088cc74fa65c',1,'dftfe::dftParameters']]], + ['usemixedpreccgs_5fo_34',['useMixedPrecCGS_O',['../classdftfe_1_1dft_parameters.html#aaf58230e59c5d155c0a4d841e768f44c',1,'dftfe::dftParameters']]], + ['usemixedpreccgs_5fsr_35',['useMixedPrecCGS_SR',['../classdftfe_1_1dft_parameters.html#aea8caf1c9c7ede3402edd1ee12ad1436',1,'dftfe::dftParameters']]], + ['usemixedpreccheby_36',['useMixedPrecCheby',['../classdftfe_1_1dft_parameters.html#a4709454ee314715801c9abe2def8a908',1,'dftfe::dftParameters']]], + ['usemixedpreccommunonlyxthxcgso_37',['useMixedPrecCommunOnlyXTHXCGSO',['../classdftfe_1_1dft_parameters.html#ac12986180a7830b5cc1d21644c0cd571',1,'dftfe::dftParameters']]], + ['usemixedprecsubspacerotrr_38',['useMixedPrecSubspaceRotRR',['../classdftfe_1_1dft_parameters.html#adaa5ba04d6ae96ab175927b1eb46c60f',1,'dftfe::dftParameters']]], + ['usemixedprecxthxspectrumsplit_39',['useMixedPrecXTHXSpectrumSplit',['../classdftfe_1_1dft_parameters.html#a87b8f0d35e69e5bb6d332015b2b2957f',1,'dftfe::dftParameters']]], + ['usepreconditioner_40',['usePreconditioner',['../classdftfe_1_1dft_parameters.html#a16e64002ad1c6a69535013f37d5a0a15',1,'dftfe::dftParameters']]], + ['usesubspaceprojectedshepgpu_41',['useSubspaceProjectedSHEPGPU',['../classdftfe_1_1dft_parameters.html#a48ba12508568fe9092b7f7d00951e909',1,'dftfe::dftParameters']]], + ['usesymm_42',['useSymm',['../classdftfe_1_1dft_parameters.html#a87d3c90c6a7deaec4e6a21e2bcfb2d03',1,'dftfe::dftParameters']]], + ['usetf32device_43',['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..ac8c1e01b --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,17 @@ +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,'']]], + ['veff_5',['vEff',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a14b63c53339b4208819ce26ed342be78',1,'dftfe::kohnShamDFTOperatorClass']]], + ['veffoutputdataattributes_6',['VeffOutputDataAttributes',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238e',1,'dftfe']]], + ['velocityverlet_7',['velocityVerlet',['../classdftfe_1_1molecular_dynamics_class.html#a055c38d818be180209967c1f3ac74050',1,'dftfe::molecularDynamicsClass']]], + ['verbosity_8',['verbosity',['../classdftfe_1_1run_parameters.html#ab314512c525e384fc68e75d9346faaa4',1,'dftfe::runParameters::verbosity'],['../classdftfe_1_1dft_parameters.html#ac51c7e1ce7b785fcf261f89928c03162',1,'dftfe::dftParameters::verbosity']]], + ['verifycheckpointfileexists_9',['verifyCheckpointFileExists',['../namespacedftfe_1_1dft_utils.html#afbe78d7b628af457584ee707df366389',1,'dftfe::dftUtils']]], + ['vmult_10',['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_11',['vselfbinsmanager',['../classdftfe_1_1vself_bins_manager.html#ac1d6f042d3dc7994a99ee3ef3bdfb7b9',1,'dftfe::vselfBinsManager::vselfBinsManager()'],['../classdftfe_1_1vself_bins_manager.html',1,'dftfe::vselfBinsManager< FEOrder, FEOrderElectro >']]], + ['vselfbinsmanager_2eh_12',['vselfBinsManager.h',['../vself_bins_manager_8h.html',1,'']]], + ['vselfbinsmanager_5fh_5f_13',['vselfBinsManager_H_',['../vself_bins_manager_8h.html#ae5a2a83ea50f3c88047ddeba02f3ec95',1,'vselfBinsManager.h']]] +]; diff --git a/search/all_17.js b/search/all_17.js new file mode 100644 index 000000000..fc0c9f345 --- /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#a3c25ffa14ede6c1ab26234334529b40a',1,'dftfe::dftClass']]], + ['wfcblocksize_2',['wfcBlockSize',['../classdftfe_1_1dft_parameters.html#a5a10ed5eb0e0459582765f71b60a8754',1,'dftfe::dftParameters']]], + ['wfccontractionsforcekernelsallh_3',['wfcContractionsForceKernelsAllH',['../namespacedftfe_1_1force.html#a969d90c4a97c62e6cfe13cc6b4cbfafc',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#a1c3fa8435adce12998ff97948831fc25',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#a9ba81968d244114bab6bbaccbe64bdfd',1,'dftfe::dftUtils::writeDataIntoFile(const std::vector< std::vector< double > > &data, const std::string &fileName)'],['../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)']]], + ['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#a8915dd518691f20cc755d9651b2dc1e4',1,'dftfe::dftClass::writeDomainAndAtomCoordinates()'],['../classdftfe_1_1dft_class.html#a1b984756d1a646dca728f9f862c92840',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#ab43cba0b4608275a4be01983085899f9',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_1geo_opt_cell.html#ae033e40f4a9baf62f194329e87b43e21',1,'dftfe::geoOptCell::writeMesh()'],['../classdftfe_1_1dft_class.html#abdd4879518e59e22c0c55ec30af96f46',1,'dftfe::dftClass::writeMesh()'],['../classdftfe_1_1dft_class.html#a64f0f24d5c868b1efac382752e8c9143',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()']]], + ['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#a375bf99679efc7b5bbfd8fc23030acd1',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..7a0e9d4a0 --- /dev/null +++ b/search/all_18.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['xc_5fid_0',['xc_id',['../classdftfe_1_1dft_parameters.html#ae31688817ffb5b5dfb9ff5baa6587af7',1,'dftfe::dftParameters']]], + ['xcopy_1',['xcopy',['../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)']]], + ['xgemm_2',['xgemm',['../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)'],['../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#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#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)']]], + ['xlbomdkernelrankupdatefdparameter_3',['xlbomdKernelRankUpdateFDParameter',['../classdftfe_1_1dft_parameters.html#a7ffcfa3038392ef5168156e6dfa6fdde',1,'dftfe::dftParameters']]], + ['xlbomdrestartchebytol_4',['xlbomdRestartChebyTol',['../classdftfe_1_1dft_parameters.html#a30514c087d6cdbaf769caeb4021d5e58',1,'dftfe::dftParameters']]], + ['xmltodftfeparser_5',['xmltodftfeparser',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a289dbe12684054f78dcaf0a5cad4f02a',1,'dftfe::pseudoUtils::xmlTodftfeParser::xmlTodftfeParser()'],['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['xmltodftfeparser_2eh_6',['xmlTodftfeParser.h',['../xml_todftfe_parser_8h.html',1,'']]], + ['xscal_7',['xscal',['../namespacedftfe.html#ad580fa3f6ab6426c92d6818b2326803d',1,'dftfe::xscal(const unsigned int *n, const std::complex< double > *alpha, std::complex< double > *x, const unsigned int *inc)'],['../namespacedftfe.html#a28ef5d3da7aac5f881ec00d1a40d5614',1,'dftfe::xscal(const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)']]], + ['xthx_8',['xthx',['../classdftfe_1_1operator_d_f_t_class.html#abeb23ca5dd4695eda12d125c9818aea1',1,'dftfe::operatorDFTClass::XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0'],['../classdftfe_1_1operator_d_f_t_class.html#a024250c70345ba2df79da55df501930e',1,'dftfe::operatorDFTClass::XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)=0'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aebc94776baedf1689a204e5ae5da39fe',1,'dftfe::kohnShamDFTOperatorClass::XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a1b108d799790a92e0306dc8642ae59b7',1,'dftfe::kohnShamDFTOperatorClass::XtHX(const dataTypes::number *src, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)']]], + ['xthxmixedprec_9',['xthxmixedprec',['../classdftfe_1_1operator_d_f_t_class.html#aa68de041a196f6c055965363fb43d408',1,'dftfe::operatorDFTClass::XtHXMixedPrec()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aa0ad9610abe9e4814c8f22f28b86d7b8',1,'dftfe::kohnShamDFTOperatorClass::XtHXMixedPrec()']]] +]; diff --git a/search/all_19.js b/search/all_19.js new file mode 100644 index 000000000..2a789af54 --- /dev/null +++ b/search/all_19.js @@ -0,0 +1,13 @@ +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']]], + ['zerooutghosts_5',['zeroOutGhosts',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aa3f9c23298e7d13556da4a32de9c0def',1,'dftfe::linearAlgebra::MultiVector']]], + ['zmap_6',['zmap',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a6e916b4910e1efc6c8434a701b3b7865',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['zmcmult_7',['zmCmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a86f3f5e5913f82d3e303e55728179b90',1,'dftfe::ScaLAPACKMatrix']]], + ['zmmult_8',['zmmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2dce63d8bd4dccf4624d41350398107e',1,'dftfe::ScaLAPACKMatrix']]], + ['zmult_9',['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..83995f828 --- /dev/null +++ b/search/all_1a.js @@ -0,0 +1,31 @@ +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#a6874f5287ab5c06e573752fdc4df6d04',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']]], + ['_7efebasisoperationsbase_13',['~FEBasisOperationsBase',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#af6bb9fe2a557d4f976736b4c1a369fec',1,'dftfe::basis::FEBasisOperationsBase']]], + ['_7ekohnshamdftoperatordeviceclass_14',['~kohnShamDFTOperatorDeviceClass',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6b2894d134ae37256e24f3111ee3b99a',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['_7elbfgsnonlinearsolver_15',['~LBFGSNonLinearSolver',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#adbf97527c3394b91e07ad0012376f4ab',1,'dftfe::LBFGSNonLinearSolver']]], + ['_7ememorystorage_16',['~MemoryStorage',['../classdftfe_1_1utils_1_1_memory_storage.html#a5a81d138956b331642b19958251138e2',1,'dftfe::utils::MemoryStorage']]], + ['_7emeshmovementclass_17',['~meshMovementClass',['../classdftfe_1_1mesh_movement_class.html#a7b3820b3fbf12ddc1a497557c9a2a789',1,'dftfe::meshMovementClass']]], + ['_7empipatternp2p_18',['~MPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0cf00e673b5fa956e42fdcb52165404b',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['_7empirequestersbase_19',['~MPIRequestersBase',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html#a181c8cb807d38305dafb0eeb3ef92308',1,'dftfe::utils::mpi::MPIRequestersBase']]], + ['_7emultivector_20',['~MultiVector',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a87a40ed298ce1f602e794a4e64b20981',1,'dftfe::linearAlgebra::MultiVector']]], + ['_7enonlinearsolver_21',['~nonLinearSolver',['../classdftfe_1_1non_linear_solver.html#aa2245adca4f04b972cdb9715769b405f',1,'dftfe::nonLinearSolver']]], + ['_7enonlinearsolverproblem_22',['~nonlinearSolverProblem',['../classdftfe_1_1nonlinear_solver_problem.html#a859578af1f37f26d4a5e2d5481c4ceab',1,'dftfe::nonlinearSolverProblem']]], + ['_7eoperatordftclass_23',['~operatorDFTClass',['../classdftfe_1_1operator_d_f_t_class.html#a2ddba1b3b2b3b3a50b73c2b8e750f5e9',1,'dftfe::operatorDFTClass']]], + ['_7eoptimizedindexset_24',['~OptimizedIndexSet',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a7131d9ad589b09d6429b530d8f037c35',1,'dftfe::utils::OptimizedIndexSet']]], + ['_7eprocessgrid_25',['~ProcessGrid',['../classdftfe_1_1_process_grid.html#a89ae9102265a4950855f93db673fef17',1,'dftfe::ProcessGrid']]], + ['_7etriangulationmanager_26',['~triangulationManager',['../classdftfe_1_1triangulation_manager.html#aeeeb378e19dc801a35671951bbfb9a66',1,'dftfe::triangulationManager']]], + ['_7exmltodftfeparser_27',['~xmlTodftfeParser',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#ae07c312bb6d50bba62acd74c142a3633',1,'dftfe::pseudoUtils::xmlTodftfeParser']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 000000000..31e77a242 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['bandparalopt_0',['bandParalOpt',['../classdftfe_1_1dft_parameters.html#aa4fe36d23263644ac872258927d03e92',1,'dftfe::dftParameters']]], + ['basisoperationsptrdevice_1',['basisOperationsPtrDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad48182dce69bee3daffb464a14a915a6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['basisoperationsptrhost_2',['basisoperationsptrhost',['../classdftfe_1_1dft_class.html#aca5470bc2a44de9359a1c6e8a86df7e5',1,'dftfe::dftClass::basisOperationsPtrHost'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aaa53b7a36fb0b4b2b0f0a62556a43eea',1,'dftfe::kohnShamDFTOperatorDeviceClass::basisOperationsPtrHost']]], + ['begin_3',['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_4',['betaTol',['../classdftfe_1_1dft_parameters.html#ac6e1f8444a5ea78a20a6c517263c502e',1,'dftfe::dftParameters']]], + ['bfgsnonlinearsolver_5',['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_6',['BFGSNonLinearSolver.h',['../_b_f_g_s_non_linear_solver_8h.html',1,'']]], + ['bfgsstepmethod_7',['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_8',['blacs_context',['../classdftfe_1_1_process_grid.html#a36e29408bd08e1957900970d51306fe2',1,'dftfe::ProcessGrid']]], + ['blas_5fint_9',['blas_int',['../namespacedftfe_1_1types.html#aa6f11e3d83d33fc4389010477050f4d4',1,'dftfe::types']]], + ['blow_10',['bLow',['../classdftfe_1_1dft_class.html#aef17716f9e6a96112b83bdbc00464828',1,'dftfe::dftClass']]], + ['bohrtoang_11',['bohrToAng',['../classdftfe_1_1molecular_dynamics_class.html#abc558788de8d87fb53ce7f0912e7ad35',1,'dftfe::molecularDynamicsClass']]], + ['broadcastacrossintercommscalapackmat_12',['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..0bf161910 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,240 @@ +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#a80ddbec9a6c7563869a88c76631a2ea3',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#a6168c65b3507b95094116d0292aac6b2',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_base.html#a018fd956b5fdeba3db102a839c41851b',1,'dftfe::basis::FEBasisOperationsBase']]], + ['cellmaptable_40',['cellMapTable',['../classdftfe_1_1symmetry_class.html#a96e04911955271a27058a95823f5b663',1,'dftfe::symmetryClass']]], + ['celloptsolver_41',['cellOptSolver',['../classdftfe_1_1dft_parameters.html#a205d2f2fe0f21a6f555c986160888f92',1,'dftfe::dftParameters']]], + ['cellstypeflag_42',['cellsTypeFlag',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a4d16181763023f4fb59faa43ab74ce62',1,'dftfe::basis::FEBasisOperationsBase']]], + ['cg_43',['CG',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2a883a7e31d18eec587cbd5c3b051458f9',1,'dftfe::dealiiLinearSolver']]], + ['cgerv2d_44',['cgerv2d',['../namespacedftfe.html#a6bf86fc7fe8ae20e11a768bd7c332ada',1,'dftfe::Cgerv2d(int context, int M, int N, float *A, int lda, int rsrc, int csrc)'],['../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)']]], + ['cgesd2d_45',['cgesd2d',['../namespacedftfe.html#aa2e0cbd48e31b670d39a253eecff8866',1,'dftfe::Cgesd2d(int context, int M, int N, float *A, int lda, int rdest, int cdest)'],['../namespacedftfe.html#ae8fc4c48a94e2448534ca8b76a52790a',1,'dftfe::Cgesd2d(int context, int M, int N, double *A, int lda, int rdest, int cdest)'],['../namespacedftfe.html#af61adbd56f59e8e2edc437eb48e9b9b8',1,'dftfe::Cgesd2d(int, int, int, number *, int, int, int)']]], + ['cgprpnonlinearsolver_46',['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_47',['cgPRPNonLinearSolver.h',['../cg_p_r_p_non_linear_solver_8h.html',1,'']]], + ['chebyshevfilter_48',['chebyshevFilter',['../namespacedftfe_1_1linear_algebra_operations.html#a735b3562ca9fd1c750af7d5d8b3faa0f',1,'dftfe::linearAlgebraOperations']]], + ['chebyshevfilteropt_49',['chebyshevFilterOpt',['../namespacedftfe_1_1linear_algebra_operations.html#a6376b8e1e190aa67ba64c66f11cd91fb',1,'dftfe::linearAlgebraOperations']]], + ['chebyshevfilterpolydegreefirstscfscalingfactor_50',['chebyshevFilterPolyDegreeFirstScfScalingFactor',['../classdftfe_1_1dft_parameters.html#a43f51b3966bed047170a2943183d74da',1,'dftfe::dftParameters']]], + ['chebyshevorder_51',['chebyshevOrder',['../classdftfe_1_1dft_parameters.html#af4bc86c7dd5fd54bcd8d713f0251b52d',1,'dftfe::dftParameters']]], + ['chebyshevorthogonalizedsubspaceiterationsolver_52',['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_53',['chebyshevOrthogonalizedSubspaceIterationSolver.h',['../chebyshev_orthogonalized_subspace_iteration_solver_8h.html',1,'']]], + ['chebyshevorthogonalizedsubspaceiterationsolverdevice_2eh_54',['chebyshevOrthogonalizedSubspaceIterationSolverDevice.h',['../chebyshev_orthogonalized_subspace_iteration_solver_device_8h.html',1,'']]], + ['chebyshevtolerance_55',['chebyshevTolerance',['../classdftfe_1_1dft_parameters.html#acb6168d145afa1ba83fe63881eefabf0',1,'dftfe::dftParameters']]], + ['chebywfcblocksize_56',['chebyWfcBlockSize',['../classdftfe_1_1dft_parameters.html#a267accfb7898b561519dee248a98e9c8',1,'dftfe::dftParameters']]], + ['check_5fparameters_57',['check_parameters',['../classdftfe_1_1dft_parameters.html#a166f01e993b958c7eec268548241d415',1,'dftfe::dftParameters']]], + ['checkconstraintsconsistency_58',['checkConstraintsConsistency',['../classdftfe_1_1triangulation_manager.html#a5f788b4faeea455b1d920b401c1bbad7',1,'dftfe::triangulationManager']]], + ['checkperiodicsurfacerefinementconsistency_59',['checkPeriodicSurfaceRefinementConsistency',['../classdftfe_1_1triangulation_manager.html#a565b8a3f11c4962037a7c40898785278',1,'dftfe::triangulationManager']]], + ['checkrestart_60',['checkrestart',['../classdftfe_1_1nudged_elastic_band_class.html#a7f179324e5c2d39426ee1d3a05dba36e',1,'dftfe::nudgedElasticBandClass::checkRestart()'],['../classdftfe_1_1molecular_dynamics_class.html#af45d01df8cecc83bc29edd04cc1cba98',1,'dftfe::molecularDynamicsClass::checkRestart()']]], + ['checkwolfe_61',['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_62',['cholesky',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06af99d44552a6f8796d2c9c44443c7aa0a',1,'dftfe::LAPACKSupport']]], + ['classifyinteriorsurfacenodesincell_63',['classifyInteriorSurfaceNodesInCell',['../namespacedftfe_1_1vector_tools.html#aef36d37d346a77547ebbfdad6ff975c9',1,'dftfe::vectorTools']]], + ['classifyinteriorsurfacenodesinglobalarray_64',['classifyInteriorSurfaceNodesInGlobalArray',['../namespacedftfe_1_1vector_tools.html#abe2433fc07b81e4cdfb66067f9264647',1,'dftfe::vectorTools']]], + ['clear_65',['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_1utils_1_1_memory_storage.html#a998f773c54881aa83edf83a21bf7d4a5',1,'dftfe::utils::MemoryStorage::clear()'],['../classdftfe_1_1poisson_solver_problem.html#a208add694f68451e4d7dadb63ee24782',1,'dftfe::poissonSolverProblem::clear()']]], + ['clearhistory_66',['clearHistory',['../classdftfe_1_1_mixing_scheme.html#a05f44fc9c96365483edf66f9546777c2',1,'dftfe::MixingScheme']]], + ['clearmaps_67',['clearMaps',['../classdftfe_1_1symmetry_class.html#ac8d9ad06a47e0ee33051d66afe0494f4',1,'dftfe::symmetryClass']]], + ['clearrhodata_68',['clearRhoData',['../classdftfe_1_1dft_class.html#a8162f36f1085a4cb8a8b6f5ddd64389a',1,'dftfe::dftClass']]], + ['clearscratchmultivectors_69',['clearScratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a81ea4dc95fcfbf1033a2ef3a257bffdd',1,'dftfe::basis::FEBasisOperationsBase']]], + ['column_5fblock_5fsize_70',['column_block_size',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab16408c54c2082adfbca8c7a143f5028',1,'dftfe::ScaLAPACKMatrix']]], + ['complexconj_71',['complexconj',['../namespacedftfe_1_1utils.html#a673e365a8a9717b15757d5c55860b866',1,'dftfe::utils::complexConj(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#ac352935e73b5afc211a924fa31515b7f',1,'dftfe::utils::complexConj(const float x)'],['../namespacedftfe_1_1utils.html#a053e2c730762866c294a4f28ab31b2b9',1,'dftfe::utils::complexConj(const double x)'],['../namespacedftfe_1_1utils.html#a4fd343c51fbbe126391b3fbbbcaa111e',1,'dftfe::utils::complexConj(const std::complex< float > x)']]], + ['compositedata_72',['compositedata',['../classdftfe_1_1dft_utils_1_1_composite_data.html#abf075a97ea1ac713b7ecfbbc33c95e8b',1,'dftfe::dftUtils::CompositeData::CompositeData()'],['../classdftfe_1_1dft_utils_1_1_composite_data.html',1,'dftfe::dftUtils::CompositeData']]], + ['compositedata_2eh_73',['CompositeData.h',['../_composite_data_8h.html',1,'']]], + ['compute_5fcholesky_5ffactorization_74',['compute_cholesky_factorization',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6e90313134e463ddf7374ee2023ba032',1,'dftfe::ScaLAPACKMatrix']]], + ['compute_5ffermienergy_75',['compute_fermienergy',['../classdftfe_1_1dft_class.html#a80d33098c0b660e8e54d61e71fbd5a09',1,'dftfe::dftClass']]], + ['compute_5ffermienergy_5fconstraintmagnetization_76',['compute_fermienergy_constraintMagnetization',['../classdftfe_1_1dft_class.html#a6fc10c5f849fdc6bf2e0f64ed5ded496',1,'dftfe::dftClass']]], + ['compute_5fldos_77',['compute_ldos',['../classdftfe_1_1dft_class.html#a673e8b5f245d5bcd14eaf349b65dd400',1,'dftfe::dftClass']]], + ['compute_5flocalizationlength_78',['compute_localizationLength',['../classdftfe_1_1dft_class.html#abe99a474ec236b4cec0f3b6670c5436f',1,'dftfe::dftClass']]], + ['compute_5flu_5ffactorization_79',['compute_lu_factorization',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8ce68e532d59d501135b8c49f0ad174f',1,'dftfe::ScaLAPACKMatrix']]], + ['compute_5fpdos_80',['compute_pdos',['../classdftfe_1_1dft_class.html#a7a9f2ebcd809ccfbe33875ec0ea37119',1,'dftfe::dftClass']]], + ['compute_5frhoout_81',['compute_rhoOut',['../classdftfe_1_1dft_class.html#afe116ad6b8b55c8fad396e156b170a95',1,'dftfe::dftClass']]], + ['compute_5ftdos_82',['compute_tdos',['../classdftfe_1_1dft_class.html#a4abaea25d0f116f400be43fa704f88ab',1,'dftfe::dftClass']]], + ['computeandersonmixingcoeff_83',['computeAndersonMixingCoeff',['../classdftfe_1_1_mixing_scheme.html#a0f66c77a6ef53062cadf9b6a0f5728a7',1,'dftfe::MixingScheme']]], + ['computeandsymmetrize_5frhoout_84',['computeAndSymmetrize_rhoOut',['../classdftfe_1_1symmetry_class.html#a7bd98fac638ed9f7acb97305c3d314c8',1,'dftfe::symmetryClass']]], + ['computeatomsforces_85',['computeAtomsForces',['../classdftfe_1_1force_class.html#ac06b05c279e7d97ecad2f8f6236b739c',1,'dftfe::forceClass']]], + ['computeatomsforcesgaussiangenerator_86',['computeAtomsForcesGaussianGenerator',['../classdftfe_1_1force_class.html#a39d0fc9d3fefc3913247875356132ce7',1,'dftfe::forceClass']]], + ['computecelllocalindexsetmap_87',['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)']]], + ['computeconfigurationalforceeeshelbyeelectrophitot_88',['computeConfigurationalForceEEshelbyEElectroPhiTot',['../classdftfe_1_1force_class.html#a3cfb2b604232e385d6b6b1007107cf57',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeeshelbytensorfpspfnllinfe_89',['computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE',['../classdftfe_1_1force_class.html#ad3c0b332d5ad4af930482d75615dea0f',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeselflinfe_90',['computeConfigurationalForceEselfLinFE',['../classdftfe_1_1force_class.html#af0a2e278454e913838ca332381696f85',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeselfnosurfacelinfe_91',['computeConfigurationalForceEselfNoSurfaceLinFE',['../classdftfe_1_1force_class.html#afeb25e90a9f5d3a8added6fc97bcc739',1,'dftfe::forceClass']]], + ['computeconfigurationalforcephiextlinfe_92',['computeConfigurationalForcePhiExtLinFE',['../classdftfe_1_1force_class.html#aa1d226061b7e582dd37e0c1597f4599d',1,'dftfe::forceClass']]], + ['computeconfigurationalforcetotallinfe_93',['computeConfigurationalForceTotalLinFE',['../classdftfe_1_1force_class.html#a5dbbdcdb9b367f2319047b7ec4a822d5',1,'dftfe::forceClass']]], + ['computedeltad_94',['computeDeltaD',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7e148abbafa347569ce898ee0252c5af',1,'dftfe::cgPRPNonLinearSolver']]], + ['computedeltas_95',['computeDeltas',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a26f389399477411e2bd73cc0434442bf',1,'dftfe::cgPRPNonLinearSolver']]], + ['computedensitybasedenergydensity_96',['computedensitybasedenergydensity',['../classdftfe_1_1exc_density_l_d_a_class.html#a211cba15562570d14f0dc1939245b426',1,'dftfe::excDensityLDAClass::computeDensityBasedEnergyDensity()'],['../classdftfe_1_1exc_density_g_g_a_class.html#a47d9245c0218f296212e3b619339f45d',1,'dftfe::excDensityGGAClass::computeDensityBasedEnergyDensity()'],['../classdftfe_1_1exc_density_base_class.html#a86691254caff4cbc82ea2a5300f8c3dc',1,'dftfe::excDensityBaseClass::computeDensityBasedEnergyDensity()']]], + ['computedensitybasedfxc_97',['computedensitybasedfxc',['../classdftfe_1_1exc_density_l_d_a_class.html#ae989036a9c41bae6608e42b10a5b5a79',1,'dftfe::excDensityLDAClass::computeDensityBasedFxc()'],['../classdftfe_1_1exc_density_g_g_a_class.html#a7c17e563a21fe71e85c2c7b32fd76af5',1,'dftfe::excDensityGGAClass::computeDensityBasedFxc()'],['../classdftfe_1_1exc_density_base_class.html#ae4c3fb6a4e629abd478353c9a927bd12',1,'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 =0']]], + ['computedensitybasedvxc_98',['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_99',['computeDFTDCorrection',['../classdftfe_1_1dispersion_correction.html#a9678ff2882412d84267d8256bd2bf234',1,'dftfe::dispersionCorrection']]], + ['computedftfreeenergy_100',['computeDFTFreeEnergy',['../classdftfe_1_1dftfe_wrapper.html#aeecf15844b4e6fc0005f8a5ba321a1da',1,'dftfe::dftfeWrapper']]], + ['computediagonala_101',['computediagonala',['../classdftfe_1_1poisson_solver_problem.html#a2db6195ac0129cd852cff44c06262965',1,'dftfe::poissonSolverProblem::computeDiagonalA()'],['../classdftfe_1_1kerker_solver_problem.html#a5db62e0f9189cc375a1f13bb071a4ce0',1,'dftfe::kerkerSolverProblem::computeDiagonalA()']]], + ['computedispresioncorrection_102',['computeDispresionCorrection',['../classdftfe_1_1dispersion_correction.html#ad07f240b59b757a39b913611fa7597b0',1,'dftfe::dispersionCorrection']]], + ['computeeigenresidualnorm_103',['computeEigenResidualNorm',['../namespacedftfe_1_1linear_algebra_operations.html#a6228b73d78eaeb4f9cec4a67951abad4',1,'dftfe::linearAlgebraOperations']]], + ['computeelectrostaticenergyhrefined_104',['computeElectrostaticEnergyHRefined',['../classdftfe_1_1dft_class.html#a3298ee11100f1d66d3371750cea9b3e2',1,'dftfe::dftClass']]], + ['computeelementalnonlocalpseudoovdataforce_105',['computeElementalNonLocalPseudoOVDataForce',['../classdftfe_1_1force_class.html#ad37e04da7afd67dec1882e33192ee676',1,'dftfe::forceClass']]], + ['computeelementalovprojectorkets_106',['computeElementalOVProjectorKets',['../classdftfe_1_1dft_class.html#ae991f51d4a28e0ddcec3001c37dc42a0',1,'dftfe::dftClass']]], + ['computeenergy_107',['computeEnergy',['../classdftfe_1_1energy_calculator.html#af987be10cee1da2c726fb5133832769c',1,'dftfe::energyCalculator']]], + ['computeenergyeveryscf_108',['computeEnergyEverySCF',['../classdftfe_1_1dft_parameters.html#a802cf41fa22e01e0ff4f4eec1bb47ea0',1,'dftfe::dftParameters']]], + ['computeenergyspinpolarized_109',['computeEnergySpinPolarized',['../classdftfe_1_1energy_calculator.html#aa467fa2ac5afbff8495951495005c813',1,'dftfe::energyCalculator']]], + ['computeentropicenergy_110',['computeEntropicEnergy',['../classdftfe_1_1energy_calculator.html#a1f47ac488d9823bb083a31bb6730e8b3',1,'dftfe::energyCalculator']]], + ['computeeta_111',['computeEta',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ae775910470c51a65a373b4ff70011ad5',1,'dftfe::cgPRPNonLinearSolver']]], + ['computefloatingatomsforces_112',['computeFloatingAtomsForces',['../classdftfe_1_1force_class.html#ac48b7f696b19b9f989ba16ea6ca2ab76',1,'dftfe::forceClass']]], + ['computehamiltonianmatricesallkpt_113',['computeHamiltonianMatricesAllkpt',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a46b9c4221dac191f4c7206951b460ee3',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['computehamiltonianmatrix_114',['computeHamiltonianMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a95dad82e3190de59545422f0a85bc86b',1,'dftfe::kohnShamDFTOperatorClass']]], + ['computehamiltoniantimesxinternal_115',['computeHamiltonianTimesXInternal',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a6dd53a1564e82a94bda89b1ded7595df',1,'dftfe::kohnShamDFTOperatorClass']]], + ['computehx_116',['computeHx',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad38d152f3b493423b7a643ba80232311',1,'dftfe::LBFGSNonLinearSolver']]], + ['computeincrement_117',['computeincrement',['../classdftfe_1_1mesh_movement_gaussian_class.html#ae3bdfb1d098b810a802f8cb9931c3a25',1,'dftfe::meshMovementGaussianClass::computeIncrement()'],['../classdftfe_1_1mesh_movement_affine_transform.html#a3bee91967e0e4f6fae3676c83d583b66',1,'dftfe::meshMovementAffineTransform::computeIncrement()']]], + ['computeincrementtwostep_118',['computeIncrementTwoStep',['../classdftfe_1_1mesh_movement_gaussian_class.html#ab9a2bcda8b4c09c32454323277b379a6',1,'dftfe::meshMovementGaussianClass']]], + ['computejxwforrho_119',['computeJxWForRho',['../classdftfe_1_1dft_class.html#a34ec94f66b264a6f8c2a94510aeda0ac',1,'dftfe::dftClass']]], + ['computekineticmatrix_120',['computeKineticMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a32fa111bdaac8e10a073d723f888c521',1,'dftfe::kohnShamDFTOperatorClass']]], + ['computelocalhamiltoniantimesx_121',['computelocalhamiltoniantimesx',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a94a1a8e86ff919f45f12f8148d19a6fa',1,'dftfe::kohnShamDFTOperatorClass::computeLocalHamiltonianTimesX(const distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, const double scalar=1.0)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a0bd704f4019cc2ac8039c1628e92521a',1,'dftfe::kohnShamDFTOperatorClass::computeLocalHamiltonianTimesX(const distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix, const double scalar=1.0)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a80e78aa5c0bdd0f863b354d4980621ce',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeLocalHamiltonianTimesX()']]], + ['computelocalrhoout_122',['computeLocalrhoOut',['../classdftfe_1_1symmetry_class.html#a4d5cd1483de7f396b849ac12e1806f11',1,'dftfe::symmetryClass']]], + ['computemassvector_123',['computemassvector',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a757f93c20650e8fbebde1f7a79fad028',1,'dftfe::kohnShamDFTOperatorClass::computeMassVector()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad511c9f1ae497ec3e5701a098d3903f7',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeMassVector()'],['../classdftfe_1_1operator_d_f_t_class.html#a9ac124c7c417a90d30405e61044a1a07',1,'dftfe::operatorDFTClass::computeMassVector()']]], + ['computemaximumhighestoccupiedstateresidualnorm_124',['computemaximumhighestoccupiedstateresidualnorm',['../classdftfe_1_1dft_class.html#a9f5a5d83c8060b668c7f650c1bfaf59c',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#a0874f8d5fb6d61c0d68291f2ae40a191',1,'dftfe::dftClass::computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState)']]], + ['computemeanvalueconstraint_125',['computeMeanValueConstraint',['../classdftfe_1_1poisson_solver_problem.html#a281466439e2358bbe58bafea27f61c06',1,'dftfe::poissonSolverProblem']]], + ['computemixingmatrices_126',['computeMixingMatrices',['../classdftfe_1_1_mixing_scheme.html#afee8968d6de0d01a032ace52ff1935a9',1,'dftfe::MixingScheme']]], + ['computenewtonstep_127',['computeNewtonStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a55dbb50629e2baef41ccbbe8da63622a',1,'dftfe::BFGSNonLinearSolver']]], + ['computenodalrhofromquaddata_128',['computeNodalRhoFromQuadData',['../classdftfe_1_1dft_class.html#a7f637a00ccbee150341af50d2290dfcc',1,'dftfe::dftClass']]], + ['computenonlocalhamiltoniantimesx_129',['computenonlocalhamiltoniantimesx',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a0c07d0a4b1c86b1c7fb2fa98569f01f2',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeNonLocalHamiltonianTimesX()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ac596b8428436f1d505041492bc6ab214',1,'dftfe::kohnShamDFTOperatorClass::computeNonLocalHamiltonianTimesX()']]], + ['computenonlocalprojectorkettimesxtimesv_130',['computenonlocalprojectorkettimesxtimesv',['../classdftfe_1_1operator_d_f_t_class.html#aabf98bb2709eecca713098727c5c47e3',1,'dftfe::operatorDFTClass::computeNonLocalProjectorKetTimesXTimesV()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a245268ad1e87e1c71915137d2e03d773',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeNonLocalProjectorKetTimesXTimesV()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a9ad6e17e41bf28c405e109143a77ed32',1,'dftfe::kohnShamDFTOperatorClass::computeNonLocalProjectorKetTimesXTimesV()']]], + ['computeoffsetvectors_131',['computeOffsetVectors',['../namespacedftfe_1_1mesh_gen_utils.html#a4c04260faf47b3fc3b2990ca52b2ebf2',1,'dftfe::meshGenUtils']]], + ['computeoutputdensitydirectionalderivative_132',['computeOutputDensityDirectionalDerivative',['../classdftfe_1_1dft_class.html#af16ae713ae44c20f13bb6e511cfbfc0a',1,'dftfe::dftClass']]], + ['computeperiodicfacenormals_133',['computePeriodicFaceNormals',['../namespacedftfe_1_1mesh_gen_utils.html#a8cd97500e6d1b1fcf250a0069bd68eb8',1,'dftfe::meshGenUtils']]], + ['computeresiduall2norm_134',['computeResidualL2Norm',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a124bb0c681b685fa3ccff00b8dc1d4d2',1,'dftfe::cgPRPNonLinearSolver']]], + ['computerfostep_135',['computeRFOStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af138aa8db7da640b332f4b431714118b',1,'dftfe::BFGSNonLinearSolver']]], + ['computerhofirstorderresponsecpu_136',['computeRhoFirstOrderResponseCPU',['../namespacedftfe.html#a4fc4a18e3948d3f1c907ec7d18830ebb',1,'dftfe']]], + ['computerhofirstorderresponsecpumixedprec_137',['computeRhoFirstOrderResponseCPUMixedPrec',['../namespacedftfe.html#a75f99fd9facc34f78a0953999539f641',1,'dftfe']]], + ['computerhofrompsi_138',['computeRhoFromPSI',['../namespacedftfe.html#a861ed3871328c07f40a30c7b6b0f2512',1,'dftfe']]], + ['computerhogradrhofrominterpolatedvalues_139',['computeRhoGradRhoFromInterpolatedValues',['../namespacedftfe.html#af0903e4ac9fd49c22cf81df8df9cb13e',1,'dftfe']]], + ['computerhoinitialguessfrompsi_140',['computeRhoInitialGuessFromPSI',['../classdftfe_1_1dft_class.html#a8ede23db497cce6f15c7d2b3218bd505',1,'dftfe::dftClass']]], + ['computerhonodalfirstorderresponsefrompsiandpsiprime_141',['computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime',['../classdftfe_1_1dft_class.html#adba61a95c20dea27626d1cf4677062ca',1,'dftfe::dftClass']]], + ['computerhonodalfrompsi_142',['computeRhoNodalFromPSI',['../classdftfe_1_1dft_class.html#aef59caa1c3d5809c59ca5559404eca46',1,'dftfe::dftClass']]], + ['computerhs_143',['computerhs',['../classdftfe_1_1poisson_solver_problem.html#a4bd27843fa4d2ff0927abc5a0b93eb2d',1,'dftfe::poissonSolverProblem::computeRhs()'],['../classdftfe_1_1kerker_solver_problem.html#acb14312aef422e11b21070d9342ff8b9',1,'dftfe::kerkerSolverProblem::computeRhs()'],['../classdftfe_1_1dealii_linear_solver_problem.html#a4edad82ddfed26efcc1d242ca4bf698e',1,'dftfe::dealiiLinearSolverProblem::computeRhs()']]], + ['computesparsestructurenonlocalprojectors_5fov_144',['computeSparseStructureNonLocalProjectors_OV',['../classdftfe_1_1dft_class.html#a90284f68d2fadcdcd0a956adba437c80',1,'dftfe::dftClass']]], + ['computestep_145',['computestep',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a5d2d2d2e0b9e9e86063ccaf9d812c29d',1,'dftfe::LBFGSNonLinearSolver::computeStep()'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a8eabd0433a0564f247ebe3e7e60ed89c',1,'dftfe::BFGSNonLinearSolver::computeStep()']]], + ['computestepscale_146',['computeStepScale',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a0dcf24f75956fc467c1788d40969d73e',1,'dftfe::LBFGSNonLinearSolver']]], + ['computestress_147',['computestress',['../classdftfe_1_1force_class.html#afe98400f6935796142fb58a87e7b6d9f',1,'dftfe::forceClass::computeStress()'],['../classdftfe_1_1dftfe_wrapper.html#ad188c1077830a41b10b6c94d5a43f8e1',1,'dftfe::dftfeWrapper::computeStress()'],['../classdftfe_1_1dft_base.html#a6b9faf3b6e83f93f4871b6cd2ed5fac6',1,'dftfe::dftBase::computeStress()'],['../classdftfe_1_1dft_class.html#a9e4b008ff40378a5aef6d20c2f3dc311',1,'dftfe::dftClass::computeStress()']]], + ['computestresseeshelbyeelectrophitot_148',['computeStressEEshelbyEElectroPhiTot',['../classdftfe_1_1force_class.html#abc43b4b7947bd0bda27179e4725a9332',1,'dftfe::forceClass']]], + ['computestresseeshelbyepspenlek_149',['computeStressEEshelbyEPSPEnlEk',['../classdftfe_1_1force_class.html#a8cd227128f5240945d61c62143587e2b',1,'dftfe::forceClass']]], + ['computestresseself_150',['computeStressEself',['../classdftfe_1_1force_class.html#a513b14e0715bcc3eb440f3766c10a4af',1,'dftfe::forceClass']]], + ['computestressspinpolarizedeeshelbyepspenlek_151',['computeStressSpinPolarizedEEshelbyEPSPEnlEk',['../classdftfe_1_1force_class.html#abbf27146dda8220802e373dc14a420ba',1,'dftfe::forceClass']]], + ['computetotaldensityfromspinpolarised_152',['computeTotalDensityFromSpinPolarised',['../classdftfe_1_1dft_class.html#afaafd0c993b988800df713efad194769',1,'dftfe::dftClass']]], + ['computetotalgraddensityfromspinpolarised_153',['computeTotalGradDensityFromSpinPolarised',['../classdftfe_1_1dft_class.html#a79fca39448df1d08896c9030dab38917',1,'dftfe::dftClass']]], + ['computetotalnumberunknowns_154',['computeTotalNumberUnknowns',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7bb90f7e15efc7aad6a2ddab565eb60a',1,'dftfe::cgPRPNonLinearSolver']]], + ['computetracexthx_155',['computeTraceXtHX',['../classdftfe_1_1dft_class.html#a02ecf2986810c694fc0460e1de107162',1,'dftfe::dftClass']]], + ['computetracextkx_156',['computeTraceXtKX',['../classdftfe_1_1dft_class.html#a1d578bf59cf6b2d413d5a175ff49de4c',1,'dftfe::dftClass']]], + ['computetrustradius_157',['computeTrustRadius',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ae933250fa74d21f28232979c2b8b748a',1,'dftfe::BFGSNonLinearSolver']]], + ['computeupdatestep_158',['computeUpdateStep',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a4a4c929d27e3f9a31a057f3264c8ed92',1,'dftfe::LBFGSNonLinearSolver']]], + ['computeveff_159',['computeveff',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aad17d0302fd0bd082d6a25f5cb5a0be1',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a7834665a86b09b10fb897361274be587',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ad9bcfcf2314ea9148722c1991994b22d',1,'dftfe::kohnShamDFTOperatorClass::computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a56ec99f68f23545b8881110f97c9efac',1,'dftfe::kohnShamDFTOperatorClass::computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)']]], + ['computeveffexternalpotcorr_160',['computeveffexternalpotcorr',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad1a585ad044039689a5b06154627e5a0',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffExternalPotCorr()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a50474755ace0d6b48298fd6c0eab56e3',1,'dftfe::kohnShamDFTOperatorClass::computeVEffExternalPotCorr()']]], + ['computeveffprime_161',['computeveffprime',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#adb3baa2cad413c196e84f4a917f5c71d',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a46424810e19080c7dea107ceef9f6022',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aa9066cba3520b2208d8b5cb868632374',1,'dftfe::kohnShamDFTOperatorClass::computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a24e487973bc197223d7edea0b235a823',1,'dftfe::kohnShamDFTOperatorClass::computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)']]], + ['computeveffprimespinpolarized_162',['computeveffprimespinpolarized',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a935768df02bb352b010d2121c75b9c0e',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffPrimeSpinPolarized()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a30107281a1cd37464d0e027dbf6966fd',1,'dftfe::kohnShamDFTOperatorClass::computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#acd98b8f88dc45843bc5aa5e1ee59bbed',1,'dftfe::kohnShamDFTOperatorClass::computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a01ed7d8a700b0196c003835679fc4c42',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)']]], + ['computeveffspinpolarized_163',['computeveffspinpolarized',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a8736042b80f107c2cf82508132648ee3',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffSpinPolarized()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a45fb30bd00abeda3eec2932c23c53192',1,'dftfe::kohnShamDFTOperatorClass::computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a4690d28a0fae00f6ef27ab8c60bd847e',1,'dftfe::kohnShamDFTOperatorClass::computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a8c3943c5578fa90c3ba8baf546139a35',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffSpinPolarized()']]], + ['computevolume_164',['computeVolume',['../classdftfe_1_1dft_class.html#a4277d99c80f5eefab05924c8db31f8d3',1,'dftfe::dftClass']]], + ['computevselffieldgateauxderfd_165',['computeVselfFieldGateauxDerFD',['../classdftfe_1_1dft_class.html#a521200ac4552f2fbeac94a567d8ed458',1,'dftfe::dftClass']]], + ['computewavefunctiondependentexcenergy_166',['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()']]], + ['computing_5ftimer_167',['computing_timer',['../classdftfe_1_1triangulation_manager.html#aa90dac50d71790340cf4c329d247167a',1,'dftfe::triangulationManager::computing_timer'],['../classdftfe_1_1symmetry_class.html#ac0d04de65d49cc82ee7e3477b353908b',1,'dftfe::symmetryClass::computing_timer'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a080cbf145dfdc12f52c30ed8dff173ed',1,'dftfe::kohnShamDFTOperatorDeviceClass::computing_timer'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#acb287771f59fcac9d00003590d99ca84',1,'dftfe::kohnShamDFTOperatorClass::computing_timer'],['../classdftfe_1_1dft_class.html#af306381cdac017ba39cf3a35fdd2078b',1,'dftfe::dftClass::computing_timer'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a180d28207594ab792123c79c280e7a14',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::computing_timer']]], + ['computingtimerstandard_168',['computingTimerStandard',['../classdftfe_1_1dft_class.html#a534fb4ee868fa968f5ba4df72b7a7ea4',1,'dftfe::dftClass']]], + ['config_169',['config',['../structdftfe_1_1pseudo_utils_1_1_element.html#a9859a80c4ee044adff1433f2d4eb422a',1,'dftfe::pseudoUtils::Element']]], + ['configforcelinfefinalize_170',['configForceLinFEFinalize',['../classdftfe_1_1force_class.html#ab88404cc09e20ef63720d03a4a753b4f',1,'dftfe::forceClass']]], + ['configforcelinfeinit_171',['configForceLinFEInit',['../classdftfe_1_1force_class.html#a295f9bad098c188759eb8ee94231447d',1,'dftfe::forceClass']]], + ['configuration_172',['configuration',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a6051c728fcc0368aa816ec889b412e08',1,'dftfe::pseudoUtils::PeriodicTable::configuration(std::string symbol) const'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a5803e1ede7d82bd940e5abe3c0478bdf',1,'dftfe::pseudoUtils::PeriodicTable::configuration(int zval) const']]], + ['conj_173',['conj',['../namespacedftfe_1_1utils.html#a5984dc0c102d2ebd7281ee3c76400628',1,'dftfe::utils::conj(hipFloatComplex a)'],['../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)']]], + ['conjugate_174',['conjugate',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a46ffac5802f6c8aa4e4f8faf739b85f7',1,'dftfe::ScaLAPACKMatrix']]], + ['consistentperiodicboundaryrefinement_175',['consistentPeriodicBoundaryRefinement',['../classdftfe_1_1triangulation_manager.html#a5ae101850bbb04ecfd369ee14b2bb53a',1,'dftfe::triangulationManager']]], + ['const_5fiterator_176',['const_iterator',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#abf5239a637f4c71499d80dc3a06600ed',1,'dftfe::linearAlgebra::MultiVector::const_iterator'],['../classdftfe_1_1utils_1_1_memory_storage.html#ac513760c004d528c08047207c4e08974',1,'dftfe::utils::MemoryStorage::const_iterator']]], + ['const_5freference_177',['const_reference',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a2bf4b104f134d0b779481b45a09c1068',1,'dftfe::linearAlgebra::MultiVector::const_reference'],['../classdftfe_1_1utils_1_1_memory_storage.html#aaee050daa72355825f91816d3b938e3b',1,'dftfe::utils::MemoryStorage::const_reference']]], + ['constants_2eh_178',['constants.h',['../constants_8h.html',1,'']]], + ['constraintinfoclass_179',['constraintInfoClass',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aba15fe880a6bb7e21c8e572c380bc2b8',1,'dftfe::basis::FEBasisOperationsBase']]], + ['constraintmagnetization_180',['constraintMagnetization',['../classdftfe_1_1dft_parameters.html#a9262ed79b6bc10ba8c2ab5eaa50f0a71',1,'dftfe::dftParameters']]], + ['constraintmatrixinfo_181',['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_182',['constraintMatrixInfo.h',['../constraint_matrix_info_8h.html',1,'']]], + ['constraintmatrixinfodevice_2eh_183',['constraintMatrixInfoDevice.h',['../constraint_matrix_info_device_8h.html',1,'']]], + ['constraintsnone_184',['constraintsNone',['../classdftfe_1_1dft_class.html#af1802662d8891efb17f2ac28df3c0f57',1,'dftfe::dftClass']]], + ['constraintsnonedatainfo_185',['constraintsNoneDataInfo',['../classdftfe_1_1dft_class.html#af5855b3131146e59e2b2f2d83a8de9e8',1,'dftfe::dftClass']]], + ['constraintsnoneeigen_186',['constraintsNoneEigen',['../classdftfe_1_1dft_class.html#ad94469526efe9f02d4fae9107a019e17',1,'dftfe::dftClass']]], + ['constraintsnoneeigendatainfo_187',['constraintsNoneEigenDataInfo',['../classdftfe_1_1dft_class.html#a78aefd7ab01004a2448d6a17cb5d1302',1,'dftfe::dftClass']]], + ['constraintsparallelcheck_188',['constraintsParallelCheck',['../classdftfe_1_1dft_parameters.html#a4fde431f4729c4272886c298b22316fc',1,'dftfe::dftParameters']]], + ['contributing_20to_20dft_20fe_189',['Contributing to DFT-FE',['../index.html#autotoc_md3',1,'']]], + ['convert_190',['convert',['../namespacedftfe_1_1pseudo_utils.html#ad187100ff9f9710b59b63e23df1161a7',1,'dftfe::pseudoUtils']]], + ['convertcartesiantospherical_191',['convertCartesianToSpherical',['../namespacedftfe_1_1pseudo_utils.html#aade7fcbd6b4fce4925871823d2b76127',1,'dftfe::pseudoUtils']]], + ['coordinatesfile_192',['coordinatesFile',['../classdftfe_1_1dft_parameters.html#a1262ce6a105979cc0cb8d8fcf1cdf99b',1,'dftfe::dftParameters']]], + ['coordinatesfileneb_193',['coordinatesFileNEB',['../classdftfe_1_1run_parameters.html#a809225cf95b6c503dbd14b71180501de',1,'dftfe::runParameters']]], + ['coordinatesgaussiandispfile_194',['coordinatesGaussianDispFile',['../classdftfe_1_1dft_parameters.html#af5dd7944084dcb7ef2b61f22ca6e2fb4',1,'dftfe::dftParameters']]], + ['copy_195',['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_196',['copy_conjugate_transposed',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a04dd4e08159c26e5fae262f9ca8dc183',1,'dftfe::ScaLAPACKMatrix']]], + ['copy_5fto_197',['copy_to',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2b846add6ba88a8e9b1f1af7750e3a9c',1,'dftfe::ScaLAPACKMatrix']]], + ['copy_5ftransposed_198',['copy_transposed',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab607c0944accd8bc9b549e43c57f695a',1,'dftfe::ScaLAPACKMatrix']]], + ['copydensityfromvector_199',['copyDensityFromVector',['../classdftfe_1_1dft_class.html#a5de064aaa887ead82ca7f698172ffe1f',1,'dftfe::dftClass']]], + ['copydensitytovector_200',['copyDensityToVector',['../classdftfe_1_1dft_class.html#aa441e9d0c2e678e13fb47b5a75e1df31',1,'dftfe::dftClass']]], + ['copyfile_201',['copyFile',['../namespacedftfe_1_1dft_utils.html#afdf53b76635604e4d222e23d82c54a95',1,'dftfe::dftUtils']]], + ['copyflatteneddealiivectosinglecompvec_202',['copyFlattenedDealiiVecToSingleCompVec',['../namespacedftfe_1_1vector_tools.html#ad8be7e32b2490c9d3211293ea4367b7c',1,'dftfe::vectorTools']]], + ['copyflattenedstlvectosinglecompvec_203',['copyFlattenedSTLVecToSingleCompVec',['../namespacedftfe_1_1vector_tools.html#ae9e994d96e1fbae2e10b12c1b77ed399',1,'dftfe::vectorTools']]], + ['copyfrom_204',['copyfrom',['../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)'],['../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#a421f6029b20bd1cf68bee49f239a6a0b',1,'dftfe::utils::MemoryStorage::copyFrom(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)']]], + ['copygraddensityfromvector_205',['copyGradDensityFromVector',['../classdftfe_1_1dft_class.html#ad12c5e4d82f4699b3706bd0c4ee075d2',1,'dftfe::dftClass']]], + ['copygraddensitytovector_206',['copyGradDensityToVector',['../classdftfe_1_1dft_class.html#a6fedfd16dbb753cdcde85902dc375013',1,'dftfe::dftClass']]], + ['copysinglecompvectoflatteneddealiivec_207',['copySingleCompVecToFlattenedDealiiVec',['../namespacedftfe_1_1vector_tools.html#a0920ffac60d8dc52a5d0854f5a9a410b',1,'dftfe::vectorTools']]], + ['copysinglecompvectoflattenedstlvec_208',['copySingleCompVecToFlattenedSTLVec',['../namespacedftfe_1_1vector_tools.html#ab5808aada14eb28ffc011775be52e072',1,'dftfe::vectorTools']]], + ['copyto_209',['copyto',['../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'],['../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']]], + ['copyvalue_210',['copyvalue',['../namespacedftfe_1_1utils.html#a7cfc456950459801afaf21bf2b03e470',1,'dftfe::utils::copyValue(double *a, const float b)'],['../namespacedftfe_1_1utils.html#ab0bae0eb8544b97400b79d90a88e1ef1',1,'dftfe::utils::copyValue(cuDoubleComplex *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#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)'],['../namespacedftfe_1_1utils.html#ad642a6592074ff59592a482383d19240',1,'dftfe::utils::copyValue(cuFloatComplex *a, const cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#abbd62a194d6e755b4244990590514771',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#aa62ba3f486de8602c6714ad814ac8b7d',1,'dftfe::utils::copyValue(float *a, const float b)'],['../namespacedftfe_1_1utils.html#a5b54b8d954cf7f7a6fefce0adffc03ec',1,'dftfe::utils::copyValue(double *a, const double b)'],['../namespacedftfe_1_1utils.html#a4854f3648ec34c4df9a4b546eade78c5',1,'dftfe::utils::copyValue(float *a, const double b)']]], + ['coredensity_211',['coreDensity',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a6cf861008aee5d2112cae84f892fe7b6',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['createatombins_212',['createAtomBins',['../classdftfe_1_1vself_bins_manager.html#a22bf860da00a54ad61404ec1d8cb1e8c',1,'dftfe::vselfBinsManager']]], + ['createatombinssanitycheck_213',['createAtomBinsSanityCheck',['../classdftfe_1_1vself_bins_manager.html#ad6061e11aa96ae2515c432b0cfee1e4e',1,'dftfe::vselfBinsManager']]], + ['createbandparallelizationindices_214',['createBandParallelizationIndices',['../namespacedftfe_1_1dft_utils.html#a9b61065c8203ed68095edcf1ae5cfc09',1,'dftfe::dftUtils']]], + ['createbinobjectsforce_215',['createBinObjectsForce',['../classdftfe_1_1force_class.html#a9882fc5e615f5fccd03c7b43cd58291b',1,'dftfe::forceClass']]], + ['createboundingboxforsphere_216',['createBoundingBoxForSphere',['../namespacedftfe_1_1dft_utils.html#aa26c95fb5d563176b7f5deb897febaa9',1,'dftfe::dftUtils']]], + ['createboundingboxtrialocallyowned_217',['createBoundingBoxTriaLocallyOwned',['../namespacedftfe_1_1vector_tools.html#a94de11beb762513ccc8a67a135488399',1,'dftfe::vectorTools']]], + ['createconstraintsfromserialdofhandler_218',['createConstraintsFromSerialDofhandler',['../classdftfe_1_1dft_parameters.html#a24feae6c0b4d8ed6233d67a2b54c72ed',1,'dftfe::dftParameters']]], + ['createdealiivector_219',['createDealiiVector',['../namespacedftfe_1_1vector_tools.html#a2ceeb70d960a91711970d88de99b0146',1,'dftfe::vectorTools']]], + ['createdeviceblashandle_220',['createDeviceBlasHandle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a638a635693630971775773c95b59b165',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['createglobaltolocalidmapsscalapackmat_221',['createGlobalToLocalIdMapsScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#afaed6d79685ef81cd4312ed4ac61c158',1,'dftfe::linearAlgebraOperations::internal']]], + ['createkpointparallelizationindices_222',['createKpointParallelizationIndices',['../namespacedftfe_1_1dft_utils.html#aa4eb730fa103524c924c0e0860ade0b8',1,'dftfe::dftUtils']]], + ['createmasterchargeidtoimageidmaps_223',['createMasterChargeIdToImageIdMaps',['../classdftfe_1_1dft_class.html#a26e05b3eb315edd74c5231062e6a4e1f',1,'dftfe::dftClass']]], + ['createmultivector_224',['createMultiVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ae023f5da01ac98ca8583b716e248e56f',1,'dftfe::basis::FEBasisOperationsBase']]], + ['createmultivectorfromdealiipartitioner_225',['createMultiVectorFromDealiiPartitioner',['../namespacedftfe_1_1linear_algebra.html#a80a955ddf22b83a2c100b958504010f2',1,'dftfe::linearAlgebra']]], + ['createparallelconstraintmatrixfromserial_226',['createParallelConstraintMatrixFromSerial',['../namespacedftfe_1_1vector_tools.html#a977b9d4c44854ce9555eaa4f57857c03',1,'dftfe::vectorTools']]], + ['createprefineddofhandler_227',['createpRefinedDofHandler',['../classdftfe_1_1dft_class.html#ab38a56a28c4df34e3ab3d1b5a901de6c',1,'dftfe::dftClass']]], + ['createprocessgridrectangularmatrix_228',['createProcessGridRectangularMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a6a31afb29381fc4e6b6fcefccaaedd17',1,'dftfe::linearAlgebraOperations::internal']]], + ['createprocessgridsquarematrix_229',['createProcessGridSquareMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a0bdaa7479769cdd6a30ab41d702f1fb9',1,'dftfe::linearAlgebraOperations::internal']]], + ['createscratchfolder_230',['createScratchFolder',['../classdftfe_1_1dftfe_wrapper.html#a810e943c0e3d9766360ad06e9b1d2d3a',1,'dftfe::dftfeWrapper']]], + ['createscratchmultivectors_231',['createScratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a3e7e770325b5a050c3cd025ac42bcb51',1,'dftfe::basis::FEBasisOperationsBase']]], + ['cross_5fproduct_232',['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_233',['crys2cart',['../classdftfe_1_1symmetry_class.html#ac91d23114e0cf4b960351bde7eb7e33e',1,'dftfe::symmetryClass']]], + ['csgerv2d_234',['Csgerv2d',['../namespacedftfe.html#a2dc58bb0b7f30e064c2fa44117c7d623',1,'dftfe']]], + ['csgesd2d_235',['Csgesd2d',['../namespacedftfe.html#a60f9d5cb0924f7a150d178001cb4e58b',1,'dftfe']]], + ['csys2blacs_5fhandle_236',['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..9664d1ae2 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,796 @@ +var searchData= +[ + ['d_5fa_0',['d_a',['../classdftfe_1_1_mixing_scheme.html#a0bde59882d9dedb7ac7caa8c851054b9',1,'dftfe::MixingScheme::d_A'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6af921c8e1387c5df0646864fab12d46',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_A']]], + ['d_5faffinetransformmesh_1',['d_affineTransformMesh',['../classdftfe_1_1dft_class.html#a779492ee9a53af73b6872d8a75d609e1',1,'dftfe::dftClass']]], + ['d_5fallowgaussianoverlaponatoms_2',['d_allowGaussianOverlapOnAtoms',['../classdftfe_1_1force_class.html#ac512370d7862044bfa051e734991c835',1,'dftfe::forceClass']]], + ['d_5fallownedranges_3',['d_allOwnedRanges',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a81f9493179a3fadaba40ba45c9c03942',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5falpha_4',['d_alpha',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a7a204d605305c382ddf991f97b992762',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5falphachk_5',['d_alphaChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a631af583436505c49bef2ab2c9ab6428',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fatomcoordinates_6',['d_atomCoordinates',['../classdftfe_1_1dispersion_correction.html#acd133719e97eeb0df3b16ef9a61213be',1,'dftfe::dispersionCorrection']]], + ['d_5fatomfractionalunwrapped_7',['d_atomFractionalunwrapped',['../classdftfe_1_1molecular_dynamics_class.html#a07ec8500d986d0851806ef7d969e687c',1,'dftfe::molecularDynamicsClass']]], + ['d_5fatomicnumbers_8',['d_atomicNumbers',['../classdftfe_1_1dispersion_correction.html#ac6cee391e56cb0308700e3b67b7751f5',1,'dftfe::dispersionCorrection']]], + ['d_5fatomicrhoscalingfac_9',['d_atomicRhoScalingFac',['../classdftfe_1_1dft_class.html#ab3d552e852f4df088b7bb25d8947bf9d',1,'dftfe::dftClass']]], + ['d_5fatomidbinidlocaldofhandler_10',['d_AtomIdBinIdLocalDofHandler',['../classdftfe_1_1force_class.html#ab0c99eb5dbded8a580adf84915928a34',1,'dftfe::forceClass']]], + ['d_5fatomidbinidlocaldofhandlerelectro_11',['d_AtomIdBinIdLocalDofHandlerElectro',['../classdftfe_1_1force_class.html#acb27d471e43a53c6747b7a14753ef42d',1,'dftfe::forceClass']]], + ['d_5fatomidbinidmaplocalallimages_12',['d_atomIdBinIdMapLocalAllImages',['../classdftfe_1_1vself_bins_manager.html#ae2c6fab008cb86a67f1237524f8fbfaa',1,'dftfe::vselfBinsManager']]], + ['d_5fatomidtonontrivialpseudowfcscellstartindexzetadeltavquads_13',['d_atomIdToNonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads',['../classdftfe_1_1dft_class.html#ab730e1725a08ea6eb0437a1f3787e429',1,'dftfe::dftClass']]], + ['d_5fatomlocations_14',['d_atomLocations',['../classdftfe_1_1vself_bins_manager.html#adf4e2683d85cf1cf886f112b35b79d83',1,'dftfe::vselfBinsManager']]], + ['d_5fatomlocationsautomesh_15',['d_atomLocationsAutoMesh',['../classdftfe_1_1dft_class.html#aa23bdfa458e02d6c553192e9962fdc6f',1,'dftfe::dftClass']]], + ['d_5fatomlocationsinitial_16',['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_5fatomnodeidtochargemap_17',['d_atomNodeIdToChargeMap',['../classdftfe_1_1dft_class.html#ac70eb888cf7f5c42bb314a46d038dfcb',1,'dftfe::dftClass']]], + ['d_5fatompositions_18',['d_atomPositions',['../classdftfe_1_1triangulation_manager.html#a2d1473eae700b826bdbb23fe0cf57924',1,'dftfe::triangulationManager']]], + ['d_5fatomsdisplacementsgaussianread_19',['d_atomsDisplacementsGaussianRead',['../classdftfe_1_1dft_class.html#ac3adc18402f996f92bc8db12ae49403b',1,'dftfe::dftClass']]], + ['d_5fatomsforcedofs_20',['d_atomsForceDofs',['../classdftfe_1_1force_class.html#a2f8a91e755476f377c016a36bfc98d64',1,'dftfe::forceClass']]], + ['d_5fatomsforcedofselectro_21',['d_atomsForceDofsElectro',['../classdftfe_1_1force_class.html#a5c0f37824db88e0a2f3c51739fb8f1b5',1,'dftfe::forceClass']]], + ['d_5fatomsinbin_22',['d_atomsInBin',['../classdftfe_1_1vself_bins_manager.html#a28b74bc16c90abd791a722aecfd4cb59',1,'dftfe::vselfBinsManager']]], + ['d_5fatomsptr_23',['d_atomsPtr',['../classdftfe_1_1poisson_solver_problem.html#aecb72c6cc135ac8c37f232dd341a41c9',1,'dftfe::poissonSolverProblem']]], + ['d_5fatomtypeatributes_24',['d_atomTypeAtributes',['../classdftfe_1_1dft_class.html#a1c9586435d2e1770899bbf4df2db883b',1,'dftfe::dftClass']]], + ['d_5fautomesh_25',['d_autoMesh',['../classdftfe_1_1dft_class.html#afe04f924e0a7b2f92b3ab886582826c8',1,'dftfe::dftClass']]], + ['d_5fautomeshmaxjacobianratio_26',['d_autoMeshMaxJacobianRatio',['../classdftfe_1_1dft_class.html#ade32251161d0114af7b8b6222e230313',1,'dftfe::dftClass']]], + ['d_5fb_27',['d_B',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1666501802919bcc12f8a9553a114ad5',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fbarrierrequest_28',['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_29',['d_baseDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#aa9862e3c3de97b7b69f165d76749c2e0',1,'dftfe::dftClass']]], + ['d_5fbcellnontrivialatomids_30',['d_bCellNonTrivialAtomIds',['../classdftfe_1_1dft_class.html#a506873dd5cd3e5a26b581ad7eecafc58',1,'dftfe::dftClass']]], + ['d_5fbcellnontrivialatomidsbins_31',['d_bCellNonTrivialAtomIdsBins',['../classdftfe_1_1dft_class.html#a2dbfd1bbb6f5b1cafb5838681d0e38b9',1,'dftfe::dftClass']]], + ['d_5fbcellnontrivialatomimageids_32',['d_bCellNonTrivialAtomImageIds',['../classdftfe_1_1dft_class.html#af8f0460829bfa0d5d197d9bfe63eba8b',1,'dftfe::dftClass']]], + ['d_5fbcellnontrivialatomimageidsbins_33',['d_bCellNonTrivialAtomImageIdsBins',['../classdftfe_1_1dft_class.html#af12c154d6f08891ca839a2ad690b9346',1,'dftfe::dftClass']]], + ['d_5fbeta_34',['d_beta',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a2bbbe4de7f78e7167eee8bc6912724d5',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fbins_35',['d_bins',['../classdftfe_1_1vself_bins_manager.html#a7b505327d1408e681bb2f3dcf6715bd0',1,'dftfe::vselfBinsManager']]], + ['d_5fbinsimages_36',['d_binsImages',['../classdftfe_1_1vself_bins_manager.html#a5315714963c5b459d8bb572e9644edfb',1,'dftfe::vselfBinsManager']]], + ['d_5fbinsstartdofhandlerindexelectro_37',['d_binsStartDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#af23bdc3171dbfceb2001eea5a476d865',1,'dftfe::dftClass']]], + ['d_5fblockinodeindex_38',['d_blockiNodeIndex',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ac8dad0da801a93010b41d8b4aa01e0a7',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fblockinodeindexnosym_39',['d_blockiNodeIndexNoSym',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a6c92ad6ee5ab2ba581188d4d1be3b649',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fblockjnodeindex_40',['d_blockjNodeIndex',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a9812e3ded5bdaf4b9c3503d9cd76fd80',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fblockjnodeindexnosym_41',['d_blockjNodeIndexNoSym',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae83f22fec17ef199e5df25c37fd29dde',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fblocksize_42',['d_blockSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ad237f51a1ded1b82abafbc1aaa23542e',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fboundaryflag_43',['d_boundaryFlag',['../classdftfe_1_1vself_bins_manager.html#a8be997c5a81cf19061d5790ce8dd5bac',1,'dftfe::vselfBinsManager']]], + ['d_5fboundaryflagonlychargeid_44',['d_boundaryFlagOnlyChargeId',['../classdftfe_1_1vself_bins_manager.html#a12800ef9cf62378cadb5aab5cec4948d',1,'dftfe::vselfBinsManager']]], + ['d_5fbquadatomidsallatoms_45',['d_bQuadAtomIdsAllAtoms',['../classdftfe_1_1dft_class.html#a14ff6f8116a17daa2b9fcdf3a5e38e41',1,'dftfe::dftClass']]], + ['d_5fbquadatomidsallatomsimages_46',['d_bQuadAtomIdsAllAtomsImages',['../classdftfe_1_1dft_class.html#adb1a264f924d88265da8cb39c6747251',1,'dftfe::dftClass']]], + ['d_5fbquadvaluesallatoms_47',['d_bQuadValuesAllAtoms',['../classdftfe_1_1dft_class.html#ab4874f5a45c12832b297e999dc21038e',1,'dftfe::dftClass']]], + ['d_5fc_48',['d_c',['../classdftfe_1_1_mixing_scheme.html#a5c68b8e34a2dc021dd36c7cc97881344',1,'dftfe::MixingScheme::d_c'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ac2ce3db0ce0d79d253df29400329f011',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_C']]], + ['d_5fcelldofindextoprocessdofindexmap_49',['d_cellDofIndexToProcessDofIndexMap',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aa210c018e364d1784ad638e0035e8f6c',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fcellfacesvselfballsurfacesdofhandler_50',['d_cellFacesVselfBallSurfacesDofHandler',['../classdftfe_1_1force_class.html#ad1a81e147fdd61ebe964b7346095a205',1,'dftfe::forceClass']]], + ['d_5fcellfacesvselfballsurfacesdofhandlerelectro_51',['d_cellFacesVselfBallSurfacesDofHandlerElectro',['../classdftfe_1_1force_class.html#a40d852f5744329cc5448f9a527588454',1,'dftfe::forceClass']]], + ['d_5fcellfacesvselfballsurfacesdofhandlerforce_52',['d_cellFacesVselfBallSurfacesDofHandlerForce',['../classdftfe_1_1force_class.html#ad0c8efe172ab5b69818aba57cc0a65c9',1,'dftfe::forceClass']]], + ['d_5fcellfacesvselfballsurfacesdofhandlerforceelectro_53',['d_cellFacesVselfBallSurfacesDofHandlerForceElectro',['../classdftfe_1_1force_class.html#a38ca666e9846702d0b17a11876227769',1,'dftfe::forceClass']]], + ['d_5fcellhamiltonianmatrix_54',['d_cellHamiltonianMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a2094cce1a2b9b642a2f1d1a94e98b191',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fcellhamiltonianmatrixexternalpotcorr_55',['d_cellHamiltonianMatrixExternalPotCorr',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a033094bbe079b93c3a04934e1421b342',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fcellhamiltonianmatrixexternalpotcorrflatteneddevice_56',['d_cellHamiltonianMatrixExternalPotCorrFlattenedDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a14d34724d3e6fc875440e601bdf8b05b',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellhamiltonianmatrixflattened_57',['d_cellHamiltonianMatrixFlattened',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#af6a74a7ab18235bb680a57b3928d5d4f',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellhamiltonianmatrixflatteneddevice_58',['d_cellHamiltonianMatrixFlattenedDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ae91b63e2214005b8d540bbef9ecb8592',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellhamiltonianmatrixnonlocalflattenedconjugate_59',['d_cellHamiltonianMatrixNonLocalFlattenedConjugate',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#af460e3d47adb1668448a1bd8a0d777f8',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellhamiltonianmatrixnonlocalflattenedconjugatedevice_60',['d_cellHamiltonianMatrixNonLocalFlattenedConjugateDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9e8f1809d8d8fc50583a866f81ba3d5f',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellhamiltonianmatrixnonlocalflattenedtranspose_61',['d_cellHamiltonianMatrixNonLocalFlattenedTranspose',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a438d7c961f9fb739bf5d5a54c4291909',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellhamiltonianmatrixnonlocalflattenedtransposedevice_62',['d_cellHamiltonianMatrixNonLocalFlattenedTransposeDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a2eb403df945f66438c078397192b0f4d',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellhammatrixtimeswavematrix_63',['d_cellHamMatrixTimesWaveMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a124e754f539aa5c6f68bba5418a90967',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellhammatrixtimeswavematrixnonlocaldevice_64',['d_cellHamMatrixTimesWaveMatrixNonLocalDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aefa1511f9d9d6125e771287891badc6d',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellidtoactivecelliteratormapdofhandlerrhonodalelectro_65',['d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro',['../classdftfe_1_1force_class.html#acfcc3c89efe3baa973fb468de83d21a9',1,'dftfe::forceClass']]], + ['d_5fcellidtononlocalatomidslocalcompactsupportmap_66',['d_cellIdToNonlocalAtomIdsLocalCompactSupportMap',['../classdftfe_1_1dft_class.html#a1df2d147f368c58f18f1df638d194c6e',1,'dftfe::dftClass']]], + ['d_5fcellindextocellidmap_67',['d_cellIndexToCellIdMap',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a19739b9cabd91f1efcca870c6ae3473a',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fcelljxwvalues_68',['d_cellJxWValues',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a4c2e52ea0b26e06d1d84d9e2ca30fcb9',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcelljxwvaluesdevice_69',['d_cellJxWValuesDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1f81a0b52405b7bf2402ea90d8cff616',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellmassmatrix_70',['d_cellMassMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aaef50bcce3f45c4abb586bd90b044ff6',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fcellnodeidmapnonlocaltolocal_71',['d_cellNodeIdMapNonLocalToLocal',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a283c55f83058a0df91c9cc8ff93584a0',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellnodeidmapnonlocaltolocaldevice_72',['d_cellNodeIdMapNonLocalToLocalDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a98b720f8ca4ae1c6d635b02ecf4d0024',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fcellsblocksize_73',['d_cellsBlockSize',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#abcb5fa8597d5e124b71cab27830182fd',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fcellshapefunctiongradientintegral_74',['d_cellShapeFunctionGradientIntegral',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a40c1db3a95bbceaec73bfbc72440d750',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fcellshapefunctiongradientintegralflattened_75',['d_cellshapefunctiongradientintegralflattened',['../classdftfe_1_1poisson_solver_problem.html#a7d5c4d33b09ce10f9547caf885995d76',1,'dftfe::poissonSolverProblem::d_cellShapeFunctionGradientIntegralFlattened'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a0c46db8389a39edf81697cf8cb72aa95',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_cellShapeFunctionGradientIntegralFlattened']]], + ['d_5fcellsvselfballsclosestatomiddofhandler_76',['d_cellsVselfBallsClosestAtomIdDofHandler',['../classdftfe_1_1force_class.html#add7fa05433d6785e467bb8c53cf17b4e',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsclosestatomiddofhandlerelectro_77',['d_cellsVselfBallsClosestAtomIdDofHandlerElectro',['../classdftfe_1_1force_class.html#a3178e3fb21db9365b63244a235b4f1a7',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsdofhandler_78',['d_cellsVselfBallsDofHandler',['../classdftfe_1_1force_class.html#aa527873cd59304c0a4d11669f44c5b04',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsdofhandlerelectro_79',['d_cellsVselfBallsDofHandlerElectro',['../classdftfe_1_1force_class.html#ad273474f96e6a2b86175d2e3d461da28',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsdofhandlerforce_80',['d_cellsVselfBallsDofHandlerForce',['../classdftfe_1_1force_class.html#a2d313d6496d1d93c0c1db8f60b89c7e9',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsdofhandlerforceelectro_81',['d_cellsVselfBallsDofHandlerForceElectro',['../classdftfe_1_1force_class.html#abc88c203973ead1430df26a842755919',1,'dftfe::forceClass']]], + ['d_5fcfinal_82',['d_cFinal',['../classdftfe_1_1_mixing_scheme.html#a7942d39e0d5c1227a6011048f52e1c1a',1,'dftfe::MixingScheme']]], + ['d_5fcharspernum_83',['d_charspernum',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a2f53e0f552908bb27ece4b68d9a765e1',1,'dftfe::dftUtils::QuadDataCompositeWrite']]], + ['d_5fclosestatombin_84',['d_closestAtomBin',['../classdftfe_1_1vself_bins_manager.html#a923bdc04447ec16c3b884b40ff2dd17a',1,'dftfe::vselfBinsManager']]], + ['d_5fclosesttriavertextoatomslocation_85',['d_closestTriaVertexToAtomsLocation',['../classdftfe_1_1dft_class.html#ac405dd269f49727c06b68cc15ce8ca4b',1,'dftfe::dftClass']]], + ['d_5fcolumnidsglobal_86',['d_columnIdsGlobal',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a5ac9a307f90e86c9bc4bcf1b5d8b8fbb',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5fcolumnidslocal_87',['d_columnIdsLocal',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a162db453c7274789b45dfb768f8f69c5',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5fcolumnvalues_88',['d_columnValues',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ad8b867d66792fb8983d22c48833e7f9e',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5fcomm_89',['d_comm',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a88a2988910178add2d1c8c0cc4baf19b',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5fconfigforcevectorlinfe_90',['d_configForceVectorLinFE',['../classdftfe_1_1force_class.html#a20a538c310d532000615930fc3ff8913',1,'dftfe::forceClass']]], + ['d_5fconfigforcevectorlinfeelectro_91',['d_configForceVectorLinFEElectro',['../classdftfe_1_1force_class.html#aa69c84603768aa3e838233f2c46cfee2',1,'dftfe::forceClass']]], + ['d_5fconjugatedirection_92',['d_conjugateDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a1e07d27c3d258364f2a3ac8fcb4a8369',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fconstraintinfo_93',['d_constraintInfo',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ae19f022564757c8f8e4dd79bf6637374',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fconstraintmatrixdata_94',['d_constraintMatrixData',['../classdftfe_1_1operator_d_f_t_class.html#af1031fe4390d8c7d4d38b31d0c485e33',1,'dftfe::operatorDFTClass']]], + ['d_5fconstraintmatrixprefinedptr_95',['d_constraintMatrixPRefinedPtr',['../classdftfe_1_1kerker_solver_problem.html#ad34a1224070c89988a951a9ed86405e5',1,'dftfe::kerkerSolverProblem']]], + ['d_5fconstraintmatrixptr_96',['d_constraintMatrixPtr',['../classdftfe_1_1poisson_solver_problem.html#a0bebde2d89f987624a1d003148517d5e',1,'dftfe::poissonSolverProblem']]], + ['d_5fconstraintsforhelmholtzrhonodal_97',['d_constraintsForHelmholtzRhoNodal',['../classdftfe_1_1dft_class.html#af4f989685151b4b24c740917bb792313',1,'dftfe::dftClass']]], + ['d_5fconstraintsfortotalpotentialelectro_98',['d_constraintsForTotalPotentialElectro',['../classdftfe_1_1dft_class.html#a4f729f40117250878d5de227cb43319e',1,'dftfe::dftClass']]], + ['d_5fconstraintsinfo_99',['d_constraintsInfo',['../classdftfe_1_1poisson_solver_problem.html#ad768657044931ff12825f612053f14d1',1,'dftfe::poissonSolverProblem']]], + ['d_5fconstraintsmovemesh_100',['d_constraintsMoveMesh',['../classdftfe_1_1mesh_movement_class.html#a09af6643c39bca76a6b71ec283468e06',1,'dftfe::meshMovementClass']]], + ['d_5fconstraintsnoneforce_101',['d_constraintsNoneForce',['../classdftfe_1_1force_class.html#a4d9c1ae847ea4b5bc575391f9a91d2d7',1,'dftfe::forceClass']]], + ['d_5fconstraintsnoneforceelectro_102',['d_constraintsNoneForceElectro',['../classdftfe_1_1force_class.html#afb6e979bbb7cc584443018dbb6d601e5',1,'dftfe::forceClass']]], + ['d_5fconstraintsonlyhanginginfo_103',['d_constraintsOnlyHangingInfo',['../classdftfe_1_1vself_bins_manager.html#afe7f09f230aec374f0a9ec2e04dbeebd',1,'dftfe::vselfBinsManager']]], + ['d_5fconstraintsprefined_104',['d_constraintsPRefined',['../classdftfe_1_1dft_class.html#ad4f13a6a780f2b9a7ce2dc905bb4ff28',1,'dftfe::dftClass']]], + ['d_5fconstraintsprefinedonlyhanging_105',['d_constraintsPRefinedOnlyHanging',['../classdftfe_1_1dft_class.html#aa04510d3405490701ecd6e803144a5f6',1,'dftfe::dftClass']]], + ['d_5fconstraintsrhonodal_106',['d_constraintsRhoNodal',['../classdftfe_1_1dft_class.html#a036e6d5c60f94e1f3609b1dffdb06e6a',1,'dftfe::dftClass']]], + ['d_5fconstraintsrhonodalinfo_107',['d_constraintsRhoNodalInfo',['../classdftfe_1_1dft_class.html#ab1467c1e1e369420a2ed2c12508e7293',1,'dftfe::dftClass']]], + ['d_5fconstraintsrhonodalonlyhanging_108',['d_constraintsRhoNodalOnlyHanging',['../classdftfe_1_1dft_class.html#ad67e8a34d8820384278307b73103abc8',1,'dftfe::dftClass']]], + ['d_5fconstraintsvector_109',['d_constraintsvector',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a6534d55a57aa23f81beff0f177b1b1f1',1,'dftfe::basis::FEBasisOperationsBase::d_constraintsVector'],['../classdftfe_1_1dft_class.html#a34425d44b78a5e85db6cdc9221ff654a',1,'dftfe::dftClass::d_constraintsVector']]], + ['d_5fconstraintsvectorelectro_110',['d_constraintsVectorElectro',['../classdftfe_1_1dft_class.html#ae2354757e4233f381acf0bd3137e1a49',1,'dftfe::dftClass']]], + ['d_5fcontiguousranges_111',['d_contiguousRanges',['../classdftfe_1_1utils_1_1_optimized_index_set.html#aac2a050921795d97ada193197f440117',1,'dftfe::utils::OptimizedIndexSet']]], + ['d_5fcontrolpointlocationscurrentmove_112',['d_controlPointLocationsCurrentMove',['../classdftfe_1_1dft_class.html#a248c272826df42abd6a3cf0a4f7e112a',1,'dftfe::dftClass']]], + ['d_5fcoordinatesfileneb_113',['d_coordinatesFileNEB',['../classdftfe_1_1nudged_elastic_band_class.html#aebea41fb0529dd4b0fdb506e801c3a8e',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fcountrelaxationflags_114',['d_countrelaxationFlags',['../classdftfe_1_1nudged_elastic_band_class.html#a38e4b9b90b4e3a9271ed478ca866decd',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fcycle_115',['d_cycle',['../classdftfe_1_1geometry_optimization_class.html#a7ded5a973ea3f134964e89fc85f251f0',1,'dftfe::geometryOptimizationClass']]], + ['d_5fdata_116',['d_data',['../classdftfe_1_1utils_1_1_memory_storage.html#a9099d9430af7f5dfb9c3ffbdead39adb',1,'dftfe::utils::MemoryStorage']]], + ['d_5fdebuglevel_117',['d_debugLevel',['../classdftfe_1_1non_linear_solver.html#a96f539da01e5c25ba4dbde71a378f2c4',1,'dftfe::nonLinearSolver']]], + ['d_5fdeformationgradient_118',['d_deformationGradient',['../classdftfe_1_1mesh_movement_affine_transform.html#a875175e0b9e6d330bb03b8d7c0a2ea37',1,'dftfe::meshMovementAffineTransform']]], + ['d_5fdeltagq_119',['d_deltaGq',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ac5763a4074a9390bae5e8fd693c90d88',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fdeltamid_120',['d_deltaMid',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#aa8b5eb8db4a2bef62b290e77ef579b62',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fdeltanew_121',['d_deltaNew',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a92100670185950b1999ef4b6440e7976',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fdeltaold_122',['d_deltaOld',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a2ee7dacce21c26cc4c4f3902612e6940',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fdeltavlidtofunctioniddetails_123',['d_deltaVlIdToFunctionIdDetails',['../classdftfe_1_1dft_class.html#a4d6a6d05861712309d25243b71c0068a',1,'dftfe::dftClass']]], + ['d_5fdeltavlsplines_124',['d_deltaVlSplines',['../classdftfe_1_1dft_class.html#a0540a8a3c981dc916b510330c744b24f',1,'dftfe::dftClass']]], + ['d_5fdeltax_125',['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_126',['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_127',['d_deltaXq',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#aef7b4034dff2b96fcfc83c015f51b833',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fdensitydofhandlerindex_128',['d_densityDofHandlerIndex',['../classdftfe_1_1dft_class.html#ab123b2eac27abcf1d8da39e18a4f1647',1,'dftfe::dftClass']]], + ['d_5fdensitydofhandlerindexelectro_129',['d_densityDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a279bb23fb861a95446408445e81d8f2f',1,'dftfe::dftClass']]], + ['d_5fdensitygaussquadshapefunctiongradientvalues_130',['d_densityGaussQuadShapeFunctionGradientValues',['../classdftfe_1_1operator_d_f_t_class.html#a7f1d0bea13e4444f85d4a58c5652c95a',1,'dftfe::operatorDFTClass']]], + ['d_5fdensitygaussquadshapefunctionvalues_131',['d_densityGaussQuadShapeFunctionValues',['../classdftfe_1_1operator_d_f_t_class.html#acfbe644f2ac878e17dde13988b32a33e',1,'dftfe::operatorDFTClass']]], + ['d_5fdensityglquadshapefunctionvalues_132',['d_densityGlQuadShapeFunctionValues',['../classdftfe_1_1operator_d_f_t_class.html#a48ca6c2156017410aee4ff627ddec6bf',1,'dftfe::operatorDFTClass']]], + ['d_5fdensitymatderfermienergy_133',['d_densityMatDerFermiEnergy',['../classdftfe_1_1dft_class.html#ab6b3ca0b4225aa042e36140c05aaab50',1,'dftfe::dftClass']]], + ['d_5fdensityquadratureid_134',['d_densityQuadratureId',['../classdftfe_1_1dft_class.html#a8ebe07bab6cb462db74fd9e7edb42c86',1,'dftfe::dftClass']]], + ['d_5fdensityquadratureidelectro_135',['d_densityQuadratureIdElectro',['../classdftfe_1_1dft_class.html#a025a28a9812fe09b9e0b9e2072c50723',1,'dftfe::dftClass']]], + ['d_5fderexcwithsigmatimesgradrhojxw_136',['d_derExcWithSigmaTimesGradRhoJxW',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a90bac357b1e58ce971bc35f031081a02',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fderexcwithsigmatimesgradrhojxwdevice_137',['d_derExcWithSigmaTimesGradRhoJxWDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ac0f7de5f74caac619f60cc67f166d6a8',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fdeviceblashandle_138',['d_deviceBlasHandle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1083e40eb7cc33c2d4854e33356a0970',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fdeviceflattenedarraymacrocelllocalprocindexidmapflattened_139',['d_DeviceFlattenedArrayMacroCellLocalProcIndexIdMapFlattened',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a2d845eb8bc57cfba455cc3d686c96d2e',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fdftfebaseptr_140',['d_dftfeBasePtr',['../classdftfe_1_1dftfe_wrapper.html#acfe9bd2d593a1dd8b0641a589a204eac',1,'dftfe::dftfeWrapper']]], + ['d_5fdftfeparamsptr_141',['d_dftfeParamsPtr',['../classdftfe_1_1dftfe_wrapper.html#abe5abb0c86996fafaf648e44e0c6cb9d',1,'dftfe::dftfeWrapper']]], + ['d_5fdftfescratchfoldername_142',['d_dftfeScratchFolderName',['../classdftfe_1_1dft_class.html#a239dbdb2d2fd24a1654b1992694a24eb',1,'dftfe::dftClass']]], + ['d_5fdftfewrapper_143',['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_144',['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#a528c6b7bd21854a1288211024180bd15',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_145',['d_dftParamsPtr',['../classdftfe_1_1dft_class.html#a0d446a3982fa796f8dfb6df9e437c066',1,'dftfe::dftClass']]], + ['d_5fdftptr_146',['d_dftptr',['../classdftfe_1_1geometry_optimization_class.html#af69c46d30156aedc53c40bb2a8da9d8f',1,'dftfe::geometryOptimizationClass::d_dftPtr'],['../classdftfe_1_1nudged_elastic_band_class.html#a23d6ebb90e7de9fdf3dc1b826d610fd6',1,'dftfe::nudgedElasticBandClass::d_dftPtr'],['../classdftfe_1_1molecular_dynamics_class.html#a33dacfa4869efa446126f7ebfcbfee52',1,'dftfe::molecularDynamicsClass::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']]], + ['d_5fdiagonala_147',['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_5fdispclosesttriaverticestoatoms_148',['d_dispClosestTriaVerticesToAtoms',['../classdftfe_1_1dft_class.html#aa0a699fd0b6c42ea9f8f47ebd274e1fd',1,'dftfe::dftClass']]], + ['d_5fdispersioncorr_149',['d_dispersionCorr',['../classdftfe_1_1dft_class.html#a88c27fa52ba22ee6974a4156296ff99b',1,'dftfe::dftClass']]], + ['d_5fdofclosestchargelocationmap_150',['d_dofClosestChargeLocationMap',['../classdftfe_1_1vself_bins_manager.html#af97a02ff3063f6af077f651c8c5f55f0',1,'dftfe::vselfBinsManager']]], + ['d_5fdofhandlerforce_151',['d_dofHandlerForce',['../classdftfe_1_1force_class.html#a79e0e5fb55e6c299ab226dcd3e09072d',1,'dftfe::forceClass']]], + ['d_5fdofhandlerforceelectro_152',['d_dofHandlerForceElectro',['../classdftfe_1_1force_class.html#aada0ce6ab28906279dc25e85d50dee0b',1,'dftfe::forceClass']]], + ['d_5fdofhandlerid_153',['d_dofHandlerID',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ae7dfa2ffda6931f6d160aba6358fb98c',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fdofhandlermovemesh_154',['d_dofHandlerMoveMesh',['../classdftfe_1_1mesh_movement_class.html#a7741e2b93dd558e3aa8fa9d0ec98c316',1,'dftfe::meshMovementClass']]], + ['d_5fdofhandlerprefined_155',['d_dofHandlerPRefined',['../classdftfe_1_1dft_class.html#a72de7c0e7739bf9290b809f5fe5f149e',1,'dftfe::dftClass']]], + ['d_5fdofhandlerprefinedptr_156',['d_dofHandlerPRefinedPtr',['../classdftfe_1_1kerker_solver_problem.html#ac94909b7a89cd20dea56fed886657397',1,'dftfe::kerkerSolverProblem']]], + ['d_5fdofhandlerrhonodal_157',['d_dofHandlerRhoNodal',['../classdftfe_1_1dft_class.html#afcfa527a6899abc341edf39bcac8787c',1,'dftfe::dftClass']]], + ['d_5fdomainboundingvectors_158',['d_domainboundingvectors',['../classdftfe_1_1dft_class.html#a3f0c591895ebc0c4bdd6f0b1a019245a',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_159',['d_domainLength',['../classdftfe_1_1molecular_dynamics_class.html#a8ed8e5904bab49712d3e674a2a5aa25e',1,'dftfe::molecularDynamicsClass']]], + ['d_5fdomainvectorsfileneb_160',['d_domainVectorsFileNEB',['../classdftfe_1_1nudged_elastic_band_class.html#a7079ad9d44cb663380f1756ee34486f6',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fdomainvolume_161',['d_domainVolume',['../classdftfe_1_1dft_class.html#a2293254777ed0c4fdaf0927fe4fa4263',1,'dftfe::dftClass']]], + ['d_5fdomainvolumeinitial_162',['d_domainVolumeInitial',['../classdftfe_1_1geo_opt_cell.html#a12dbbce9ea2824adefec883a36ec786c',1,'dftfe::geoOptCell']]], + ['d_5feigendofhandlerindex_163',['d_eigenDofHandlerIndex',['../classdftfe_1_1dft_class.html#a38b5f0134d7c6297dc5ae9b128e15eab',1,'dftfe::dftClass']]], + ['d_5feigenvectorsdensitymatrixprimehost_164',['d_eigenVectorsDensityMatrixPrimeHost',['../classdftfe_1_1dft_class.html#a49178c8b37a6fe0cb1bf6497324b67d2',1,'dftfe::dftClass']]], + ['d_5feigenvectorsflattenedhost_165',['d_eigenVectorsFlattenedHost',['../classdftfe_1_1dft_class.html#afd0cebe99d7dbe1802c0846a87c03c7c',1,'dftfe::dftClass']]], + ['d_5feigenvectorsrotfracdensityflattenedhost_166',['d_eigenVectorsRotFracDensityFlattenedHost',['../classdftfe_1_1dft_class.html#abbc54c22b348536323912f9892a32634',1,'dftfe::dftClass']]], + ['d_5felementhamiltonianmatriximag_167',['d_elementHamiltonianMatrixImag',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a645075b80fe0776ac97f78537d1ffc52',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5felementidsinatomcompactsupport_168',['d_elementIdsInAtomCompactSupport',['../classdftfe_1_1dft_class.html#a4679d436ec4b8539928d6be2942a92b5',1,'dftfe::dftClass']]], + ['d_5felementiteratorsinatomcompactsupport_169',['d_elementIteratorsInAtomCompactSupport',['../classdftfe_1_1dft_class.html#ac82036625d213940374b9a48d8b95365',1,'dftfe::dftClass']]], + ['d_5felementonefielditeratorsinatomcompactsupport_170',['d_elementOneFieldIteratorsInAtomCompactSupport',['../classdftfe_1_1dft_class.html#a4308a6fc4a65fe200cc1e11b5a233100',1,'dftfe::dftClass']]], + ['d_5felpaautotunehandle_171',['d_elpaAutoTuneHandle',['../classdftfe_1_1elpa_scala_manager.html#aa9869e548886c095212f38a6018220eb',1,'dftfe::elpaScalaManager']]], + ['d_5felpahandle_172',['d_elpaHandle',['../classdftfe_1_1elpa_scala_manager.html#a3b9c25fbce1c79e0f9574b280d73b370',1,'dftfe::elpaScalaManager']]], + ['d_5felpahandlepartialeigenvec_173',['d_elpaHandlePartialEigenVec',['../classdftfe_1_1elpa_scala_manager.html#a6468feddead89df77bd7488cbf459d22',1,'dftfe::elpaScalaManager']]], + ['d_5felpascala_174',['d_elpaScala',['../classdftfe_1_1dft_class.html#a16e4a642199f6887a5699b60a85efbf2',1,'dftfe::dftClass']]], + ['d_5fenergydispersion_175',['d_energyDispersion',['../classdftfe_1_1dispersion_correction.html#a4be5e12dbd849702578ea1ca5d91f8cc',1,'dftfe::dispersionCorrection']]], + ['d_5fentropicenergy_176',['d_entropicEnergy',['../classdftfe_1_1dft_class.html#a0a930bc0397ddd7ed6de3035d411be04',1,'dftfe::dftClass']]], + ['d_5feta_177',['d_eta',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a75443c183389a12a699ff6ef877104c7',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fetaalphazerochk_178',['d_etaAlphaZeroChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a199816c55b7c868101570a2de47ac09d',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fetachk_179',['d_etaChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a2f0125f79752692319953f719bac2c8d',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fetapchk_180',['d_etaPChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad9872f6748abe451b429876608c5b7bc',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fexcdensityobjptr_181',['d_excDensityObjPtr',['../classdftfe_1_1exc_manager.html#a0373d0ec7f9264f7bdd09accd83a927d',1,'dftfe::excManager']]], + ['d_5fexcmanagerptr_182',['d_excManagerPtr',['../classdftfe_1_1dft_class.html#a350c5c338fbf012b155d7b9aa08888bc',1,'dftfe::dftClass']]], + ['d_5fexcwavefunctionobjptr_183',['d_excWavefunctionObjPtr',['../classdftfe_1_1exc_manager.html#a3b91244f66e77473a0c459429cb72eca',1,'dftfe::excManager']]], + ['d_5fexternalforceonatom_184',['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_5fexternalpotcorrquadratureid_185',['d_externalpotcorrquadratureid',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a0c39f446f3deea77cd8562f9fa463cc4',1,'dftfe::kohnShamDFTOperatorClass::d_externalPotCorrQuadratureId'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#af9b82d66ec2bdd75560a0bfa4fe580e1',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_externalPotCorrQuadratureId']]], + ['d_5fextrapdensity_5ft0_186',['d_extrapDensity_t0',['../classdftfe_1_1molecular_dynamics_class.html#a8bde636796b49365cdc3a215ddfdb9c2',1,'dftfe::molecularDynamicsClass']]], + ['d_5fextrapdensity_5ftmin1_187',['d_extrapDensity_tmin1',['../classdftfe_1_1molecular_dynamics_class.html#a37316e763f3c708d775a7432040c6575',1,'dftfe::molecularDynamicsClass']]], + ['d_5fextrapdensity_5ftmin2_188',['d_extrapDensity_tmin2',['../classdftfe_1_1molecular_dynamics_class.html#a8ada6a69d199ad492f72448696d26c28',1,'dftfe::molecularDynamicsClass']]], + ['d_5fextrapdensity_5ftp1_189',['d_extrapDensity_tp1',['../classdftfe_1_1molecular_dynamics_class.html#a657743da1abca53b39457e5143ea0262',1,'dftfe::molecularDynamicsClass']]], + ['d_5ffamilytype_190',['d_familyType',['../classdftfe_1_1exc_density_base_class.html#ad216c19787dbf919828579db6c22147f',1,'dftfe::excDensityBaseClass']]], + ['d_5ffeorder_191',['d_FEOrder',['../classdftfe_1_1triangulation_manager.html#a46a63ae6926ead6c1705e070fae8d2d3',1,'dftfe::triangulationManager']]], + ['d_5fflattenedarraycelllocalprocindexidflattenedmapnonlocal_192',['d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocal',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a481916b5693cec36e38373be25a62cb7',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fflattenedarraycelllocalprocindexidflattenedmapnonlocaldevice_193',['d_flattenedArrayCellLocalProcIndexIdFlattenedMapNonLocalDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9f67be8f7ced7426dc4b096bd980b8b2',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fflattenedarraycelllocalprocindexidmap_194',['d_flattenedarraycelllocalprocindexidmap',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ac6149044e2a10e04a66e3f4922773120',1,'dftfe::kohnShamDFTOperatorClass::d_flattenedArrayCellLocalProcIndexIdMap'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a96da7dd084b755f89f4aea5bc884cec2',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_flattenedArrayCellLocalProcIndexIdMap']]], + ['d_5fflattenedarraymacrocelllocalprocindexidmap_195',['d_flattenedArrayMacroCellLocalProcIndexIdMap',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a704d3ac6520225a73b726d9e17c7005d',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fflattenedarraymacrocelllocalprocindexidmapflattened_196',['d_flattenedArrayMacroCellLocalProcIndexIdMapFlattened',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a21b23fc16fa39e0a2eec90097b1929de',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fflattenedcelldofindextoprocessdofindexmap_197',['d_flattenedCellDofIndexToProcessDofIndexMap',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a866b7e436e073f86acf90df8ce8344d9',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fflattenedlocalghostindices_198',['d_flattenedLocalGhostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a7b63b985635c654ff1854e3a6269b11d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fflattenedlocaltargetindices_199',['d_flattenedLocalTargetIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a337d4240b8dda304237f4ca0e5a2f48e',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fflattopwidthsautomeshmove_200',['d_flatTopWidthsAutoMeshMove',['../classdftfe_1_1dft_class.html#ad180884489dae65ba9446be8d0ff8945',1,'dftfe::dftClass']]], + ['d_5fforceatomsfloating_201',['d_forceAtomsFloating',['../classdftfe_1_1force_class.html#af4f2f40dbc9f7f98bfa9f337254476de',1,'dftfe::forceClass']]], + ['d_5fforcedispersion_202',['d_forceDispersion',['../classdftfe_1_1dispersion_correction.html#a3fdc1b5970428d99496cf74f76c2ddac',1,'dftfe::dispersionCorrection']]], + ['d_5fforcedofhandlerindex_203',['d_forcedofhandlerindex',['../classdftfe_1_1dft_class.html#ab513cb03a382852842b4e685c8174658',1,'dftfe::dftClass::d_forceDofHandlerIndex'],['../classdftfe_1_1force_class.html#aced4fe44a01000c69f0599ade1b237c4',1,'dftfe::forceClass::d_forceDofHandlerIndex']]], + ['d_5fforcedofhandlerindexelectro_204',['d_forcedofhandlerindexelectro',['../classdftfe_1_1dft_class.html#aa94dee657f3393d506710aa80e3aeda3',1,'dftfe::dftClass::d_forceDofHandlerIndexElectro'],['../classdftfe_1_1force_class.html#a7f5511e9b464d04abd16c62a0d445bef',1,'dftfe::forceClass::d_forceDofHandlerIndexElectro']]], + ['d_5ffreeenergy_205',['d_freeEnergy',['../classdftfe_1_1dft_class.html#a67f9c60516c7dc46ce8fef363257738d',1,'dftfe::dftClass']]], + ['d_5ffreeenergyinitial_206',['d_freeEnergyInitial',['../classdftfe_1_1dft_class.html#a55b92e903eed1eb7e5235837c116b576',1,'dftfe::dftClass']]], + ['d_5ffullflattenedarraycelllocalprocindexidmap_207',['d_FullflattenedArrayCellLocalProcIndexIdMap',['../classdftfe_1_1operator_d_f_t_class.html#a4d09c4e3610f848606254e89a3da663c',1,'dftfe::operatorDFTClass']]], + ['d_5ffullflattenedarraymacrocelllocalprocindexidmap_208',['d_FullflattenedArrayMacroCellLocalProcIndexIdMap',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a4db0dc1f7f5b321f7ed3fabe671f146e',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5ffunccptr_209',['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_210',['d_functionalValueAfterAlphUpdateChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a4a9a3d7790de5e021ebed763d18860c6',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5ffunctionvaluechk_211',['d_functionValueChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a1f96a445239776cfffdba6ec989726ab',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5ffuncxptr_212',['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_213',['d_fvcontainerVals',['../classdftfe_1_1dft_class.html#a80d7d38d4f266d21a0515e425397f05c',1,'dftfe::dftClass']]], + ['d_5ffvspin0containervals_214',['d_fvSpin0containerVals',['../classdftfe_1_1dft_class.html#a7ce6d8d25fa1cc102632260290333a95',1,'dftfe::dftClass']]], + ['d_5ffvspin1containervals_215',['d_fvSpin1containerVals',['../classdftfe_1_1dft_class.html#ab5c78caaf88fe1e02ef29f7705ad2c07',1,'dftfe::dftClass']]], + ['d_5fgamma_216',['d_gamma',['../classdftfe_1_1kerker_solver_problem.html#ac770e9465e5a9e6ac0aaacf4ebb79fe6',1,'dftfe::kerkerSolverProblem']]], + ['d_5fgaussianconstantsautomesh_217',['d_gaussianConstantsAutoMesh',['../classdftfe_1_1dft_class.html#a4fccb0d84e5d80bc068bfe9f2abdab24',1,'dftfe::dftClass']]], + ['d_5fgaussianconstantsforce_218',['d_gaussianConstantsForce',['../classdftfe_1_1dft_class.html#a6f7be080b4f5d1c334ea1017759de49e',1,'dftfe::dftClass']]], + ['d_5fgaussianmovementatomsnetdisplacements_219',['d_gaussianMovementAtomsNetDisplacements',['../classdftfe_1_1dft_class.html#ad95fdfe41c82abe9fd4a3257b309b244',1,'dftfe::dftClass']]], + ['d_5fgaussianmovepar_220',['d_gaussianMovePar',['../classdftfe_1_1dft_class.html#a785f450ab5f1f35e01851906696ddf64',1,'dftfe::dftClass']]], + ['d_5fgaussianweightsvecatoms_221',['d_gaussianWeightsVecAtoms',['../classdftfe_1_1force_class.html#a74d10cf8a775795fa4c76d381bdd2ea4',1,'dftfe::forceClass']]], + ['d_5fgeneratorflattopwidths_222',['d_generatorFlatTopWidths',['../classdftfe_1_1dft_class.html#ac012a918204be3b06272f68df14a25d4',1,'dftfe::dftClass']]], + ['d_5fgeooptcellptr_223',['d_geoOptCellPtr',['../classdftfe_1_1geometry_optimization_class.html#aa2a0b2dc0b2a9a0d174e02103bbcc938',1,'dftfe::geometryOptimizationClass']]], + ['d_5fgeooptionptr_224',['d_geoOptIonPtr',['../classdftfe_1_1geometry_optimization_class.html#aee795c99093b17544f4a01988ed8094d',1,'dftfe::geometryOptimizationClass']]], + ['d_5fghostindices_225',['d_ghostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#abbcf5235cccbcf54a141af1ee76b5e33',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fghostindicesoptimizedindexset_226',['d_ghostIndicesOptimizedIndexSet',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a3445a9a657fb1fc1c2ef508c549eb116',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fghostindicessetstl_227',['d_ghostIndicesSetSTL',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a51ea76e1a0c02cbfe11a885cf7f62b58',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fghostprocids_228',['d_ghostProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ac06633929a7d7e1b456f9086533c4039',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fghostprojectoridscurrentprocess_229',['d_ghostProjectorIdsCurrentProcess',['../classdftfe_1_1dft_class.html#a39f5830bc1fc0ce7ea99ab9b270aeb6f',1,'dftfe::dftClass']]], + ['d_5fghostsize_230',['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_5fgllquadratureid_231',['d_gllQuadratureId',['../classdftfe_1_1dft_class.html#ab6e162faaa3bbf79f3771e8accbc8c12',1,'dftfe::dftClass']]], + ['d_5fglobalarrayclassificationmap_232',['d_globalArrayClassificationMap',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#afa58140be3383614673a4dae186552b7',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fglobalatomsforces_233',['d_globalAtomsForces',['../classdftfe_1_1force_class.html#ac4ed1fe1d6475ae68b0f4ec805b28947',1,'dftfe::forceClass']]], + ['d_5fglobalchargeidtoimageidmap_234',['d_globalChargeIdToImageIdMap',['../classdftfe_1_1dft_class.html#ad228594e1c005fef41497ccdc82aa711',1,'dftfe::dftClass']]], + ['d_5fglobalchargeidtoimageidmaptrunc_235',['d_globalChargeIdToImageIdMapTrunc',['../classdftfe_1_1dft_class.html#a2333206443691eb0ca1089dba3e6ad9d',1,'dftfe::dftClass']]], + ['d_5fglobalsize_236',['d_globalSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ad492e621daee826eb4a2958007784461',1,'dftfe::linearAlgebra::MultiVector']]], + ['d_5fglobaltimer_237',['d_globalTimer',['../classdftfe_1_1dft_class.html#afc16d3517e43beb8fd938acf5b34255c',1,'dftfe::dftClass']]], + ['d_5fgradbquadvaluesallatoms_238',['d_gradbQuadValuesAllAtoms',['../classdftfe_1_1dft_class.html#a98e9df40f4494218a8ed5e80a4e5734d',1,'dftfe::dftClass']]], + ['d_5fgradient_239',['d_gradient',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af0f57d0bce993e73c58b7c64093f1ead',1,'dftfe::BFGSNonLinearSolver::d_gradient'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a7c5d486398e0716ca74522b1816f5030',1,'dftfe::LBFGSNonLinearSolver::d_gradient'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad53a9cda238ee0d2d8cf69051e9163dc',1,'dftfe::cgPRPNonLinearSolver::d_gradient']]], + ['d_5fgradientnew_240',['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_241',['d_gradMax',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a19e32314d9a5b17267e5d5aef39c7f9d',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fgradrhoatomsvalues_242',['d_gradRhoAtomsValues',['../classdftfe_1_1dft_class.html#a0c30328710e0050bc9910eb43a4b8ff5',1,'dftfe::dftClass']]], + ['d_5fgradrhoatomsvaluesseparate_243',['d_gradRhoAtomsValuesSeparate',['../classdftfe_1_1dft_class.html#a82e5db9f52d27d2b1f5e385df16c1304',1,'dftfe::dftClass']]], + ['d_5fgradrhocore_244',['d_gradRhoCore',['../classdftfe_1_1dft_class.html#aaf2604905c5e36f672ad3834e3078a35',1,'dftfe::dftClass']]], + ['d_5fgradrhocoreatoms_245',['d_gradRhoCoreAtoms',['../classdftfe_1_1dft_class.html#a3b605c76244d0f8ece49d4755063d38a',1,'dftfe::dftClass']]], + ['d_5fgradrhoinvalueslpspquad_246',['d_gradRhoInValuesLpspQuad',['../classdftfe_1_1dft_class.html#a94f00ff86c0104f3a2a3c426cf4185ed',1,'dftfe::dftClass']]], + ['d_5fgradrhooutvalueslpspquad_247',['d_gradRhoOutValuesLpspQuad',['../classdftfe_1_1dft_class.html#a65546a404394312713b68c47b4e3d815',1,'dftfe::dftClass']]], + ['d_5fgroundstatedensityhistory_248',['d_groundStateDensityHistory',['../classdftfe_1_1dft_class.html#a45e54b7566249fef7d82a20da3de4dda',1,'dftfe::dftClass']]], + ['d_5fgroundstateenergy_249',['d_groundStateEnergy',['../classdftfe_1_1dft_class.html#a172607f2c1339cb5ce18ce1ef612b745',1,'dftfe::dftClass']]], + ['d_5fhelmholtzdofhandlerindexelectro_250',['d_helmholtzDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a306edf06c30cf27debe0f91832ba8125',1,'dftfe::dftClass']]], + ['d_5fhessian_251',['d_hessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#aeb1227cca7dfda527559169a7b8a11dc',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fhessianrhoatomsvalues_252',['d_hessianRhoAtomsValues',['../classdftfe_1_1dft_class.html#a10928d0ffc8ffa7a55230d96cadd14ab',1,'dftfe::dftClass']]], + ['d_5fhessianrhoatomsvaluesseparate_253',['d_hessianRhoAtomsValuesSeparate',['../classdftfe_1_1dft_class.html#a7452ec1aae4aee00f700e81f1379a4f8',1,'dftfe::dftClass']]], + ['d_5fhessianrhocore_254',['d_hessianRhoCore',['../classdftfe_1_1dft_class.html#a2df311e03e4882ee916e70328d003178',1,'dftfe::dftClass']]], + ['d_5fhessianrhocoreatoms_255',['d_hessianRhoCoreAtoms',['../classdftfe_1_1dft_class.html#a03403b316c7d405cdfbb5f2a7e1bab45',1,'dftfe::dftClass']]], + ['d_5fhessianscaled_256',['d_hessianScaled',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ae8b2eabdf6b4c3de9e676cd0dc8d5563',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fij_257',['d_ij',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#af2553382a4aaef1211439d5100e10e90',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['d_5fimageatompositions_258',['d_imageAtomPositions',['../classdftfe_1_1triangulation_manager.html#ad8d8dd15417c5dec2f6e63ca316268ae',1,'dftfe::triangulationManager']]], + ['d_5fimagecharges_259',['d_imageCharges',['../classdftfe_1_1dft_class.html#aa462caec90de98958355d9bcdb80f768',1,'dftfe::dftClass']]], + ['d_5fimagechargestrunc_260',['d_imageChargesTrunc',['../classdftfe_1_1dft_class.html#aec340b1c6248e10cec79f29f3556b6c8',1,'dftfe::dftClass']]], + ['d_5fimageerror_261',['d_ImageError',['../classdftfe_1_1nudged_elastic_band_class.html#a962c6bfb54d7d3a789010cfae0141134',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fimagefreeze_262',['d_imageFreeze',['../classdftfe_1_1nudged_elastic_band_class.html#abe6ef3969fd3e7dbf4045432b272b53a',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fimageids_263',['d_imageids',['../classdftfe_1_1dft_class.html#a97d0c613ba0e538f0888ceea207f2f78',1,'dftfe::dftClass::d_imageIds'],['../classdftfe_1_1triangulation_manager.html#a13ef0f0ec4ac277f48e58e1727354d1d',1,'dftfe::triangulationManager::d_imageIds']]], + ['d_5fimageidstrunc_264',['d_imageIdsTrunc',['../classdftfe_1_1dft_class.html#a84ef6c510abbcc95e9e5c0eacb6a4f5a',1,'dftfe::dftClass']]], + ['d_5fimagepositions_265',['d_imagePositions',['../classdftfe_1_1dft_class.html#ab77c3162cba7b4461942ec17727812a6',1,'dftfe::dftClass']]], + ['d_5fimagepositionsautomesh_266',['d_imagePositionsAutoMesh',['../classdftfe_1_1dft_class.html#af2f41dce86d8b75dfcf19bc55fda00c9',1,'dftfe::dftClass']]], + ['d_5fimagepositionstrunc_267',['d_imagePositionsTrunc',['../classdftfe_1_1dft_class.html#a6f31ef89c05cf6629c27d69cfa292295',1,'dftfe::dftClass']]], + ['d_5fincrementaldisplacement_268',['d_incrementalDisplacement',['../classdftfe_1_1mesh_movement_class.html#a0b26796ff4b8c0273f9e7031a3193b54',1,'dftfe::meshMovementClass']]], + ['d_5findexmapfrompaddednonlocalvectoparallelnonlocalvec_269',['d_indexMapFromPaddedNonLocalVecToParallelNonLocalVec',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a223b54493c20ff5d9eb37f3bd4754b19',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5findexmapfrompaddednonlocalvectoparallelnonlocalvecdevice_270',['d_indexMapFromPaddedNonLocalVecToParallelNonLocalVecDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#afdbc45e2e142970aba8be5ccb50bc5aa',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5finhomogenities_271',['d_inhomogenities',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#aa6b6125cf2d8df946e76f9253d8b4b4e',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5finversejacobianbasisdata_272',['d_inverseJacobianBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ac21389bb79b8892ace9bd63363adc99f',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5finversejacobiandata_273',['d_inverseJacobianData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aa60d563ef7a8eac6040e66655f4c1fcb',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5finversejacobiansnlp_274',['d_inverseJacobiansNLP',['../classdftfe_1_1operator_d_f_t_class.html#a19fd803ca85911fdca229c9e2f87c0b8',1,'dftfe::operatorDFTClass']]], + ['d_5finvjacderexcwithsigmatimesgradrhojxw_275',['d_invJacderExcWithSigmaTimesGradRhoJxW',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aba368aea35657eaf44fa39a7c638e752',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5finvjackpointtimesjxw_276',['d_invJacKPointTimesJxW',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae22806ca4e65458763fb70de7aa0f53c',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5finvsqrtmassvector_277',['d_invsqrtmassvector',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a756a293f4b47dc35976a4c65f0f6c8ee',1,'dftfe::kohnShamDFTOperatorClass::d_invSqrtMassVector'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a98f9cb6bd46d01dac9c87d89d72819a6',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_invSqrtMassVector'],['../classdftfe_1_1operator_d_f_t_class.html#ae3b349978397301e6de9a6f87c5e2517',1,'dftfe::operatorDFTClass::d_invSqrtMassVector']]], + ['d_5finvsqrtmassvectordevice_278',['d_invSqrtMassVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a720d33e20daa242d24ff9ae1e15ac01a',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fionrelaxflagsfile_279',['d_ionRelaxFlagsFile',['../classdftfe_1_1nudged_elastic_band_class.html#ab7936651f089adf79d6e669b2f6e8a2f',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fisatomsgaussiandisplacementsreadfromfile_280',['d_isAtomsGaussianDisplacementsReadFromFile',['../classdftfe_1_1dft_class.html#a0ee7686f93b812bc00013f0dc1553486',1,'dftfe::dftClass']]], + ['d_5fiscgrestartduetolargeincrement_281',['d_isCGRestartDueToLargeIncrement',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#abe84a79c9cd09527fa5ec9e55f180ed2',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fiscurvatureonlylinesearchstoppingcondition_282',['d_iscurvatureonlylinesearchstoppingcondition',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af45e762c2c0ba0d2f9f949e4dd16e933',1,'dftfe::BFGSNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad74170653511af8302966b8a157f443f',1,'dftfe::LBFGSNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a93a473fa34cd529ee78531857241369f',1,'dftfe::cgPRPNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition']]], + ['d_5fisdevicetompitaskbindingsetinternally_283',['d_isDeviceToMPITaskBindingSetInternally',['../classdftfe_1_1dftfe_wrapper.html#af16d96e8b2ed6fef3a74c3ae8efe8fe5',1,'dftfe::dftfeWrapper']]], + ['d_5fisfastconstraintsinitialized_284',['d_isFastConstraintsInitialized',['../classdftfe_1_1poisson_solver_problem.html#a1bcb5a0b762691c3fe701a159516a914',1,'dftfe::poissonSolverProblem']]], + ['d_5fisfirstfilteringcall_285',['d_isFirstFilteringCall',['../classdftfe_1_1dft_class.html#a9bfecfec7c31cc054ae5a538e41552e4',1,'dftfe::dftClass']]], + ['d_5fisgradsmearedchargerhs_286',['d_isGradSmearedChargeRhs',['../classdftfe_1_1poisson_solver_problem.html#ae1d7d5d864f8ea8f7d8be4b31cc3febe',1,'dftfe::poissonSolverProblem']]], + ['d_5fismalloccalled_287',['d_isMallocCalled',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a4b047c6a3b3465d4af1dfe2f77edc49c',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fismeanvalueconstraintcomputed_288',['d_isMeanValueConstraintComputed',['../classdftfe_1_1poisson_solver_problem.html#aa15288b47a579269d5cd69d78742b089',1,'dftfe::poissonSolverProblem']]], + ['d_5fisparallelmesh_289',['d_isParallelMesh',['../classdftfe_1_1mesh_movement_class.html#a875c0410f0da9f9b9aa7ce14ef21653d',1,'dftfe::meshMovementClass']]], + ['d_5fisreset_290',['d_isReset',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ac47fa73a5e7b24cabecaaa33d327856b',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fisrestart_291',['d_isrestart',['../classdftfe_1_1geometry_optimization_class.html#a8217db24c89ff2578923e29340cc4084',1,'dftfe::geometryOptimizationClass::d_isRestart'],['../classdftfe_1_1nudged_elastic_band_class.html#ab68f815c98b88a920b18faca4835f2f0',1,'dftfe::nudgedElasticBandClass::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']]], + ['d_5fisrestartgroundstatecalcfromchk_292',['d_isRestartGroundStateCalcFromChk',['../classdftfe_1_1dft_class.html#ae4671985384a091cdb9ef70130fca8f4',1,'dftfe::dftClass']]], + ['d_5fisreusesmearedchargerhs_293',['d_isReuseSmearedChargeRhs',['../classdftfe_1_1poisson_solver_problem.html#ac776ac9d1cfe1542abf5570f358a1862',1,'dftfe::poissonSolverProblem']]], + ['d_5fisscfrestart_294',['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_295',['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_5fisstiffnessmatrixexternalpotcorrcomputed_296',['d_isstiffnessmatrixexternalpotcorrcomputed',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a2250d29016797ed76ec4cb865bf71309',1,'dftfe::kohnShamDFTOperatorClass::d_isStiffnessMatrixExternalPotCorrComputed'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aea8705bf4aaa7560861007f27f4f390d',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_isStiffnessMatrixExternalPotCorrComputed']]], + ['d_5fisstoresmearedchargerhs_297',['d_isStoreSmearedChargeRhs',['../classdftfe_1_1poisson_solver_problem.html#a60a7df343df3d2f3a78aa7a1f4001672',1,'dftfe::poissonSolverProblem']]], + ['d_5fiter_298',['d_iter',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a718c3bd54ee6c725299a3e9bf3dc9cf6',1,'dftfe::BFGSNonLinearSolver::d_iter'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#acc7dfc313f4fddb4d4dcf7d2f0588f43',1,'dftfe::LBFGSNonLinearSolver::d_iter'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a6b0321afee22f5656aed55945e0237c6',1,'dftfe::cgPRPNonLinearSolver::d_iter']]], + ['d_5fjxwbasisdata_299',['d_JxWBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a2652e5192b8a823e0f5a6d063fb89242',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fjxwdata_300',['d_JxWData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a4dbc4a06f0a6b3afd7e1a3df26435105',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fkmax_301',['d_kmax',['../classdftfe_1_1nudged_elastic_band_class.html#a5b41557b3143f60e07012215c0a238c7',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fkmin_302',['d_kmin',['../classdftfe_1_1nudged_elastic_band_class.html#a2a1a50bac3f5908ef4e1689c08800541',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fkohnshamdftoperatorptr_303',['d_kohnShamDFTOperatorPtr',['../classdftfe_1_1dft_class.html#a809063e7f44258cf9e0d39efc99d870b',1,'dftfe::dftClass']]], + ['d_5fkohnshamdftoperatorsinitialized_304',['d_kohnShamDFTOperatorsInitialized',['../classdftfe_1_1dft_class.html#a642f301fb9de780b420d536fb664f632',1,'dftfe::dftClass']]], + ['d_5fkpointcoordinates_305',['d_kPointCoordinates',['../classdftfe_1_1dft_class.html#a3bfa6fe26bc64f6ca3bbbae969199d42',1,'dftfe::dftClass']]], + ['d_5fkpointcoordsvecdevice_306',['d_kpointCoordsVecDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aec434df7137967357a6921f7a54cda84',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fkpointindex_307',['d_kpointindex',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aa56314c28210328e0bc09197d62b5119',1,'dftfe::kohnShamDFTOperatorClass::d_kPointIndex'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a56c138c3e5dc88fac7dac46b33de3859',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_kPointIndex']]], + ['d_5fkpointweights_308',['d_kPointWeights',['../classdftfe_1_1dft_class.html#a6bd5db5a45a00186e2e0d45538dd2719',1,'dftfe::dftClass']]], + ['d_5fksquaretimeshalfvecdevice_309',['d_kSquareTimesHalfVecDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a18a7ee376d66a7dea03091609ddf74a6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5flatticevectors_310',['d_latticeVectors',['../classdftfe_1_1dispersion_correction.html#a50a8f0425aff0f2f44774992f1c0b0ef',1,'dftfe::dispersionCorrection']]], + ['d_5flength_311',['d_Length',['../classdftfe_1_1nudged_elastic_band_class.html#acb1cb7a6d1d6576dbc5297ac6d387ac0',1,'dftfe::nudgedElasticBandClass']]], + ['d_5flinesearchdampingparameter_312',['d_lineSearchDampingParameter',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#aa9ab3ee1426bbc28ccf09d76fc45bfc8',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5flinesearchmaxiterations_313',['d_lineSearchMaxIterations',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7e22714dbd8a2aa6e7cb031850501f0e',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5flinesearchrestartiterchk_314',['d_lineSearchRestartIterChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a9239f33841bba07d23cd225069f345d1',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5flinesearchtolerance_315',['d_lineSearchTolerance',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a4546110c4fbe7f1c698592c737dde676',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5flocalghostindicesranges_316',['d_localGhostIndicesRanges',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ad47babcd45738e8339fd59fad47254b4',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5flocalindexmapunflattenedtoflattened_317',['d_localIndexMapUnflattenedToFlattened',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ac3d1ba5f64e850c14c2727c1d99fe7e7',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5flocally_5fowned_5fdofs_318',['d_locally_owned_dofs',['../classdftfe_1_1mesh_movement_class.html#a43df4250323f8df5949c6b5aa0368d5c',1,'dftfe::meshMovementClass']]], + ['d_5flocally_5fowned_5fdofsforce_319',['d_locally_owned_dofsForce',['../classdftfe_1_1force_class.html#a5a7142933a50a54a278ba1707feb02c5',1,'dftfe::forceClass']]], + ['d_5flocally_5fowned_5fdofsforceelectro_320',['d_locally_owned_dofsForceElectro',['../classdftfe_1_1force_class.html#a3ac379930e2d4e8ad21f8443d12a250a',1,'dftfe::forceClass']]], + ['d_5flocally_5frelevant_5fdofs_321',['d_locally_relevant_dofs',['../classdftfe_1_1mesh_movement_class.html#a1f6612ccd78e8842b414b05305be919b',1,'dftfe::meshMovementClass']]], + ['d_5flocally_5frelevant_5fdofsforce_322',['d_locally_relevant_dofsForce',['../classdftfe_1_1force_class.html#ae9cf618912aed993878df417cd0704ac',1,'dftfe::forceClass']]], + ['d_5flocally_5frelevant_5fdofsforceelectro_323',['d_locally_relevant_dofsForceElectro',['../classdftfe_1_1force_class.html#a460f1e3bb4b4c930f34c9a49452c5ce2',1,'dftfe::forceClass']]], + ['d_5flocallyownedprocboundarynodesvectordevice_324',['d_locallyOwnedProcBoundaryNodesVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a246dbcd85145f90a92a4c3030a08a413',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5flocallyownedprojectoridscurrentprocess_325',['d_locallyOwnedProjectorIdsCurrentProcess',['../classdftfe_1_1dft_class.html#a56f0757638b90fe0fe5bb7c0a5f01f60',1,'dftfe::dftClass']]], + ['d_5flocallyownedrange_326',['d_locallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a8ce1d236d9221c7907081c63bfea882d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5flocallyownedsize_327',['d_locallyownedsize',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a9f12e99d7cdec088b7e9c10795b4d049',1,'dftfe::basis::FEBasisOperationsBase::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_5flocallyrelevantdofsprefined_328',['d_locallyRelevantDofsPRefined',['../classdftfe_1_1dft_class.html#a35a4d17d727c3de6b7f663a5fb917e32',1,'dftfe::dftClass']]], + ['d_5flocallyrelevantdofsrhonodal_329',['d_locallyRelevantDofsRhoNodal',['../classdftfe_1_1dft_class.html#a89486e5f5a43855054abc03c806040d5',1,'dftfe::dftClass']]], + ['d_5flocalsize_330',['d_localsize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a6afa6ecf193e5843a5aa6b1ee00b1d08',1,'dftfe::linearAlgebra::MultiVector::d_localSize'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ac7d97e3b3fbcb93f63f7b137becb3e0f',1,'dftfe::basis::FEBasisOperationsBase::d_localSize']]], + ['d_5flocalvselfs_331',['d_localVselfs',['../classdftfe_1_1dft_class.html#ace13ca65510e72138ec8a0d499525881',1,'dftfe::dftClass']]], + ['d_5flowerboundunwantedspectrum_332',['d_lowerBoundUnWantedSpectrum',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a8cb760ab7fd8b527ab710f0328447195',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['d_5flowerboundwantedspectrum_333',['d_lowerBoundWantedSpectrum',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#ac30968f1172a04229462ad8e1f8c1786',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['d_5flpspquadratureid_334',['d_lpspQuadratureId',['../classdftfe_1_1dft_class.html#a011b460f904c19146b9d85312ab4b803',1,'dftfe::dftClass']]], + ['d_5flpspquadratureidelectro_335',['d_lpspQuadratureIdElectro',['../classdftfe_1_1dft_class.html#afca356bfc064e658771bcd8033493824',1,'dftfe::dftClass']]], + ['d_5fmacrocellidtonormalcellidmap_336',['d_macrocellidtonormalcellidmap',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a4cec2958c639fc6e3c121f163849ea69',1,'dftfe::kohnShamDFTOperatorClass::d_macroCellIdToNormalCellIdMap'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aba98a937cb05fde640ba997dc0ba919c',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_macroCellIdToNormalCellIdMap']]], + ['d_5fmacrocellsubcellmap_337',['d_macroCellSubCellMap',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a3930fe409eacea7ed561c26480226aa2',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fmatrix_5ffree_5fdata_338',['d_matrix_free_data',['../classdftfe_1_1operator_d_f_t_class.html#a8c8f79a4f9355bc8fb6509287884d9b2',1,'dftfe::operatorDFTClass']]], + ['d_5fmatrixfreedataprefined_339',['d_matrixFreeDataPRefined',['../classdftfe_1_1dft_class.html#a0ccaa9c8890101051876fe6e9bd8c931',1,'dftfe::dftClass']]], + ['d_5fmatrixfreedataprefinedptr_340',['d_matrixFreeDataPRefinedPtr',['../classdftfe_1_1kerker_solver_problem.html#a930ce1f10eea6aa5b1ce43a39069b16b',1,'dftfe::kerkerSolverProblem']]], + ['d_5fmatrixfreedataptr_341',['d_matrixfreedataptr',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ad26d444dc5767827624bd3ffe7fc73e5',1,'dftfe::basis::FEBasisOperationsBase::d_matrixFreeDataPtr'],['../classdftfe_1_1poisson_solver_problem.html#a8aa614c653bd31d05e6629ef3361539a',1,'dftfe::poissonSolverProblem::d_matrixFreeDataPtr']]], + ['d_5fmatrixfreequadraturecomponent_342',['d_matrixFreeQuadratureComponent',['../classdftfe_1_1kerker_solver_problem.html#ab544d2a6318a518f86da4379b7fa8a3c',1,'dftfe::kerkerSolverProblem']]], + ['d_5fmatrixfreequadraturecomponentax_343',['d_matrixFreeQuadratureComponentAX',['../classdftfe_1_1poisson_solver_problem.html#a015e7f776db9fbc999af2c484fb73240',1,'dftfe::poissonSolverProblem']]], + ['d_5fmatrixfreequadraturecomponentrhsdensity_344',['d_matrixFreeQuadratureComponentRhsDensity',['../classdftfe_1_1poisson_solver_problem.html#ac032e893676a48e03ed99e2b9ef88c70',1,'dftfe::poissonSolverProblem']]], + ['d_5fmatrixfreevectorcomponent_345',['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_346',['d_max_refinement_steps',['../classdftfe_1_1triangulation_manager.html#a9feefd6d3da3f8af09485fad39f24af3',1,'dftfe::triangulationManager']]], + ['d_5fmaximumatomforcetoberelaxed_347',['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_348',['d_maximumNEBIteration',['../classdftfe_1_1nudged_elastic_band_class.html#a53d09a3950b79e31236335be16e4bcd7',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fmaxnumberiterations_349',['d_maxNumberIterations',['../classdftfe_1_1non_linear_solver.html#ae5a39fa69e5e7a0d7e691a323d60d7c5',1,'dftfe::nonLinearSolver']]], + ['d_5fmaxnumpaststeps_350',['d_maxNumPastSteps',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#abe1666323dc47f7572ae3aba1bc7529a',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fmaxsingleatompseudowfc_351',['d_maxSingleAtomPseudoWfc',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a7ac858c5f2a761ec6fbcb362003fcf98',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fmaxsolutionincrementlinf_352',['d_maxSolutionIncrementLinf',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a3dcc22256c9459a63d2282c1b337efca',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fmaxsteplength_353',['d_maxStepLength',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afce586958619c458c9ee1eaa1f6ca9b1',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fmaxwalltime_354',['d_MaxWallTime',['../classdftfe_1_1molecular_dynamics_class.html#ab60987d5d3ad4394735b905b6b8e34ea',1,'dftfe::molecularDynamicsClass']]], + ['d_5fmdstartwalltime_355',['d_MDstartWallTime',['../classdftfe_1_1molecular_dynamics_class.html#a3f0340a036ac99035095bc36d8e41302',1,'dftfe::molecularDynamicsClass']]], + ['d_5fmeanvalueconstraintnodeid_356',['d_meanValueConstraintNodeId',['../classdftfe_1_1poisson_solver_problem.html#aa7a78180a6978150595909fd80b17793',1,'dftfe::poissonSolverProblem']]], + ['d_5fmeanvalueconstraintprocid_357',['d_meanValueConstraintProcId',['../classdftfe_1_1poisson_solver_problem.html#a6d95149e3191d1602e627fe77347c465',1,'dftfe::poissonSolverProblem']]], + ['d_5fmeanvalueconstraintvec_358',['d_meanValueConstraintVec',['../classdftfe_1_1poisson_solver_problem.html#aaffe5cee1178daa53bed85e43ffcb8bc',1,'dftfe::poissonSolverProblem']]], + ['d_5fmesh_359',['d_mesh',['../classdftfe_1_1dft_class.html#adc53d914ff8ddb59316c32568aea35a7',1,'dftfe::dftClass']]], + ['d_5fmindist_360',['d_minDist',['../classdftfe_1_1dft_class.html#a3a9f625dc122ca6291cbc96e51818ac4',1,'dftfe::dftClass']]], + ['d_5fmixinghistory_361',['d_mixingHistory',['../classdftfe_1_1_mixing_scheme.html#a74a4db0b761489bd0630acc49e99bb50',1,'dftfe::MixingScheme']]], + ['d_5fmixingparameter_362',['d_mixingParameter',['../classdftfe_1_1_mixing_scheme.html#addea341a108cef5b018816a8c845acfa',1,'dftfe::MixingScheme']]], + ['d_5fmixingscheme_363',['d_mixingScheme',['../classdftfe_1_1dft_class.html#a21889a855722c340facb2bf145385af3',1,'dftfe::dftClass']]], + ['d_5fmpi_5fcomm_5fdomain_364',['d_mpi_comm_domain',['../classdftfe_1_1_mixing_scheme.html#a176e558e0e3988b4d94ca07dab57b8c1',1,'dftfe::MixingScheme']]], + ['d_5fmpi_5fcomm_5fparent_365',['d_mpi_comm_parent',['../classdftfe_1_1dftfe_wrapper.html#ae78abac49d454592d4c731a5089d523a',1,'dftfe::dftfeWrapper']]], + ['d_5fmpi_5fcommunicator_366',['d_mpi_communicator',['../classdftfe_1_1elpa_scala_manager.html#a9cc7b6cbe08105d7b55e08e9ae2f54f4',1,'dftfe::elpaScalaManager::d_mpi_communicator'],['../classdftfe_1_1operator_d_f_t_class.html#a5c3fdca79ac7f7d217ad9e38e4476f1a',1,'dftfe::operatorDFTClass::d_mpi_communicator']]], + ['d_5fmpicomm_367',['d_mpiComm',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#adabbb8f4b98d8dee27e57109ae646176',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fmpicommparent_368',['d_mpicommparent',['../classdftfe_1_1vself_bins_manager.html#a99e67ab70d28e5e88fae92bc6cf75156',1,'dftfe::vselfBinsManager::d_mpiCommParent'],['../classdftfe_1_1triangulation_manager.html#ad0a4176cce3cd85089b0ec956ced8a6a',1,'dftfe::triangulationManager::d_mpiCommParent'],['../classdftfe_1_1symmetry_class.html#ad88ca52cce5f8ea85b630bf19def6f95',1,'dftfe::symmetryClass::d_mpiCommParent'],['../classdftfe_1_1nudged_elastic_band_class.html#ae1ea6dd0940f428b81ee77571ddeeffa',1,'dftfe::nudgedElasticBandClass::d_mpiCommParent'],['../classdftfe_1_1force_class.html#a93fe4c72b564e5880a8c6c3cabde0552',1,'dftfe::forceClass::d_mpiCommParent'],['../classdftfe_1_1molecular_dynamics_class.html#af811ba25df12b4ee5d78f60740fac47f',1,'dftfe::molecularDynamicsClass::d_mpiCommParent'],['../classdftfe_1_1mesh_movement_class.html#abb7a0c9acce31edcbdf43c4df9c613c7',1,'dftfe::meshMovementClass::d_mpiCommParent'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aa353de371b1cd7f106d02ea68b5af596',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_mpiCommParent'],['../classdftfe_1_1kerker_solver_problem.html#afcae328d1e9fe37ea230d1add707e07c',1,'dftfe::kerkerSolverProblem::d_mpiCommParent'],['../classdftfe_1_1geometry_optimization_class.html#a204f898de4b7824aa11027c018ab6076',1,'dftfe::geometryOptimizationClass::d_mpiCommParent'],['../classdftfe_1_1energy_calculator.html#a11079032ba12a67208ec91c097b8c4c5',1,'dftfe::energyCalculator::d_mpiCommParent'],['../classdftfe_1_1dft_class.html#aead41ca5fe04c60421e35b8329ffa427',1,'dftfe::dftClass::d_mpiCommParent'],['../classdftfe_1_1dealii_linear_solver.html#a841f49c1dce2cbb93a1175d588ca3e86',1,'dftfe::dealiiLinearSolver::d_mpiCommParent'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a8b5ca06477f15c51462872176b302d3b',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::d_mpiCommParent'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a1ee4068d80327d3d95890b3523f257fa',1,'dftfe::kohnShamDFTOperatorClass::d_mpiCommParent']]], + ['d_5fmpicommunicator_369',['d_mpiCommunicator',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a64c5d3e109234e1a27714491a96e2f66',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fmpicommunicatorp2p_370',['d_mpiCommunicatorP2P',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a545b7608701e51a9266e7931f3e7f171',1,'dftfe::linearAlgebra::MultiVector']]], + ['d_5fmpiintercommkpts_371',['d_mpiInterCommKpts',['../classdftfe_1_1vself_bins_manager.html#a0ba6354893119d01250c50ed95fec07a',1,'dftfe::vselfBinsManager']]], + ['d_5fmpipatternp2p_372',['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_373',['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_5fnatoms_374',['d_natoms',['../classdftfe_1_1dispersion_correction.html#a11194cfb4c6d88353d0edaf81e6d6c56',1,'dftfe::dispersionCorrection']]], + ['d_5fncells_375',['d_nCells',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ac90eff3c81f7abaa15c4c379f5c26c5d',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fndofspercell_376',['d_nDofsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a82df150a1531a5514c60f4213d3c5527',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fnearestatomdistances_377',['d_nearestatomdistances',['../classdftfe_1_1dft_class.html#a7bfced96e37ab54935262128044ee72b',1,'dftfe::dftClass::d_nearestAtomDistances'],['../classdftfe_1_1triangulation_manager.html#af10e6e70c694c568d134b544db077beb',1,'dftfe::triangulationManager::d_nearestAtomDistances']]], + ['d_5fnearestatomids_378',['d_nearestAtomIds',['../classdftfe_1_1dft_class.html#ab970f8c138fb76ad89f15d06b4eac108',1,'dftfe::dftClass']]], + ['d_5fnebimageno_379',['d_NEBImageno',['../classdftfe_1_1nudged_elastic_band_class.html#a254bee45ca7620bedbe88905cfbaea5a',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fnetfloatingdispsincelastbinsupdate_380',['d_netFloatingDispSinceLastBinsUpdate',['../classdftfe_1_1dft_class.html#af6de7f99836b5586f7d0452a6abbd0ff',1,'dftfe::dftClass']]], + ['d_5fnetfloatingdispsincelastcheckforsmearedchargeoverlaps_381',['d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps',['../classdftfe_1_1dft_class.html#a9b49b6d09d95eb167eb772bed6c4a952',1,'dftfe::dftClass']]], + ['d_5fnglobalindices_382',['d_nGlobalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a5ce017253677905b9764b9467e7b5ae5',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fninjintegral_383',['d_NiNjIntegral',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a777280eccbfdcfb145f871bd7fccba2c',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fnlpspcutoff_384',['d_nlPSPCutOff',['../classdftfe_1_1dft_class.html#ae240654b7f7a08685724d7e145815cfc',1,'dftfe::dftClass']]], + ['d_5fnlpspquadratureid_385',['d_nlpspQuadratureId',['../classdftfe_1_1dft_class.html#a32901d754147e6b075f1b5672d867868',1,'dftfe::dftClass']]], + ['d_5fnnggaptr_386',['d_NNGGAPtr',['../classdftfe_1_1exc_density_g_g_a_class.html#ac9bfea193be431af9c0d758e29328719',1,'dftfe::excDensityGGAClass']]], + ['d_5fnnldaptr_387',['d_NNLDAPtr',['../classdftfe_1_1exc_density_l_d_a_class.html#acb12cd960799bf3752fabb344da73df6',1,'dftfe::excDensityLDAClass']]], + ['d_5fnoconstraints_388',['d_noConstraints',['../classdftfe_1_1dft_class.html#a330d6e9cbaa880fa936149c0fcc954cb',1,'dftfe::dftClass']]], + ['d_5fnodespercellclassificationmap_389',['d_nodesPerCellClassificationMap',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a151201cd497fc7955ca1a9d393be8e5c',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fnohistory_390',['d_noHistory',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ae9b00b28be777d9fffde48d9747f7dd3',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fnonatomicwavefunctions_391',['d_nonAtomicWaveFunctions',['../classdftfe_1_1dft_class.html#a0193c1f35c57ff08fd163b7593187a23',1,'dftfe::dftClass']]], + ['d_5fnonlinearsolverptr_392',['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'],['../classdftfe_1_1geo_opt_cell.html#ae0bce252b6520a3cc7369f56071a87f5',1,'dftfe::geoOptCell::d_nonLinearSolverPtr']]], + ['d_5fnonlocalatomglobalchargeids_393',['d_nonLocalAtomGlobalChargeIds',['../classdftfe_1_1dft_class.html#af1dc6700bc407cba984520c99dce024f',1,'dftfe::dftClass']]], + ['d_5fnonlocalatomidsincurrentprocess_394',['d_nonLocalAtomIdsInCurrentProcess',['../classdftfe_1_1dft_class.html#a0365b4184f5438f2d39a770d867b9785',1,'dftfe::dftClass']]], + ['d_5fnonlocalatomidsinelement_395',['d_nonLocalAtomIdsInElement',['../classdftfe_1_1dft_class.html#a98337ac51c0bd2b58eb8b6edbdeb8d0e',1,'dftfe::dftClass']]], + ['d_5fnonlocalelemidtolocalelemidmap_396',['d_nonlocalElemIdToLocalElemIdMap',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a93c11864a4666416ae891674561a84c5',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fnonlocalprojectorelementmatricesconjugate_397',['d_nonLocalProjectorElementMatricesConjugate',['../classdftfe_1_1dft_class.html#a146d8f1ea6b0eec1de1d975f9d163caa',1,'dftfe::dftClass']]], + ['d_5fnonlocalprojectorelementmatricestranspose_398',['d_nonLocalProjectorElementMatricesTranspose',['../classdftfe_1_1dft_class.html#af073a726c789afb1f1c1a66a6bfba37b',1,'dftfe::dftClass']]], + ['d_5fnonlocalpseudopotentialconstants_399',['d_nonlocalpseudopotentialconstants',['../classdftfe_1_1dft_class.html#a8bd519e8595d525a5ff006293d1b85ab',1,'dftfe::dftClass::d_nonLocalPseudoPotentialConstants'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#acdcf3e4f4dc3c189ed9fe1482d349a18',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_nonLocalPseudoPotentialConstants']]], + ['d_5fnonlocalpseudopotentialconstantsdevice_400',['d_nonLocalPseudoPotentialConstantsDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a055293c48a20cf223a4826950da40e1a',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fnonlocalpsp_5fzetalmdeltavl_401',['d_nonLocalPSP_ZetalmDeltaVl',['../classdftfe_1_1dft_class.html#a879604cb4515db1af9ce9386af0d6e5f',1,'dftfe::dftClass']]], + ['d_5fnonlocalpsp_5fzetalmdeltavlproductdistimageatoms_402',['d_nonLocalPSP_zetalmDeltaVlProductDistImageAtoms',['../classdftfe_1_1dft_class.html#a59d0526ef31c37800c0febc011572b03',1,'dftfe::dftClass']]], + ['d_5fnonperiodicdensitydofhandlerindexelectro_403',['d_nonPeriodicDensityDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#ab944ddeaf27b59292d1af19911fa9229',1,'dftfe::dftClass']]], + ['d_5fnontrivialallcellspseudowfcidtoelemidmap_404',['d_nonTrivialAllCellsPseudoWfcIdToElemIdMap',['../classdftfe_1_1dft_class.html#ad742edb80355676a61675b03dc7faf12',1,'dftfe::dftClass']]], + ['d_5fnontrivialpseudowfcscellstartindexzetadeltavquads_405',['d_nonTrivialPseudoWfcsCellStartIndexZetaDeltaVQuads',['../classdftfe_1_1dft_class.html#a423144dfa73bd9cca5eb6e6d37956c45',1,'dftfe::dftClass']]], + ['d_5fnontrivialpseudowfcspercellzetadeltavquads_406',['d_nonTrivialPseudoWfcsPerCellZetaDeltaVQuads',['../classdftfe_1_1dft_class.html#a9b026ea7522e514b2a3c933565b5192f',1,'dftfe::dftClass']]], + ['d_5fnormalcellidtomacrocellidmap_407',['d_normalcellidtomacrocellidmap',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ad5868055af066e54934d881a55e32685',1,'dftfe::kohnShamDFTOperatorClass::d_normalCellIdToMacroCellIdMap'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a558b17d78a44dfd329a2a6c12417e09c',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_normalCellIdToMacroCellIdMap']]], + ['d_5fnormdeltaxnew_408',['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_409',['d_nprocs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4042ea44feb3eef4995519f8e49232a0',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnquadspercell_410',['d_nQuadsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a065b6b4db6eee92d2d728941dbf23604',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fnumbercellsaccumnonlocalatoms_411',['d_numberCellsAccumNonLocalAtoms',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a822d3a607677a93152b096d59ea24d50',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fnumbercellslocallyowned_412',['d_numberCellsLocallyOwned',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ab49e65ea6e23b499d408d469959c6e04',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fnumbercellsnonlocalatoms_413',['d_numberCellsNonLocalAtoms',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9d7c5a255e548acdded22ad1b56cc9ce',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fnumberglobalcharges_414',['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_5fnumbermacrocells_415',['d_numberMacroCells',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a2924a1d375ba575b00a256a6fd768b0c',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fnumbernodesperelement_416',['d_numbernodesperelement',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a207047ae6093f70ed94ef35a722854ba',1,'dftfe::kohnShamDFTOperatorClass::d_numberNodesPerElement'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a33df849cddcaa7fc275527c266c25f3e',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_numberNodesPerElement']]], + ['d_5fnumberofimages_417',['d_numberOfImages',['../classdftfe_1_1nudged_elastic_band_class.html#a5d6d53ead1f39d280a2c6fea6d420a04',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fnumberofsteps_418',['d_numberofSteps',['../classdftfe_1_1molecular_dynamics_class.html#ad997d731747e9324ebf4d5a69f6d5cbe',1,'dftfe::molecularDynamicsClass']]], + ['d_5fnumberpseudoatomicwavefunctions_419',['d_numberPseudoAtomicWaveFunctions',['../classdftfe_1_1dft_class.html#a697778cea6313c861dff42589807d0a0',1,'dftfe::dftClass']]], + ['d_5fnumberpseudopotentials_420',['d_numberPseudoPotentials',['../classdftfe_1_1dft_class.html#adadcbc7696ec756d1c36240f65108822',1,'dftfe::dftClass']]], + ['d_5fnumberunknowns_421',['d_numberunknowns',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a71ab9d52b4d07a23014cf4963ed3cb81',1,'dftfe::BFGSNonLinearSolver::d_numberUnknowns'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#aa6533d0ce835610dfc32d4ae1289d19f',1,'dftfe::LBFGSNonLinearSolver::d_numberUnknowns'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#af7d8a883dc0daa96af10c157d6dadb8f',1,'dftfe::cgPRPNonLinearSolver::d_numberUnknowns']]], + ['d_5fnumcontiguousranges_422',['d_numContiguousRanges',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a17de4b23bb168d8ed37ba7aeab70737c',1,'dftfe::utils::OptimizedIndexSet']]], + ['d_5fnumeigenvalues_423',['d_numEigenValues',['../classdftfe_1_1dft_class.html#a4ebfd7753bea628cfb4f5abdcc0e61ab',1,'dftfe::dftClass']]], + ['d_5fnumeigenvaluesrr_424',['d_numEigenValuesRR',['../classdftfe_1_1dft_class.html#a8411e1c376ca05833753a406e2758d74',1,'dftfe::dftClass']]], + ['d_5fnumentriesbefore_425',['d_numEntriesBefore',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a2781e7bb5a00b4070d2763faeb4bf1f6',1,'dftfe::utils::OptimizedIndexSet']]], + ['d_5fnumghostindices_426',['d_numGhostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a740ed90d1fffb4125f7525bacaa16215',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumghostindicesinghostprocs_427',['d_numGhostIndicesInGhostProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a8792c5aff7312adb801f76a2171137d8',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumghostprocs_428',['d_numGhostProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a5b47f067d5b11c867306e29219fdfc9d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumlocallyownedcells_429',['d_numLocallyOwnedCells',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aa18e8cbb939526b275ad4a1fd5a78315',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fnumlocallyownedindices_430',['d_numLocallyOwnedIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#abf8e6ac472f892abcda0f6c896070ff8',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumownedindicesfortargetprocs_431',['d_numOwnedIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ab511a6d8eff3bdea79fc1b54338c419f',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumpaststeps_432',['d_numPastSteps',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a9a7e524c7194c300fcfb6ad01ea9210d',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fnumprocessors_433',['d_numProcessors',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a9e68d7e9d19fede69f3d74090bb136de',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5fnumquadpoints_434',['d_numQuadPoints',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a5d754a5218112dd58a15449f952c98e6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fnumquadpointslpsp_435',['d_numQuadPointsLpsp',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aef415a440b3ef4011a2480f71acf1f37',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fnumtargetprocs_436',['d_numTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0f897b13e30392681614a75e08d83f1e',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumvectors_437',['d_numVectors',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a30c65fafd196ca11edc0e51e37b1a963',1,'dftfe::linearAlgebra::MultiVector']]], + ['d_5fnvectors_438',['d_nVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a49aaddbebd3af8fc5ac34ee3c5906f97',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5foptimizationsolver_439',['d_optimizationSolver',['../classdftfe_1_1nudged_elastic_band_class.html#a193e2c6433108f755fe4953ea2486052',1,'dftfe::nudgedElasticBandClass']]], + ['d_5foptimizermaxionupdatestep_440',['d_optimizermaxIonUpdateStep',['../classdftfe_1_1nudged_elastic_band_class.html#a815a698b2a662da92f259cd4c60db84b',1,'dftfe::nudgedElasticBandClass']]], + ['d_5foptimizertolerance_441',['d_optimizertolerance',['../classdftfe_1_1nudged_elastic_band_class.html#a94ff51154576b59ee71626caf881e6cb',1,'dftfe::nudgedElasticBandClass']]], + ['d_5foptmode_442',['d_optMode',['../classdftfe_1_1geometry_optimization_class.html#aec8daebd141b1c1a08b2bc4a911c03ce',1,'dftfe::geometryOptimizationClass']]], + ['d_5foutermostpointpseudopotdata_443',['d_outerMostPointPseudoPotData',['../classdftfe_1_1dft_class.html#a9faec5fc0d499b4740e8a910b787e7f0',1,'dftfe::dftClass']]], + ['d_5foutermostpointpseudoprojectordata_444',['d_outerMostPointPseudoProjectorData',['../classdftfe_1_1dft_class.html#a34d8f32395e5d6f492182549130b3d45',1,'dftfe::dftClass']]], + ['d_5foutermostpointpseudowavefunctionsdata_445',['d_outerMostPointPseudoWaveFunctionsData',['../classdftfe_1_1dft_class.html#aa7afeb66f8d1ac07e26b23ac9d7a247d',1,'dftfe::dftClass']]], + ['d_5fparalleltriacurrentrefinement_446',['d_parallelTriaCurrentRefinement',['../classdftfe_1_1triangulation_manager.html#a15ae414eb53bdbc0c6299cd93a2d50d6',1,'dftfe::triangulationManager']]], + ['d_5fparalleltriangulationmoved_447',['d_parallelTriangulationMoved',['../classdftfe_1_1triangulation_manager.html#af848e84bbbbf907e2376833985ed0c6e',1,'dftfe::triangulationManager']]], + ['d_5fparalleltriangulationunmoved_448',['d_parallelTriangulationUnmoved',['../classdftfe_1_1triangulation_manager.html#a8e378e596831bf6e65f80e7c9a4e082a',1,'dftfe::triangulationManager']]], + ['d_5fperformmpireduce_449',['d_performMPIReduce',['../classdftfe_1_1_mixing_scheme.html#ad9eeca363d6df6bd2c85e382a28c2ea5',1,'dftfe::MixingScheme']]], + ['d_5fperiodicity_5fvector_450',['d_periodicity_vector',['../classdftfe_1_1mesh_movement_class.html#a49552db7090bead1d950d34bcb953c14',1,'dftfe::meshMovementClass']]], + ['d_5fphiext_451',['d_phiExt',['../classdftfe_1_1dft_class.html#a5611bbb0a9b6d0442eadaf7389c549b1',1,'dftfe::dftClass']]], + ['d_5fphiextdofhandlerindexelectro_452',['d_phiExtDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a738830f3a616d714d8a459974e88fc86',1,'dftfe::dftClass']]], + ['d_5fphiinvalues_453',['d_phiInValues',['../classdftfe_1_1dft_class.html#adb12a604c431e1badbd5be130563c938',1,'dftfe::dftClass']]], + ['d_5fphioutvalues_454',['d_phiOutValues',['../classdftfe_1_1dft_class.html#a94443aa66a63da8d2d0023fa8592901f',1,'dftfe::dftClass']]], + ['d_5fphitotalsolverproblem_455',['d_phiTotalSolverProblem',['../classdftfe_1_1dft_class.html#abc673874973924fe994a55e6776b1094',1,'dftfe::dftClass']]], + ['d_5fphitotaxquadratureidelectro_456',['d_phiTotAXQuadratureIdElectro',['../classdftfe_1_1dft_class.html#a22931af79aaab8d61220fe4a52ff484b',1,'dftfe::dftClass']]], + ['d_5fphitotdofhandlerindexelectro_457',['d_phiTotDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a48d203177a74750d87847463ebb03486',1,'dftfe::dftClass']]], + ['d_5fphitotrhoin_458',['d_phiTotRhoIn',['../classdftfe_1_1dft_class.html#aca7eec875118c5bf018bbf73c97157b0',1,'dftfe::dftClass']]], + ['d_5fphitotrhoout_459',['d_phiTotRhoOut',['../classdftfe_1_1dft_class.html#a0ab8b29123350f5db3a3dfd109435409',1,'dftfe::dftClass']]], + ['d_5fpreconditioner_460',['d_preconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a1982c49104564b0e9a19e9dd8d012738',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fprecondresidualvector_461',['d_preCondResidualVector',['../classdftfe_1_1dft_class.html#a1ee09925f4aecc41876f8421ea298b27',1,'dftfe::dftClass']]], + ['d_5fprocessgridcommunicatoractive_462',['d_processGridCommunicatorActive',['../classdftfe_1_1elpa_scala_manager.html#afc28d83833b89cac1471761b05e1eae5',1,'dftfe::elpaScalaManager']]], + ['d_5fprocessgridcommunicatoractivepartial_463',['d_processGridCommunicatorActivePartial',['../classdftfe_1_1elpa_scala_manager.html#a8c499af7fcbffeb5e483447fe27efc87',1,'dftfe::elpaScalaManager']]], + ['d_5fprocessgriddftfewrapper_464',['d_processGridDftfeWrapper',['../classdftfe_1_1elpa_scala_manager.html#ae29d540cb029b0f916cc832505f8e874',1,'dftfe::elpaScalaManager']]], + ['d_5fprojecterkettimesflattenedvectorlocalids_465',['d_projecterKetTimesFlattenedVectorLocalIds',['../classdftfe_1_1dft_class.html#a626928bbb695dcb770a446f302c29c26',1,'dftfe::dftClass']]], + ['d_5fprojectoridsnumberingmapcurrentprocess_466',['d_projectorIdsNumberingMapCurrentProcess',['../classdftfe_1_1dft_class.html#accc6c745562954535f842804300007dd',1,'dftfe::dftClass']]], + ['d_5fprojectoridsparallelnumberingmap_467',['d_projectorIdsParallelNumberingMap',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1a2e1011891310b207b30ca23b64088d',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fprojectoridsparallelnumberingmapdevice_468',['d_projectorIdsParallelNumberingMapDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#afb256a9c06b855f152d10bf21ce55737',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fprojectorkettimesvectorallcellsdevice_469',['d_projectorKetTimesVectorAllCellsDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ae5da4fd4206ad6b7f3f7eb7556f6c5e2',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fprojectorkettimesvectorallcellsreduction_470',['d_projectorKetTimesVectorAllCellsReduction',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#abf71ce631de545b6e73782b632985eff',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fprojectorkettimesvectorallcellsreductiondevice_471',['d_projectorKetTimesVectorAllCellsReductionDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad823cf798245eeba85539f47f4f77106',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fprojectorkettimesvectordevice_472',['d_projectorKetTimesVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1128fdf525ba00ceae87bb26f2f68bbb',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fprojectorkettimesvectorlocalids_473',['d_projectorKetTimesVectorLocalIds',['../classdftfe_1_1dft_class.html#a3ae43ed709ecd369922ce8e276b38f78',1,'dftfe::dftClass']]], + ['d_5fprojectorkettimesvectorpar_474',['d_projectorKetTimesVectorPar',['../classdftfe_1_1dft_class.html#aa6c9bdc9baec1bed059a51f6d40503a9',1,'dftfe::dftClass']]], + ['d_5fprojectorkettimesvectorparflattened_475',['d_projectorKetTimesVectorParFlattened',['../classdftfe_1_1dft_class.html#ab732d4e541b57c7d0dbe33f8eaa82cc4',1,'dftfe::dftClass']]], + ['d_5fprojectorkettimesvectorparflatteneddevice_476',['d_projectorKetTimesVectorParFlattenedDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a13a9e640970a4e50f167124a2dda1110',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fpseduowfcnonlocalatoms_477',['d_pseduoWfcNonLocalAtoms',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a97cf9d17e41567a8f71edf3a50a99fb7',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fpseudovloc_478',['d_pseudoVLoc',['../classdftfe_1_1dft_class.html#ad9013475fd0b3a095efa6c17785d7236',1,'dftfe::dftClass']]], + ['d_5fpseudovlocatoms_479',['d_pseudoVLocAtoms',['../classdftfe_1_1dft_class.html#ac736ae72f9a1b971534336c3620228be',1,'dftfe::dftClass']]], + ['d_5fpseudowavefunctionidtofunctioniddetails_480',['d_pseudoWaveFunctionIdToFunctionIdDetails',['../classdftfe_1_1dft_class.html#ab7e647cfe609bb8c4de4a97b49fc88ff',1,'dftfe::dftClass']]], + ['d_5fpseudowavefunctionsplines_481',['d_pseudoWaveFunctionSplines',['../classdftfe_1_1dft_class.html#a3a045ea4bd2db8cf8274f44672f65801',1,'dftfe::dftClass']]], + ['d_5fpseudowfcaccumnonlocalatoms_482',['d_pseudoWfcAccumNonlocalAtoms',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a54db49dc915c76f31ffcaa33282ab312',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fpspcutoff_483',['d_pspCutOff',['../classdftfe_1_1dft_class.html#a8b8e9a550b6ddc495c921e2c86424c09',1,'dftfe::dftClass']]], + ['d_5fpspcutofftrunc_484',['d_pspCutOffTrunc',['../classdftfe_1_1dft_class.html#ad527660526523dabf9b25d0768868fd1',1,'dftfe::dftClass']]], + ['d_5fquadgradresidualvaluesptr_485',['d_quadGradResidualValuesPtr',['../classdftfe_1_1kerker_solver_problem.html#a32bc999d3fa94913eaf46af2a8b7c95f',1,'dftfe::kerkerSolverProblem']]], + ['d_5fquadratureid_486',['d_quadratureID',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a01fa2fc783c8088a364bba89eda14f29',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fquadratureidsvector_487',['d_quadratureIDsVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a716ec75e9fd6841e84289b4b8842cfe0',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5frankcurrentlrd_488',['d_rankCurrentLRD',['../classdftfe_1_1dft_class.html#a2924f58455510eb83429d12c6d18e4b9',1,'dftfe::dftClass']]], + ['d_5freciprocallatticevectors_489',['d_reciprocalLatticeVectors',['../classdftfe_1_1dft_class.html#afe54c88a7705cb935e511550fbcff948',1,'dftfe::dftClass']]], + ['d_5frecvbuffers_490',['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_491',['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_492',['d_relativeErrorJacInvApproxPrevScfLRD',['../classdftfe_1_1dft_class.html#abb5f8f89a6b2fcd2366a2475ee46debc',1,'dftfe::dftClass']]], + ['d_5frelaxationflags_493',['d_relaxationflags',['../classdftfe_1_1geo_opt_cell.html#a3b06b0e863475e7dbfb99ba914c48bfb',1,'dftfe::geoOptCell::d_relaxationFlags'],['../classdftfe_1_1nudged_elastic_band_class.html#ab1ef2becefbd70c5d43349321725deef',1,'dftfe::nudgedElasticBandClass::d_relaxationFlags'],['../classdftfe_1_1geo_opt_ion.html#af8765c7e7469e61051882a8ba1afd98c',1,'dftfe::geoOptIon::d_relaxationFlags']]], + ['d_5frequestingprocesses_494',['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_495',['d_requestsAccumulateAddLocallyOwned',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a3ce4e3db4d5a02913d75ae5d91874fa6',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5frequestsupdateghostvalues_496',['d_requestsUpdateGhostValues',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a7a138a61d0a23f609841162df00172eb',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fresidualnormpredicted_497',['d_residualNormPredicted',['../classdftfe_1_1dft_class.html#a5db6d6ac36802eb1349cf62848f7c513',1,'dftfe::dftClass']]], + ['d_5fresidualpredicted_498',['d_residualPredicted',['../classdftfe_1_1dft_class.html#abdd2dd9629ca9a46cc9da49a38bcde1d',1,'dftfe::dftClass']]], + ['d_5frestartfilespath_499',['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_500',['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_501',['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_502',['d_rhoAtomsValues',['../classdftfe_1_1dft_class.html#a37580419cfc21768a092f5d598fb5734',1,'dftfe::dftClass']]], + ['d_5frhoatomsvaluesseparate_503',['d_rhoAtomsValuesSeparate',['../classdftfe_1_1dft_class.html#a8aa193e1b79d3cc7e81a1b567b8e9fc5',1,'dftfe::dftClass']]], + ['d_5frhocore_504',['d_rhoCore',['../classdftfe_1_1dft_class.html#a0727a1580c2b151b69f27fac704024d6',1,'dftfe::dftClass']]], + ['d_5frhoinnodalvals_505',['d_rhoInNodalVals',['../classdftfe_1_1dft_class.html#ae093a26b796d09294ba8f18bc8508520',1,'dftfe::dftClass']]], + ['d_5frhoinnodalvalues_506',['d_rhoInNodalValues',['../classdftfe_1_1dft_class.html#ae4cc954f9befd06f54e4a24ce40099f0',1,'dftfe::dftClass']]], + ['d_5frhoinnodalvaluesread_507',['d_rhoInNodalValuesRead',['../classdftfe_1_1dft_class.html#a081a17df54730c677e61467ece4dceee',1,'dftfe::dftClass']]], + ['d_5frhoinspin0nodalvals_508',['d_rhoInSpin0NodalVals',['../classdftfe_1_1dft_class.html#a1cf929aee31976065607d179b57544ca',1,'dftfe::dftClass']]], + ['d_5frhoinspin0nodalvalues_509',['d_rhoInSpin0NodalValues',['../classdftfe_1_1dft_class.html#ab119ed6f9543ea1f269b159906f0289b',1,'dftfe::dftClass']]], + ['d_5frhoinspin0nodalvaluesread_510',['d_rhoInSpin0NodalValuesRead',['../classdftfe_1_1dft_class.html#a3509334b1a305d80d5449587033c8c28',1,'dftfe::dftClass']]], + ['d_5frhoinspin1nodalvals_511',['d_rhoInSpin1NodalVals',['../classdftfe_1_1dft_class.html#affe924667df543af73dcb686939cc1f6',1,'dftfe::dftClass']]], + ['d_5frhoinspin1nodalvalues_512',['d_rhoInSpin1NodalValues',['../classdftfe_1_1dft_class.html#aeb7293d91efd293f5798562c33b0d63c',1,'dftfe::dftClass']]], + ['d_5frhoinspin1nodalvaluesread_513',['d_rhoInSpin1NodalValuesRead',['../classdftfe_1_1dft_class.html#a3616edeec23f77930d1437f8f05da63f',1,'dftfe::dftClass']]], + ['d_5frhoinvalueslpspquad_514',['d_rhoInValuesLpspQuad',['../classdftfe_1_1dft_class.html#a221d6208cd215bb84a8e28912e682702',1,'dftfe::dftClass']]], + ['d_5frhonodalfield_515',['d_rhoNodalField',['../classdftfe_1_1dft_class.html#aaaa1b3d5d2915da03385e4209baa4bd5',1,'dftfe::dftClass']]], + ['d_5frhonodalfieldrefined_516',['d_rhoNodalFieldRefined',['../classdftfe_1_1dft_class.html#a0e8a353159f1e9353d5f7ab9900d8cb7',1,'dftfe::dftClass']]], + ['d_5frhonodalfieldspin0_517',['d_rhoNodalFieldSpin0',['../classdftfe_1_1dft_class.html#a1a6ad3c4b547f683461b9f5fb1f99427',1,'dftfe::dftClass']]], + ['d_5frhonodalfieldspin1_518',['d_rhoNodalFieldSpin1',['../classdftfe_1_1dft_class.html#af531f41c6f9b6e29db329ef8146aa6af',1,'dftfe::dftClass']]], + ['d_5frhooutnodalvals_519',['d_rhoOutNodalVals',['../classdftfe_1_1dft_class.html#a78ef0ae7dfbddce6e4dd93cfbd571ff9',1,'dftfe::dftClass']]], + ['d_5frhooutnodalvalues_520',['d_rhoOutNodalValues',['../classdftfe_1_1dft_class.html#abe16af6aee841c207344965b20744389',1,'dftfe::dftClass']]], + ['d_5frhooutnodalvaluesdistributed_521',['d_rhoOutNodalValuesDistributed',['../classdftfe_1_1dft_class.html#a6c81f4998b09a4634bac8acf7b4acfee',1,'dftfe::dftClass']]], + ['d_5frhooutnodalvaluessplit_522',['d_rhoOutNodalValuesSplit',['../classdftfe_1_1dft_class.html#ad0e9ee57b9d26768ce26c9d3a1c9f49a',1,'dftfe::dftClass']]], + ['d_5frhooutspin0nodalvals_523',['d_rhoOutSpin0NodalVals',['../classdftfe_1_1dft_class.html#a31995b0159cfbd4454d3a59490b4539e',1,'dftfe::dftClass']]], + ['d_5frhooutspin0nodalvalues_524',['d_rhoOutSpin0NodalValues',['../classdftfe_1_1dft_class.html#a5ab56d1781253a8f6ad492f6f14203c6',1,'dftfe::dftClass']]], + ['d_5frhooutspin1nodalvals_525',['d_rhoOutSpin1NodalVals',['../classdftfe_1_1dft_class.html#a568eab84872aa718c14f06314c246ff0',1,'dftfe::dftClass']]], + ['d_5frhooutspin1nodalvalues_526',['d_rhoOutSpin1NodalValues',['../classdftfe_1_1dft_class.html#a99bc4aa46f90069980c52296848d6504',1,'dftfe::dftClass']]], + ['d_5frhooutvalueslpspquad_527',['d_rhoOutValuesLpspQuad',['../classdftfe_1_1dft_class.html#afb93404f1b3760b47526e440c7f76ddf',1,'dftfe::dftClass']]], + ['d_5frhoq_528',['d_rhoq',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afaa2425eac3fc483dadec8ad14aa1a2a',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5frhovaluesptr_529',['d_rhoValuesPtr',['../classdftfe_1_1poisson_solver_problem.html#ad62fcce4fab0d051c598f0d11661c981',1,'dftfe::poissonSolverProblem']]], + ['d_5frhssmearedcharge_530',['d_rhsSmearedCharge',['../classdftfe_1_1poisson_solver_problem.html#a8125cb7bcdb6d845e91bf69126fe283d',1,'dftfe::poissonSolverProblem']]], + ['d_5frowidsglobal_531',['d_rowIdsGlobal',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a1b0ccb6b3e6398e82d13c39455318508',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5frowidslocal_532',['d_rowIdsLocal',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a21c370cf151fda92c53ba6884a67248a',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5frowsizes_533',['d_rowSizes',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a8641c32deae9ff7bcf3231b5463366f5',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5fscalapackblocksize_534',['d_scalapackBlockSize',['../classdftfe_1_1elpa_scala_manager.html#a96b89758861ee97c9bbf6afbd7b04188',1,'dftfe::elpaScalaManager']]], + ['d_5fscratchfoldername_535',['d_scratchFolderName',['../classdftfe_1_1dftfe_wrapper.html#aad256b7ea420fb1d1514ca407ea2650b',1,'dftfe::dftfeWrapper']]], + ['d_5fsendbuffers_536',['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_537',['d_sendRecvBuffer',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a2a05c78d79292d1cac94670c42c8e40f',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fsendrequests_538',['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_539',['d_serialTriaCurrentRefinement',['../classdftfe_1_1triangulation_manager.html#a961687232b06e134ea227a6150e5f63e',1,'dftfe::triangulationManager']]], + ['d_5fserialtriangulationelectrostatics_540',['d_serialTriangulationElectrostatics',['../classdftfe_1_1triangulation_manager.html#a94e6c5715778f343a02a4f22f56b40d8',1,'dftfe::triangulationManager']]], + ['d_5fserialtriangulationunmoved_541',['d_serialTriangulationUnmoved',['../classdftfe_1_1triangulation_manager.html#ab38608e407114cee6e0367a7e72abaf0',1,'dftfe::triangulationManager']]], + ['d_5fshapefunctionbasisdata_542',['d_shapeFunctionBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aeb73dd6c36c03c8d299ca4920eb95f44',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fshapefunctionbasisdatatranspose_543',['d_shapeFunctionBasisDataTranspose',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a620f2989b60356c766c6a1c74790ffc0',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fshapefunctiondata_544',['d_shapefunctiondata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ac8a1ecef64279f8283ee3f30c5eb74cc',1,'dftfe::basis::FEBasisOperationsBase::d_shapeFunctionData'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a74553e87d0a630cf4e591a0ff7ab2c85',1,'dftfe::kohnShamDFTOperatorClass::d_shapeFunctionData']]], + ['d_5fshapefunctiondatatranspose_545',['d_shapeFunctionDataTranspose',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ac57d8c01b31519207d4098533c7129d7',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fshapefunctiongradientbasisdata_546',['d_shapeFunctionGradientBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a84e862837a021b0822c032e29844f2ae',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fshapefunctiongradientbasisdatatranspose_547',['d_shapeFunctionGradientBasisDataTranspose',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a51e27099cf677062b0f9a854b429a7e3',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fshapefunctiongradientdata_548',['d_shapeFunctionGradientData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aaac35569e9cd4f58b4ea4726b4b839ac',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fshapefunctiongradientdatainternallayout_549',['d_shapeFunctionGradientDataInternalLayout',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a3537139a6209f7aa6ea50a7d20151898',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fshapefunctiongradientdatatranspose_550',['d_shapeFunctionGradientDataTranspose',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a38ed24155404bab7677e00c9e0dcd1aa',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fshapefunctiongradientvaluenlptransposed_551',['d_shapeFunctionGradientValueNLPTransposed',['../classdftfe_1_1operator_d_f_t_class.html#a282d8880c3a98d999488339f8c52e4c0',1,'dftfe::operatorDFTClass']]], + ['d_5fshapefunctiongradientvaluerefx_552',['d_shapeFunctionGradientValueRefX',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a29db64770ec3d0576b84a860647b82ef',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fshapefunctiongradientvaluerefy_553',['d_shapeFunctionGradientValueRefY',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a956186e6e0651e6e677b32b2c628eb7c',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fshapefunctiongradientvaluerefz_554',['d_shapeFunctionGradientValueRefZ',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a06226b40b0b9e77b21003b4be7a5caf1',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fshapefunctionlpspquaddata_555',['d_shapeFunctionLpspQuadData',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a921373f85b3e72d7d54ac931a9d1bf5b',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fshapefunctionvalue_556',['d_shapeFunctionValue',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6624ac4d533dd8a0d618cecbb1650463',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fshapefunctionvaluedensitytransposed_557',['d_shapeFunctionValueDensityTransposed',['../classdftfe_1_1operator_d_f_t_class.html#abfbe93e65aea69839fa5015e83919ee6',1,'dftfe::operatorDFTClass']]], + ['d_5fshapefunctionvaluelpspdevice_558',['d_shapeFunctionValueLpspDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#af393fabe73a79bb9a17bcabf40e72817',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fshapefunctionvaluenlptransposed_559',['d_shapeFunctionValueNLPTransposed',['../classdftfe_1_1operator_d_f_t_class.html#a4c71827c35c5362f3a673e8002e13b7b',1,'dftfe::operatorDFTClass']]], + ['d_5fshapefunctionvaluetransposed_560',['d_shapeFunctionValueTransposed',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ae5c0dcbb20d31490592371bf7c90dd0a',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fshapefunctionvaluetransposedlpspdevice_561',['d_shapeFunctionValueTransposedLpspDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6c3ada0c8882268f994fa4f653e944c2',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fsize_562',['d_size',['../classdftfe_1_1utils_1_1_memory_storage.html#a56dcd948533b248845d62b3e28fab890',1,'dftfe::utils::MemoryStorage']]], + ['d_5fsmearedchargegradientcomponentid_563',['d_smearedChargeGradientComponentId',['../classdftfe_1_1poisson_solver_problem.html#ac5a3c7d45bfbca3c4e87cd13da4b4023',1,'dftfe::poissonSolverProblem']]], + ['d_5fsmearedchargequadratureid_564',['d_smearedChargeQuadratureId',['../classdftfe_1_1poisson_solver_problem.html#a4040c3b5ef8912e51cad6bcf07b36ceb',1,'dftfe::poissonSolverProblem']]], + ['d_5fsmearedchargequadratureidelectro_565',['d_smearedChargeQuadratureIdElectro',['../classdftfe_1_1dft_class.html#a04c0b6cdae56e43a103b95455ec3a813',1,'dftfe::dftClass']]], + ['d_5fsmearedchargescaling_566',['d_smearedChargeScaling',['../classdftfe_1_1dft_class.html#a62bdc4064d96d232fbe28870fe6622cd',1,'dftfe::dftClass']]], + ['d_5fsmearedchargevaluesptr_567',['d_smearedChargeValuesPtr',['../classdftfe_1_1poisson_solver_problem.html#a91a7089ec839e13a203dae71ab6ac00e',1,'dftfe::poissonSolverProblem']]], + ['d_5fsmearedchargewidthmin_568',['d_smearedChargeWidthMin',['../classdftfe_1_1dft_class.html#ab241738ed16c2a4a9a423be25530d8f7',1,'dftfe::dftClass']]], + ['d_5fsmearedchargewidths_569',['d_smearedChargeWidths',['../classdftfe_1_1dft_class.html#a56f04f9e69551c2494c313bcd6998a55',1,'dftfe::dftClass']]], + ['d_5fsolver_570',['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_571',['d_solverrestart',['../classdftfe_1_1geo_opt_cell.html#a058774f6262da2d80f361ad6b92bd8d1',1,'dftfe::geoOptCell::d_solverRestart'],['../classdftfe_1_1nudged_elastic_band_class.html#a22ae18363e08cdc7fa10eadb84c4bffa',1,'dftfe::nudgedElasticBandClass::d_solverRestart'],['../classdftfe_1_1geo_opt_ion.html#a14127f79d0de5c60743d489906c2b55f',1,'dftfe::geoOptIon::d_solverRestart']]], + ['d_5fsolverrestartpath_572',['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_573',['d_sparsityPattern',['../classdftfe_1_1dft_class.html#ac0bc83da9a82295eaadd40b48fdd437d',1,'dftfe::dftClass']]], + ['d_5fspinindex_574',['d_spinindex',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a6f8d085f1fbdc80e74bb54eb9f793ec4',1,'dftfe::kohnShamDFTOperatorClass::d_spinIndex'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#acb6bd02b2cdadf070ba7683110b27aa0',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_spinIndex']]], + ['d_5fsqrtmassvector_575',['d_sqrtmassvector',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a7e85aa51ffd4147218ef86ee7fc58862',1,'dftfe::kohnShamDFTOperatorClass::d_sqrtMassVector'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a249d9fe5f3d06bf4eb38c7ff77596a11',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_sqrtMassVector']]], + ['d_5fsqrtmassvectordevice_576',['d_sqrtMassVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#afe9aeaa4669f4f6c952a8717654c86b0',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fsrfo_577',['d_Srfo',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ae7e15436c1eaa4b2d5e0bb72812db131',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fstartingtemperature_578',['d_startingTemperature',['../classdftfe_1_1molecular_dynamics_class.html#af05abe909bc1560322e75d6c99c72b1e',1,'dftfe::molecularDynamicsClass']]], + ['d_5fstartingtimestep_579',['d_startingTimeStep',['../classdftfe_1_1molecular_dynamics_class.html#ad2bcabef3672789d19b111c08394693e',1,'dftfe::molecularDynamicsClass']]], + ['d_5fstartstep_580',['d_startStep',['../classdftfe_1_1nudged_elastic_band_class.html#a5108b3c0fd69b5abe79f181098dc7732',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fstatus_581',['d_status',['../classdftfe_1_1geometry_optimization_class.html#ac05d0d69ed27ea93b416bcdd0db6f259',1,'dftfe::geometryOptimizationClass']]], + ['d_5fsteepestdirectionold_582',['d_steepestDirectionOld',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a616647c3f1d5ea38a7ba386fe7e12041',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fstepaccepted_583',['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_584',['d_storage',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a522b067c042c33b939ea343d7c33c722',1,'dftfe::linearAlgebra::MultiVector']]], + ['d_5fstoredadaptiveballradius_585',['d_storedAdaptiveBallRadius',['../classdftfe_1_1vself_bins_manager.html#ab2a0e04f6fa5757b6a33e19baac589bf',1,'dftfe::vselfBinsManager']]], + ['d_5fstrainepsilon_586',['d_strainEpsilon',['../classdftfe_1_1geo_opt_cell.html#a88bfe00b950cb384805654e042e25134',1,'dftfe::geoOptCell']]], + ['d_5fstress_587',['d_stress',['../classdftfe_1_1force_class.html#a6112ac369a990c23e6b61c50cd772cf5',1,'dftfe::forceClass']]], + ['d_5fstressdispersion_588',['d_stressDispersion',['../classdftfe_1_1dispersion_correction.html#a98e42b0e07134a8e493cc687be3723da',1,'dftfe::dispersionCorrection']]], + ['d_5fstresskpoints_589',['d_stressKPoints',['../classdftfe_1_1force_class.html#a0345481b9161a0ae0cd16ced2c92f45e',1,'dftfe::forceClass']]], + ['d_5fsubspaceiterationsolver_590',['d_subspaceIterationSolver',['../classdftfe_1_1dft_class.html#a3ef4eb61b291a7281b8544dfd3c4e142',1,'dftfe::dftClass']]], + ['d_5fsumnontrivialpseudowfcsoverallcellszetadeltavquads_591',['d_sumNonTrivialPseudoWfcsOverAllCellsZetaDeltaVQuads',['../classdftfe_1_1dft_class.html#aa65d7f31f401ab5f2eb81a5fc5ba42a2',1,'dftfe::dftClass']]], + ['d_5fsupportpoints_592',['d_supportPoints',['../classdftfe_1_1dft_class.html#a6d9a4ee38eeb908a8d71ec4ad3a1f839',1,'dftfe::dftClass']]], + ['d_5fsupportpointseigen_593',['d_supportPointsEigen',['../classdftfe_1_1dft_class.html#ab0187f2841bf6b7756d6dcc4ad2f24aa',1,'dftfe::dftClass']]], + ['d_5fsupportpointsprefined_594',['d_supportPointsPRefined',['../classdftfe_1_1dft_class.html#a15d01c4f70cedf0960a2b038f79f2489',1,'dftfe::dftClass']]], + ['d_5ftargetids_595',['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_596',['d_targetProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a7dcb16c07d7c9a49262cf0ef4e1493c4',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5ftempdoubleimagarrayforatomics_597',['d_tempDoubleImagArrayForAtomics',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a4b1469521606f86c1ba1c526e53211fa',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5ftempdoublerealarrayforatomics_598',['d_tempDoubleRealArrayForAtomics',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a9f8d8712e2174899cb6c03540a4e3db7',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5ftempeigenvec_599',['d_tempEigenVec',['../classdftfe_1_1dft_class.html#aef048f0b6100e9f8857ddf2a94ce4764',1,'dftfe::dftClass']]], + ['d_5ftempfloatimagarrayforatomics_600',['d_tempFloatImagArrayForAtomics',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ad8dd322d519b54fc57797b722c4d27da',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5ftempfloatrealarrayforatomics_601',['d_tempFloatRealArrayForAtomics',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a6e38fde48ff0553c6504c4420bc97378',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5ftempimagvec_602',['d_tempImagVec',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a3ebe199cb0563db3ecd529421744d773',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5ftemprealvec_603',['d_tempRealVec',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a559a9f45cd34455c42f4af41245c3c49',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fthermostattimeconstant_604',['d_ThermostatTimeConstant',['../classdftfe_1_1molecular_dynamics_class.html#a6884926c0df4ca164710fffe8f589529',1,'dftfe::molecularDynamicsClass']]], + ['d_5fthermostattype_605',['d_ThermostatType',['../classdftfe_1_1molecular_dynamics_class.html#a0169df1b43165aa42da43b06fa23c57d',1,'dftfe::molecularDynamicsClass']]], + ['d_5fthis_5fmpi_5fprocess_606',['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']]], + ['d_5ftimeindex_607',['d_TimeIndex',['../classdftfe_1_1molecular_dynamics_class.html#aac93e51c2356ab94634386760c46aef2',1,'dftfe::molecularDynamicsClass']]], + ['d_5ftimestep_608',['d_TimeStep',['../classdftfe_1_1molecular_dynamics_class.html#aef240d4e530efd2ef2188db40ef3e5d2',1,'dftfe::molecularDynamicsClass']]], + ['d_5ftolerance_609',['d_tolerance',['../classdftfe_1_1non_linear_solver.html#a2cd121c1f5cf1df5fbd1b01b3d605ccc',1,'dftfe::nonLinearSolver']]], + ['d_5ftolreached_610',['d_tolReached',['../classdftfe_1_1dft_class.html#ad118be25ca2e5cb6689d3f3e03a5d0f8',1,'dftfe::dftClass']]], + ['d_5ftotalnonlocalatomscurrentproc_611',['d_totalNonlocalAtomsCurrentProc',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a43f426b320f7b816708947ab054e8b54',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5ftotalnonlocalelems_612',['d_totalNonlocalElems',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aebad90732fc3688e36e59ca778570918',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5ftotalpseudowfcnonlocal_613',['d_totalPseudoWfcNonLocal',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1ac68f1bf26a8f9968b1dcb3e6db6099',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5ftotalupdatecalls_614',['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_5ftriangulationelectrostaticsdisp_615',['d_triangulationElectrostaticsDisp',['../classdftfe_1_1triangulation_manager.html#ac3add473880325140b8e92fc8d646459',1,'dftfe::triangulationManager']]], + ['d_5ftriangulationelectrostaticsforce_616',['d_triangulationElectrostaticsForce',['../classdftfe_1_1triangulation_manager.html#a63d8ea7f82c70c3b4a35b5d2ca1480c3',1,'dftfe::triangulationManager']]], + ['d_5ftriangulationelectrostaticsrho_617',['d_triangulationElectrostaticsRho',['../classdftfe_1_1triangulation_manager.html#ad563fab62ce19c577f2b04e789896186',1,'dftfe::triangulationManager']]], + ['d_5ftriaptr_618',['d_triaPtr',['../classdftfe_1_1mesh_movement_class.html#aa183e127ce47363636936816aa2cb6f5',1,'dftfe::meshMovementClass']]], + ['d_5ftriaptrserial_619',['d_triaPtrSerial',['../classdftfe_1_1mesh_movement_class.html#aff22b153ada325f840842c47f5e8da4f',1,'dftfe::meshMovementClass']]], + ['d_5ftrustradius_620',['d_trustRadius',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a6984823aa35e215c58071ebbbeb9c878',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5ftrustradiusinitial_621',['d_trustRadiusInitial',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a39e9ad460b95bb2357b41ced1097b9ae',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5ftrustradiusmax_622',['d_trustRadiusMax',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a6d4b07e11ddb5ec583c070b3394fccf5',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5ftrustradiusmin_623',['d_trustRadiusMin',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ab077ed027febe65d5d625459d8b486bf',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5ftype_624',['d_type',['../classdftfe_1_1dealii_linear_solver.html#a93af6465939f325d8f189bf6e617ef27',1,'dftfe::dealiiLinearSolver']]], + ['d_5funknowncountflag_625',['d_unknownCountFlag',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad2d102da90772d1ad75e0e00e275c5cc',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fupdateflags_626',['d_updateFlags',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a9b8dfdc41edef6a3eeb06cb369c26e57',1,'dftfe::basis::FEBasisOperationsBase']]], + ['d_5fupdatevector_627',['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_628',['d_upperBoundUnWantedSpectrum',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#aefeb52292083b3b6d78d26a8348aa07c',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['d_5fupperboundunwantedspectrumvalues_629',['d_upperBoundUnwantedSpectrumValues',['../classdftfe_1_1dft_class.html#a7aa9e4d9969e2e93658a8e6ddf3992bd',1,'dftfe::dftClass']]], + ['d_5fusepreconditioner_630',['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_631',['d_useRFOStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0c9a7a916905ef1504b1483103f44ab3',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fusesingleatomsolutionsinitialguess_632',['d_usesingleatomsolutionsinitialguess',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ad2b85b3a228b9e25ff81b130cd15c97a',1,'dftfe::BFGSNonLinearSolver::d_useSingleAtomSolutionsInitialGuess'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a5b3cfa36ce43b24ceffe1048d6ed77a7',1,'dftfe::LBFGSNonLinearSolver::d_useSingleAtomSolutionsInitialGuess'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a76eb505985431b805caec2dda244c8ee',1,'dftfe::cgPRPNonLinearSolver::d_useSingleAtomSolutionsInitialGuess']]], + ['d_5fvals_633',['d_vals',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a0044120435d32992d97964a3d9bbf14a',1,'dftfe::dftUtils::QuadDataCompositeWrite']]], + ['d_5fvalue_634',['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_635',['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_636',['d_variableHistoryIn',['../classdftfe_1_1_mixing_scheme.html#a1d05eb452ec054a0127825a9734a7f93',1,'dftfe::MixingScheme']]], + ['d_5fvariablehistoryout_637',['d_variableHistoryOut',['../classdftfe_1_1_mixing_scheme.html#a3bcb458fd62e007c24d71c7eed48a377',1,'dftfe::MixingScheme']]], + ['d_5fvcontainervals_638',['d_vcontainerVals',['../classdftfe_1_1dft_class.html#a5314cd6028cda8869968d04b042fef4f',1,'dftfe::dftClass']]], + ['d_5fvectordotproductweights_639',['d_vectorDotProductWeights',['../classdftfe_1_1_mixing_scheme.html#a6c9d073d8797e3ac49003905b1ebbdf5',1,'dftfe::MixingScheme']]], + ['d_5fveff_640',['d_vEff',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a49099a806ab87204aefbb576ffdce05f',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fveffexternalpotcorr_641',['d_vEffExternalPotCorr',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a9d288fbc0e00a004f0c5e90b731c93f8',1,'dftfe::kohnShamDFTOperatorClass']]], + ['d_5fveffexternalpotcorrjxw_642',['d_veffexternalpotcorrjxw',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aebb85320ff2f35cbaf9ff0b457eb7e27',1,'dftfe::kohnShamDFTOperatorClass::d_vEffExternalPotCorrJxW'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a124a9f163295ec48d07215500226f4e5',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_vEffExternalPotCorrJxW']]], + ['d_5fveffexternalpotcorrjxwdevice_643',['d_vEffExternalPotCorrJxWDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a3b83780c66c47c9f553402ff879e670f',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fveffjxw_644',['d_veffjxw',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a8ae38698486dcb011b072d6287965e8b',1,'dftfe::kohnShamDFTOperatorClass::d_vEffJxW'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad4854035901717d70fa19048dd24d3e7',1,'dftfe::kohnShamDFTOperatorDeviceClass::d_vEffJxW']]], + ['d_5fveffjxwdevice_645',['d_vEffJxWDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6fdccb781066549a6865e28a176784a6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['d_5fverbosity_646',['d_verbosity',['../classdftfe_1_1geometry_optimization_class.html#a882cb5bee74f7e4ba3842d44c6202a94',1,'dftfe::geometryOptimizationClass::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']]], + ['d_5fvselfbinconstraintmatrices_647',['d_vselfBinConstraintMatrices',['../classdftfe_1_1vself_bins_manager.html#a1bc91d04fc02aa4e0b2296781c0af1cd',1,'dftfe::vselfBinsManager']]], + ['d_5fvselfbinfield_648',['d_vselfBinField',['../classdftfe_1_1vself_bins_manager.html#a5f7af2fa2c935dd29d77c97cd166c55e',1,'dftfe::vselfBinsManager']]], + ['d_5fvselfbinsmanager_649',['d_vselfBinsManager',['../classdftfe_1_1dft_class.html#a47e434551800221d0fa89fa547c6b102',1,'dftfe::dftClass']]], + ['d_5fvselffieldbins_650',['d_vselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#adeea81b54823aef5cc7396e65a38b68e',1,'dftfe::vselfBinsManager']]], + ['d_5fvselffieldderrbins_651',['d_vselfFieldDerRBins',['../classdftfe_1_1vself_bins_manager.html#ab1823427be014f89e099551ac9a1a004',1,'dftfe::vselfBinsManager']]], + ['d_5fvselffieldgateauxderstrainfdbins_652',['d_vselfFieldGateauxDerStrainFDBins',['../classdftfe_1_1dft_class.html#a42e0745d8ad74af72377c7b7fb579a63',1,'dftfe::dftClass']]], + ['d_5fvselffieldperturbedbins_653',['d_vselfFieldPerturbedBins',['../classdftfe_1_1vself_bins_manager.html#a697d19a037d588bbaaa031a3399051cc',1,'dftfe::vselfBinsManager']]], + ['d_5fvspin0containervals_654',['d_vSpin0containerVals',['../classdftfe_1_1dft_class.html#a4947a0a67a19a5197e308d39a6c79743',1,'dftfe::dftClass']]], + ['d_5fvspin1containervals_655',['d_vSpin1containerVals',['../classdftfe_1_1dft_class.html#adb719fa05d0129f443c3f028595a0f82',1,'dftfe::dftClass']]], + ['d_5fwavefunctionfamilytype_656',['d_wavefunctionFamilyType',['../classdftfe_1_1exc_wavefunction_base_class.html#a94d7a8affdc9deea29574d636898f6d5',1,'dftfe::excWavefunctionBaseClass']]], + ['d_5fwfcinittruncation_657',['d_wfcInitTruncation',['../classdftfe_1_1dft_class.html#ac9aa08eba8087629177433857a10352d',1,'dftfe::dftClass']]], + ['d_5fwolfecurvature_658',['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_659',['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_660',['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_661',['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']]], + ['data_662',['data',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a7d040bd7787f972dbd45d4d97edf87a3',1,'dftfe::linearAlgebra::MultiVector::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()']]], + ['datatypeoverloads_2eh_663',['DataTypeOverloads.h',['../_data_type_overloads_8h.html',1,'']]], + ['dc_5fd3atm_664',['dc_d3ATM',['../classdftfe_1_1dft_parameters.html#ac1eda09954750e2a6e4b60f203ab4039',1,'dftfe::dftParameters']]], + ['dc_5fd3cutoff2_665',['dc_d3cutoff2',['../classdftfe_1_1dft_parameters.html#a1a3c70a292cf7da3952a5618ad9b9301',1,'dftfe::dftParameters']]], + ['dc_5fd3cutoff3_666',['dc_d3cutoff3',['../classdftfe_1_1dft_parameters.html#a697d5794a313cab20190eaa57c469a97',1,'dftfe::dftParameters']]], + ['dc_5fd3cutoffcn_667',['dc_d3cutoffCN',['../classdftfe_1_1dft_parameters.html#ac8a378332dc47af5c0f052d40e8b0093',1,'dftfe::dftParameters']]], + ['dc_5fd3dampingtype_668',['dc_d3dampingtype',['../classdftfe_1_1dft_parameters.html#af27e7bb0146d8defa59a8f15bd6d8458',1,'dftfe::dftParameters']]], + ['dc_5fd4mbd_669',['dc_d4MBD',['../classdftfe_1_1dft_parameters.html#a35ef6998bf791b9627d413e04ce90792',1,'dftfe::dftParameters']]], + ['dc_5fdampingparameterfilename_670',['dc_dampingParameterFilename',['../classdftfe_1_1dft_parameters.html#a899485928aa6aa92b1b06ac6165e8477',1,'dftfe::dftParameters']]], + ['dc_5fdispersioncorrectiontype_671',['dc_dispersioncorrectiontype',['../classdftfe_1_1dft_parameters.html#aa2ef4a8a131534f030f9f682c1bb6dd2',1,'dftfe::dftParameters']]], + ['dealiicellid_672',['dealIICellId',['../classdftfe_1_1symmetry_class.html#a60205234b9a089ef72ba9257f1bcc762',1,'dftfe::symmetryClass']]], + ['dealiilinearsolver_673',['dealiilinearsolver',['../classdftfe_1_1dealii_linear_solver.html#a9586538036013497a0649a30265a8827',1,'dftfe::dealiiLinearSolver::dealiiLinearSolver()'],['../classdftfe_1_1dealii_linear_solver.html',1,'dftfe::dealiiLinearSolver']]], + ['dealiilinearsolver_2eh_674',['dealiiLinearSolver.h',['../dealii_linear_solver_8h.html',1,'']]], + ['dealiilinearsolverproblem_675',['dealiilinearsolverproblem',['../classdftfe_1_1dealii_linear_solver_problem.html#a97a0ecea80b757eeac064ea65c613644',1,'dftfe::dealiiLinearSolverProblem::dealiiLinearSolverProblem()'],['../classdftfe_1_1dealii_linear_solver_problem.html',1,'dftfe::dealiiLinearSolverProblem']]], + ['dealiilinearsolverproblem_2eh_676',['dealiiLinearSolverProblem.h',['../dealii_linear_solver_problem_8h.html',1,'']]], + ['deallocate_677',['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_678',['declexception1',['../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.")'],['../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#a27b32f617606bdae5aa6fdab7dce23db',1,'dftfe::LAPACKSupport::DeclException1(ExcState, State,<< "The function cannot be called while the matrix is in state "<< state_name(arg1))']]], + ['declexception2_679',['DeclException2',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#aef82ce9af9dc80dd3462be0800624348',1,'dftfe::LAPACKSupport']]], + ['declexceptionmsg_680',['declexceptionmsg',['../namespacedftfe_1_1dft_utils.html#af6662a00711ddc0f6bc8e37ab112ed5d',1,'dftfe::dftUtils::DeclExceptionMsg(ExcInternalError, "DFT-FE internal error.")'],['../namespacedftfe_1_1dft_utils.html#adfc4fda60705bb297d20f1ed78ec2155',1,'dftfe::dftUtils::DeclExceptionMsg(ExcNotImplementedYet, "This functionality is not implemented yet or not needed to be implemented.")']]], + ['deformcell_681',['deformCell',['../classdftfe_1_1dftfe_wrapper.html#ab0c58280c0480e66037638ffc2d51986',1,'dftfe::dftfeWrapper']]], + ['deformdomain_682',['deformdomain',['../classdftfe_1_1dft_class.html#aa468ab79ddd4eabdc0029568bd02b7e0',1,'dftfe::dftClass::deformDomain()'],['../classdftfe_1_1dft_base.html#a4d292401c658852ccec9289136cd4a61',1,'dftfe::dftBase::deformDomain()']]], + ['denom_683',['denom',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a483fc2d1a07cc1bd11d9b9567f5f7182',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['dense_684',['dense',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#ae0ac174a280754919dc52268d8fe4172',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['density_685',['density',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a1a4191c8b44db79888107fa7bd4f1270',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['density_20functional_20theory_20with_20finite_20elements_686',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['densitycalculator_2eh_687',['densityCalculator.h',['../density_calculator_8h.html',1,'']]], + ['densityextrapolation_688',['DensityExtrapolation',['../classdftfe_1_1molecular_dynamics_class.html#a2dfec9cd88235861d9fed750220355b9',1,'dftfe::molecularDynamicsClass']]], + ['densityfamilytype_689',['densityFamilyType',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4b',1,'dftfe']]], + ['densityfirstorderresponsecalculator_2eh_690',['densityFirstOrderResponseCalculator.h',['../density_first_order_response_calculator_8h.html',1,'']]], + ['densitymatrixeigenbasisfirstorderresponse_691',['densityMatrixEigenBasisFirstOrderResponse',['../namespacedftfe_1_1linear_algebra_operations.html#a859845ea4dda7b323edc5fd98d5c5944',1,'dftfe::linearAlgebraOperations']]], + ['densitysplitextrapolation_692',['DensitySplitExtrapolation',['../classdftfe_1_1molecular_dynamics_class.html#a01734279e03fbe1e269b7abf3137ad0a',1,'dftfe::molecularDynamicsClass']]], + ['der2energywithdensity_693',['der2EnergyWithDensity',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475a6d74ee91791d12a6d1aec6e6d09d1188',1,'dftfe']]], + ['der2energywithdensitysigma_694',['der2EnergyWithDensitySigma',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475ae904f928241e314eb0dad7989f79d367',1,'dftfe']]], + ['der2energywithsigma_695',['der2EnergyWithSigma',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475ac3dc879502e28bc2e08c9c8c4915970d',1,'dftfe']]], + ['derenergywithdensity_696',['derEnergyWithDensity',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238ea7fa7b35baa55d216aa46c6862aa08d25',1,'dftfe']]], + ['derenergywithsigmagraddensity_697',['derEnergyWithSigmaGradDensity',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238eab0c327071aa3ac496cade6b801299895',1,'dftfe']]], + ['derexcwithsigmatimesgradrho_698',['derExcWithSigmaTimesGradRho',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a2d1b26aa36b7dc78e5b917877ebcbd45',1,'dftfe::kohnShamDFTOperatorClass']]], + ['descinit_5f_699',['descinit_',['../namespacedftfe.html#af106f0c84c4a7b69fc89bf9602d59c13',1,'dftfe']]], + ['descriptor_700',['descriptor',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ad1e8ef421c85085add7e872f8f909f64',1,'dftfe::ScaLAPACKMatrix']]], + ['destroydeviceblashandle_701',['destroyDeviceBlasHandle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9975f62a927516b070d81f50a1ab6a4c',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['determineorbitalfilling_702',['determineOrbitalFilling',['../classdftfe_1_1dft_class.html#a74e23d8a6a562f28b25c3b12eec95aa4',1,'dftfe::dftClass']]], + ['device_703',['DEVICE',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ae10b6ab6a278644ce40631f62f360b6d',1,'dftfe::utils']]], + ['device_5fapi_5fcheck_704',['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_705',['DeviceAPICalls.h',['../_device_a_p_i_calls_8h.html',1,'']]], + ['deviceblas_5fapi_5fcheck_706',['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_707',['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_708',['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_709',['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_710',['DEVICEBLAS_TF32_TENSOR_OP_MATH',['../namespacedftfe_1_1utils.html#a2c76eb2d5702fabd79e5ee2c54a1a774',1,'dftfe::utils']]], + ['deviceblashandle_5ft_711',['deviceBlasHandle_t',['../namespacedftfe_1_1utils.html#a92924aae85b78ecddfe040d9748b31df',1,'dftfe::utils']]], + ['deviceblasmath_5ft_712',['deviceBlasMath_t',['../namespacedftfe_1_1utils.html#a895e3006047ff83b9c8d797d714f988d',1,'dftfe::utils']]], + ['deviceblasoperation_5ft_713',['deviceBlasOperation_t',['../namespacedftfe_1_1utils.html#ae50147b81ceec05b392e1ef929a70b34',1,'dftfe::utils']]], + ['deviceblasstatus_5ft_714',['deviceBlasStatus_t',['../namespacedftfe_1_1utils.html#a372360055d05c634e3656e4dc4e8982d',1,'dftfe::utils']]], + ['deviceblaswrapper_2eh_715',['DeviceBlasWrapper.h',['../_device_blas_wrapper_8h.html',1,'']]], + ['devicedatatypeoverloads_2ecu_2eh_716',['DeviceDataTypeOverloads.cu.h',['../_device_data_type_overloads_8cu_8h.html',1,'']]], + ['devicedatatypeoverloads_2eh_717',['DeviceDataTypeOverloads.h',['../_device_data_type_overloads_8h.html',1,'']]], + ['devicedatatypeoverloads_2ehip_2eh_718',['DeviceDataTypeOverloads.hip.h',['../_device_data_type_overloads_8hip_8h.html',1,'']]], + ['devicedirectcclwrapper_2eh_719',['deviceDirectCCLWrapper.h',['../device_direct_c_c_l_wrapper_8h.html',1,'']]], + ['devicedoublecomplex_720',['deviceDoubleComplex',['../namespacedftfe_1_1utils.html#a66db66fec052d05c21406331c4e24a0d',1,'dftfe::utils']]], + ['deviceerror_5ft_721',['deviceError_t',['../namespacedftfe_1_1utils.html#a2b2a1a01dc4a11ca4e17c2db2f6fc47c',1,'dftfe::utils']]], + ['deviceevent_5ft_722',['deviceEvent_t',['../namespacedftfe_1_1utils.html#ac35c66ab86da7f663b20739f01edf548',1,'dftfe::utils']]], + ['deviceexceptions_2ecu_2eh_723',['DeviceExceptions.cu.h',['../_device_exceptions_8cu_8h.html',1,'']]], + ['deviceexceptions_2ehip_2eh_724',['DeviceExceptions.hip.h',['../_device_exceptions_8hip_8h.html',1,'']]], + ['devicefinegrainedtimings_725',['deviceFineGrainedTimings',['../classdftfe_1_1dft_parameters.html#ad494b26cce36ae31ed9880be1e7b39f7',1,'dftfe::dftParameters']]], + ['devicefloatcomplex_726',['deviceFloatComplex',['../namespacedftfe_1_1utils.html#aaea6a5b69584a976fcfae7a185f5de42',1,'dftfe::utils']]], + ['devicekernellauncherconstants_2eh_727',['DeviceKernelLauncherConstants.h',['../_device_kernel_launcher_constants_8h.html',1,'']]], + ['devicekernelsgeneric_2eh_728',['deviceKernelsGeneric.h',['../device_kernels_generic_8h.html',1,'']]], + ['devicememoptmode_729',['deviceMemOptMode',['../classdftfe_1_1dft_parameters.html#a32b431a72606c9aaf4c898ae422eedff',1,'dftfe::dftParameters']]], + ['devicestream_5ft_730',['deviceStream_t',['../namespacedftfe_1_1utils.html#a362c66eeb8e42fff4c502fa634674ca7',1,'dftfe::utils']]], + ['devicesuccess_731',['devicesuccess',['../namespacedftfe_1_1utils.html#a479131b3c583941bf438c4e788d5fdf0',1,'dftfe::utils::deviceSuccess'],['../namespacedftfe_1_1utils.html#a479131b3c583941bf438c4e788d5fdf0',1,'dftfe::utils::deviceSuccess']]], + ['devicetypeconfig_2ecu_2eh_732',['DeviceTypeConfig.cu.h',['../_device_type_config_8cu_8h.html',1,'']]], + ['devicetypeconfig_2eh_733',['DeviceTypeConfig.h',['../_device_type_config_8h.html',1,'']]], + ['devicetypeconfig_2ehip_2eh_734',['DeviceTypeConfig.hip.h',['../_device_type_config_8hip_8h.html',1,'']]], + ['dft_20fe_735',['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_736',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['dft_2eh_737',['dft.h',['../dft_8h.html',1,'']]], + ['dftbase_738',['dftBase',['../classdftfe_1_1dft_base.html',1,'dftfe']]], + ['dftbase_2eh_739',['dftBase.h',['../dft_base_8h.html',1,'']]], + ['dftclass_740',['dftclass',['../classdftfe_1_1dft_class.html#a0303e8e40ac87743bd3cd5be5b0d0a3b',1,'dftfe::dftClass::dftClass()'],['../classdftfe_1_1dft_class.html',1,'dftfe::dftClass< FEOrder, FEOrderElectro >']]], + ['dftclass_3c_20feorder_2c_20feorderelectro_20_3e_741',['dftclass< feorder, feorderelectro >',['../classdftfe_1_1symmetry_class.html#a4e5825a3c89e7e4c5295677947c36417',1,'dftfe::symmetryClass::dftClass< FEOrder, FEOrderElectro >'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a4e5825a3c89e7e4c5295677947c36417',1,'dftfe::kohnShamDFTOperatorClass::dftClass< FEOrder, FEOrderElectro >'],['../classdftfe_1_1force_class.html#a4e5825a3c89e7e4c5295677947c36417',1,'dftfe::forceClass::dftClass< FEOrder, FEOrderElectro >']]], + ['dftd_2eh_742',['dftd.h',['../dftd_8h.html',1,'']]], + ['dftfe_743',['dftfe',['../namespacedftfe.html',1,'']]], + ['dftfe_3a_3abasis_744',['basis',['../namespacedftfe_1_1basis.html',1,'dftfe']]], + ['dftfe_3a_3adatatypes_745',['dataTypes',['../namespacedftfe_1_1data_types.html',1,'dftfe']]], + ['dftfe_3a_3adftutils_746',['dftUtils',['../namespacedftfe_1_1dft_utils.html',1,'dftfe']]], + ['dftfe_3a_3aeshelbytensor_747',['eshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html',1,'dftfe']]], + ['dftfe_3a_3aeshelbytensorsp_748',['eshelbyTensorSP',['../namespacedftfe_1_1eshelby_tensor_s_p.html',1,'dftfe']]], + ['dftfe_3a_3aforce_749',['force',['../namespacedftfe_1_1force.html',1,'dftfe']]], + ['dftfe_3a_3alapacksupport_750',['LAPACKSupport',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebra_751',['linearAlgebra',['../namespacedftfe_1_1linear_algebra.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebraoperations_752',['linearAlgebraOperations',['../namespacedftfe_1_1linear_algebra_operations.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebraoperations_3a_3ainternal_753',['internal',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html',1,'dftfe::linearAlgebraOperations']]], + ['dftfe_3a_3ameshgenutils_754',['meshGenUtils',['../namespacedftfe_1_1mesh_gen_utils.html',1,'dftfe']]], + ['dftfe_3a_3apseudoutils_755',['pseudoUtils',['../namespacedftfe_1_1pseudo_utils.html',1,'dftfe']]], + ['dftfe_3a_3ascalapackmatrix_756',['ScaLAPACKMatrix',['../classdftfe_1_1_process_grid.html#a1091e8c7fbacd2a5c44a470826d17f83',1,'dftfe::ProcessGrid']]], + ['dftfe_3a_3atypes_757',['types',['../namespacedftfe_1_1types.html',1,'dftfe']]], + ['dftfe_3a_3autils_758',['utils',['../namespacedftfe_1_1utils.html',1,'dftfe']]], + ['dftfe_3a_3autils_3a_3ampi_759',['mpi',['../namespacedftfe_1_1utils_1_1mpi.html',1,'dftfe::utils']]], + ['dftfe_3a_3avectortools_760',['vectorTools',['../namespacedftfe_1_1vector_tools.html',1,'dftfe']]], + ['dftfe_5fassert_761',['DFTFE_Assert',['../_exceptions_8h.html#a62be5192be4135c752f0522f127bd3b8',1,'Exceptions.h']]], + ['dftfe_5fassertwithmsg_762',['DFTFE_AssertWithMsg',['../_exceptions_8h.html#a2530a17dcdf9fe37ee288cf3f887e644',1,'Exceptions.h']]], + ['dftfedatatypes_2eh_763',['dftfeDataTypes.h',['../dftfe_data_types_8h.html',1,'']]], + ['dftfewrapper_764',['dftfewrapper',['../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)'],['../classdftfe_1_1dftfe_wrapper.html#a46cc49ad20509c0eff5e1253c02b3521',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 isScfRestart=true)'],['../classdftfe_1_1dftfe_wrapper.html#af22ca470a5a6ba0c0cda782126dca90d',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)'],['../classdftfe_1_1dftfe_wrapper.html#a6f5e5a2f056a41b18ddffbd7de0a7483',1,'dftfe::dftfeWrapper::dftfeWrapper()'],['../classdftfe_1_1dftfe_wrapper.html',1,'dftfe::dftfeWrapper']]], + ['dftfewrapper_2eh_765',['dftfeWrapper.h',['../dftfe_wrapper_8h.html',1,'']]], + ['dftparameters_766',['dftparameters',['../classdftfe_1_1dft_parameters.html#a649ae12e0807df03af06561d13e9a27a',1,'dftfe::dftParameters::dftParameters()'],['../classdftfe_1_1dft_parameters.html',1,'dftfe::dftParameters']]], + ['dftparameters_2eh_767',['dftParameters.h',['../dft_parameters_8h.html',1,'']]], + ['dftptr_768',['dftptr',['../classdftfe_1_1force_class.html#a20bb4978039af3f77f32167b1074c0f7',1,'dftfe::forceClass::dftPtr'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aace5faf0033785f987ae29e4585e16fc',1,'dftfe::kohnShamDFTOperatorClass::dftPtr'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a22898052738c14995ec3761694a98879',1,'dftfe::kohnShamDFTOperatorDeviceClass::dftPtr'],['../classdftfe_1_1symmetry_class.html#ad1ab91eea8a8a2e97e4e29909e0bb2da',1,'dftfe::symmetryClass::dftPtr']]], + ['dftutils_2eh_769',['dftUtils.h',['../dft_utils_8h.html',1,'']]], + ['dgesv_5f_770',['dgesv_',['../namespacedftfe_1_1dft_utils.html#a2a7c59f741f731f16db9771b470e66c7',1,'dftfe::dftUtils']]], + ['diagonal_771',['diagonal',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca87d8c9354f8b729ca3177c5cc8ab567d',1,'dftfe::LAPACKSupport']]], + ['dipole_772',['dipole',['../classdftfe_1_1dft_class.html#abbcb7af1eb06bc8680892734626595f7',1,'dftfe::dftClass']]], + ['diracdeltakernelscalingconstant_773',['diracDeltaKernelScalingConstant',['../classdftfe_1_1dft_parameters.html#a0e3ed166bc1a90db714915f34a575d75',1,'dftfe::dftParameters']]], + ['dispersioncorrection_774',['dispersioncorrection',['../classdftfe_1_1dispersion_correction.html#a7b944c8421d038ba9359ed675462518e',1,'dftfe::dispersionCorrection::dispersionCorrection()'],['../classdftfe_1_1dispersion_correction.html',1,'dftfe::dispersionCorrection']]], + ['dispersioncorrection_5fh_5f_775',['dispersionCorrection_H_',['../dftd_8h.html#aa7b569d42313e3af67e206f868669dba',1,'dftd.h']]], + ['distribute_776',['distribute',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a74e9e6be3027c0ad47cf4c720c18b458',1,'dftfe::basis::FEBasisOperationsBase::distribute()'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a0ce7ded4f06cf85457ee1bb630421bf5',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) 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#aae5b940241c022ac24e9c546a91f8cec',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUVec< double > &fieldVector) const']]], + ['distribute_5fslave_5fto_5fmaster_777',['distribute_slave_to_master',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a6c294cd6aaf1a88ff29f99939e7d3758',1,'dftfe::dftUtils::constraintMatrixInfo::distribute_slave_to_master(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) const'],['../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']]], + ['distributedcpumultivec_778',['distributedCPUMultiVec',['../namespacedftfe.html#aa8c3e6ebd5a0af6ada4727e7d9515310',1,'dftfe']]], + ['distributedcpuvec_779',['distributedCPUVec',['../namespacedftfe.html#a27679910e52ac24e575480e148ceeb71',1,'dftfe']]], + ['distributeforcecontributionfnlgammaatoms_780',['distributeForceContributionFnlGammaAtoms',['../classdftfe_1_1force_class.html#ae458689761b8191766911b05404213c2',1,'dftfe::forceClass']]], + ['distributeforcecontributionfpsplocalgammaatoms_781',['distributeForceContributionFPSPLocalGammaAtoms',['../classdftfe_1_1force_class.html#af2b9fdcab2458f674c06939adef640fb',1,'dftfe::forceClass']]], + ['distributex_782',['distributex',['../classdftfe_1_1poisson_solver_problem.html#a298666149f5621be3454f5866e92cb54',1,'dftfe::poissonSolverProblem::distributeX()'],['../classdftfe_1_1kerker_solver_problem.html#a1265745147339654ba0b60b2247ba3cd',1,'dftfe::kerkerSolverProblem::distributeX()'],['../classdftfe_1_1dealii_linear_solver_problem.html#a55759d651b4bcadf7eb57b0b83d546a0',1,'dftfe::dealiiLinearSolverProblem::distributeX()']]], + ['div_783',['div',['../namespacedftfe_1_1utils.html#a6047b562aa109fbfa1aad70953c7e173',1,'dftfe::utils::div(hipDoubleComplex a, double 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#a8ad3162b0dfcd5afd9d994480eff9642',1,'dftfe::utils::div(double a, hipFloatComplex 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#afbe3ab98871188f2072f0c8ae8ce0ea5',1,'dftfe::utils::div(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#a95ee3e40cd60d2ebf89db7174038dd92',1,'dftfe::utils::div(hipFloatComplex a, double b)'],['../namespacedftfe_1_1utils.html#add50b4aa742683c688bd2aa4a71cc83d',1,'dftfe::utils::div(cuDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#a5e7b3752fb30f9f76173179dd8f50eaf',1,'dftfe::utils::div(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#aba5a41a6b9590be1de7f01addc594a3c',1,'dftfe::utils::div(float a, cuFloatComplex 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)']]], + ['doc_784',['doc',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a3d4d016a23d82673be58c9f25c085188',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['dofhandler_785',['dofHandler',['../classdftfe_1_1dft_class.html#a9f829e59802d351317108d253ee05d79',1,'dftfe::dftClass']]], + ['dofhandlereigen_786',['dofHandlerEigen',['../classdftfe_1_1dft_class.html#a2904ba5af018091c44fc259dddc73f31',1,'dftfe::dftClass']]], + ['domainboundingvectorsfile_787',['domainBoundingVectorsFile',['../classdftfe_1_1dft_parameters.html#a9947ddb5e69ad0c7d2cafdc81a3c22cd',1,'dftfe::dftParameters']]], + ['domainerror_788',['DomainError',['../namespacedftfe_1_1utils.html#a1471d04b800b32a7d64f40fb4109b3fa',1,'dftfe::utils']]], + ['domainvectorsfileneb_789',['domainVectorsFileNEB',['../classdftfe_1_1run_parameters.html#a93e92d346d201681aae27ebc762c20dc',1,'dftfe::runParameters']]], + ['dot_790',['dot',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ad0d448da6d814b92517c6f07ff7969f4',1,'dftfe::linearAlgebra::MultiVector']]], + ['dummy_5fmpi_5ftag_791',['DUMMY_MPI_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5aca6c6d77288fa7def2204455ba7a47fb',1,'dftfe::utils::mpi']]], + ['dvec_792',['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..c4462ed9f --- /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',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a119d774c7aeee24e20c41a0947abf1b3',1,'dftfe::LAPACKSupport::eigenvalues'],['../classdftfe_1_1dft_class.html#a3354c4259bb59a9ca2ea166e31600653',1,'dftfe::dftClass::eigenValues']]], + ['eigenvaluesrrsplit_7',['eigenValuesRRSplit',['../classdftfe_1_1dft_class.html#acc7dfe9367b87877378cf1b781cb93b2',1,'dftfe::dftClass']]], + ['electrostaticshrefinement_8',['electrostaticsHRefinement',['../classdftfe_1_1dft_parameters.html#a58978bb1e7ac26d460c59fd9f8122b81',1,'dftfe::dftParameters']]], + ['element_9',['element',['../structdftfe_1_1pseudo_utils_1_1_element.html#ad8152975474dc567546eaac70229110f',1,'dftfe::pseudoUtils::Element::Element()'],['../structdftfe_1_1pseudo_utils_1_1_element.html',1,'dftfe::pseudoUtils::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#a018363f19becdf162dc02901cfda21a8',1,'dftfe::utils::MemoryStorage::end()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a4d008ff333f0ab43a21b25f76f81c516',1,'dftfe::linearAlgebra::MultiVector::end() const'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a896eb2bbc51a5b7a6b700117443e6932',1,'dftfe::linearAlgebra::MultiVector::end()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a6cfcdefa08c9fe96f230a1bd97b9e881',1,'dftfe::utils::MemoryStorage::end()']]], + ['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#ae802a501a958de43cebcf057bbc81bca',1,'dftfe::excDensityGGAClass::excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)'],['../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',1,'dftfe::excDensityGGAClass']]], + ['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#a1fc2b191d178dd3046127dfca8664705',1,'dftfe::excDensityLDAClass::excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)'],['../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)']]], + ['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#aedada949ec36757aef0d9fa0764edf42',1,'dftfe::excWavefunctionBaseClass::excWavefunctionBaseClass()'],['../classdftfe_1_1exc_wavefunction_base_class.html',1,'dftfe::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_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a08b88c2ed3a84d181433e05e878dd673',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['extracttocellnodaldatakernel_39',['extractToCellNodalDataKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a7a63e5cc8e7a574997726282a9806674',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['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..8ee93ab56 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,54 @@ +var searchData= +[ + ['failure_0',['failure',['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700a36fc6065a3e970bc3e6b2e59da52bf2a',1,'dftfe::eigenSolverClass::FAILURE'],['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a611ee8ff0567d79090641884e465f110',1,'dftfe::nonLinearSolver::FAILURE']]], + ['fe_1',['fe',['../index.html#autotoc_md3',1,'Contributing to DFT-FE'],['../classdftfe_1_1symmetry_class.html#a052367bd22e2e783d1bcf3aaab5be267',1,'dftfe::symmetryClass::FE'],['../classdftfe_1_1dft_class.html#ae81728452b84419196287444f7d44033',1,'dftfe::dftClass::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_2eh_4',['FEBasisOperations.h',['../_f_e_basis_operations_8h.html',1,'']]], + ['febasisoperations_3c_20valuetypebasiscoeff_2c_20valuetypebasisdata_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_5',['FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html',1,'dftfe::basis']]], + ['febasisoperationsbase_6',['febasisoperationsbase',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html',1,'dftfe::basis::FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#acafbadb0779d419c49b60948cef0306c',1,'dftfe::basis::FEBasisOperationsBase::FEBasisOperationsBase()']]], + ['febasisoperationsbase_3c_20valuetypebasiscoeff_2c_20valuetypebasisdata_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_7',['FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html',1,'dftfe::basis']]], + ['febasisoperationskernelsdevice_2eh_8',['FEBasisOperationsKernelsDevice.h',['../_f_e_basis_operations_kernels_device_8h.html',1,'']]], + ['feeigen_9',['FEEigen',['../classdftfe_1_1dft_class.html#a05ffb128c77416368a2aeee9712896a2',1,'dftfe::dftClass']]], + ['feforce_10',['FEForce',['../classdftfe_1_1force_class.html#aa21ab87ad201a9adf41a077d8d9b10ad',1,'dftfe::forceClass']]], + ['femovemesh_11',['FEMoveMesh',['../classdftfe_1_1mesh_movement_class.html#a0df44499e64912ea65685803512874d4',1,'dftfe::meshMovementClass']]], + ['fermienergy_12',['fermiEnergy',['../classdftfe_1_1dft_class.html#adca5ca9afcc9f172754c57d9dbcf7ed2',1,'dftfe::dftClass']]], + ['fermienergydown_13',['fermiEnergyDown',['../classdftfe_1_1dft_class.html#a059abf0d0cb0e18cd20ff3e8f1f53967',1,'dftfe::dftClass']]], + ['fermienergyup_14',['fermiEnergyUp',['../classdftfe_1_1dft_class.html#a6e96175dbee26ef1c225779c8f87bcfb',1,'dftfe::dftClass']]], + ['fieldgradl2norm_15',['fieldGradl2Norm',['../classdftfe_1_1dft_class.html#a4cc2a43e2a75931788260f57a5ba0ac2',1,'dftfe::dftClass']]], + ['filereaders_2eh_16',['fileReaders.h',['../file_readers_8h.html',1,'']]], + ['fillglobalarrayfromcellwavefunctionmatrix_17',['fillglobalarrayfromcellwavefunctionmatrix',['../classdftfe_1_1operator_d_f_t_class.html#a78e45707e96eabfb403dbecdec140dca',1,'dftfe::operatorDFTClass::fillGlobalArrayFromCellWaveFunctionMatrix()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a1cde123e149b9e0356f67847a7f70c6f',1,'dftfe::kohnShamDFTOperatorClass::fillGlobalArrayFromCellWaveFunctionMatrix()']]], + ['fillparalleloverlapmatrix_18',['fillParallelOverlapMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a7374662bbb8cb4f1f06934af68f1b9d8',1,'dftfe::linearAlgebraOperations::internal']]], + ['fillparalleloverlapmatrixmixedprec_19',['fillParallelOverlapMatrixMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a88f2d97c179cd7082c44efd4bfc8a7db',1,'dftfe::linearAlgebraOperations::internal']]], + ['finalizeincrementfield_20',['finalizeIncrementField',['../classdftfe_1_1mesh_movement_class.html#a601dbcee450a5780fc95fd0aa1b858c5',1,'dftfe::meshMovementClass']]], + ['finalizekohnshamdftoperator_21',['finalizeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#ab8cfd3898b70043985170cb5ba062cf2',1,'dftfe::dftClass']]], + ['find_5fend_5felement_22',['find_end_element',['../namespacedftfe_1_1pseudo_utils.html#aea95a855478d7602f39d823a6200bc2c',1,'dftfe::pseudoUtils']]], + ['find_5fstart_5felement_23',['find_start_element',['../namespacedftfe_1_1pseudo_utils.html#accdeff53b8867a0d028731353fbf00a8',1,'dftfe::pseudoUtils']]], + ['findclosestverticestodestinationpoints_24',['findClosestVerticesToDestinationPoints',['../classdftfe_1_1mesh_movement_class.html#a2e907489e90ae799d57c97b278da1207',1,'dftfe::meshMovementClass']]], + ['findmep_25',['findMEP',['../classdftfe_1_1nudged_elastic_band_class.html#a4a5bdb8cf2cfd7bed8705436f020f57d',1,'dftfe::nudgedElasticBandClass']]], + ['finish_26',['finish',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a8024f9fd7a865d33a1fed31e10555a84',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['finite_20elements_27',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['finiteelementpolynomialorder_28',['finiteElementPolynomialOrder',['../classdftfe_1_1dft_parameters.html#a898b8a65b5805df9cb48f8e5e7be551b',1,'dftfe::dftParameters']]], + ['finiteelementpolynomialorderelectrostatics_29',['finiteElementPolynomialOrderElectrostatics',['../classdftfe_1_1dft_parameters.html#a05d9c7e145ab7ff223b48e0d70ef7f37',1,'dftfe::dftParameters']]], + ['first_5fprocess_5fcolumn_30',['first_process_column',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ac3182cb7ef74187d6653acf1a0f631a5',1,'dftfe::ScaLAPACKMatrix']]], + ['first_5fprocess_5frow_31',['first_process_row',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ae97503a5c7979bb0dc1fb4255c261f4a',1,'dftfe::ScaLAPACKMatrix']]], + ['floatingnuclearcharges_32',['floatingNuclearCharges',['../classdftfe_1_1dft_parameters.html#a07731afe186b8b443cb8d0da82405fca',1,'dftfe::dftParameters']]], + ['fnlgammaatomselementalcontribution_33',['FnlGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a3995256051b927ff40895cec433f5a69',1,'dftfe::forceClass']]], + ['fnlgammaxelementalcontribution_34',['FnlGammaxElementalContribution',['../classdftfe_1_1force_class.html#a1f23c2456447d464d1eb74a477675e8f',1,'dftfe::forceClass']]], + ['fnonlinearcorecorrectiongammaatomselementalcontribution_35',['fnonlinearcorecorrectiongammaatomselementalcontribution',['../classdftfe_1_1force_class.html#a4024e05554fa872c5c7ff7ecc3721525',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#aa18d633bf73f4c289e29646ac504975b',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_36',['FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized',['../classdftfe_1_1force_class.html#a38044c3143fa48334ac90a951b4197b2',1,'dftfe::forceClass']]], + ['force_2eh_37',['force.h',['../force_8h.html',1,'']]], + ['forceclass_38',['forceclass',['../classdftfe_1_1force_class.html#ab4112f24ebec1eaf0f9dd401589ae3c8',1,'dftfe::forceClass::forceClass()'],['../classdftfe_1_1force_class.html',1,'dftfe::forceClass< FEOrder, FEOrderElectro >']]], + ['forceclass_3c_20feorder_2c_20feorderelectro_20_3e_39',['forceClass< FEOrder, FEOrderElectro >',['../classdftfe_1_1dft_class.html#a0986c3d8c89e92033aac2a75a8bc77d8',1,'dftfe::dftClass']]], + ['forceptr_40',['forcePtr',['../classdftfe_1_1dft_class.html#a807e2aa173f2ea938aa1f69ba50dad38',1,'dftfe::dftClass']]], + ['forcerelaxtol_41',['forceRelaxTol',['../classdftfe_1_1dft_parameters.html#a1ada5303b4fd3c21f697826062e9050e',1,'dftfe::dftParameters']]], + ['forcewfccontractions_2eh_42',['forceWfcContractions.h',['../force_wfc_contractions_8h.html',1,'']]], + ['forcewfccontractionsdevice_2eh_43',['forceWfcContractionsDevice.h',['../force_wfc_contractions_device_8h.html',1,'']]], + ['fphitotsmearedchargesgammaatomselementalcontribution_44',['FPhiTotSmearedChargesGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a516faea18c4628f4e5a186c90adfa1d0',1,'dftfe::forceClass']]], + ['fpsplocalgammaatomselementalcontribution_45',['FPSPLocalGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a22ced4b50a33ce13a7242be6fa51b34b',1,'dftfe::forceClass']]], + ['fshadowlocalgammaatomselementalcontributionelectronic_46',['FShadowLocalGammaAtomsElementalContributionElectronic',['../classdftfe_1_1force_class.html#a804fc0e9245a7b4e8d447fcb2b96e065',1,'dftfe::forceClass']]], + ['fshadowlocalgammaatomselementalcontributionelectrostatic_47',['FShadowLocalGammaAtomsElementalContributionElectrostatic',['../classdftfe_1_1force_class.html#a0ab61f6404c3407a9fcd5d52ebd1ed7a',1,'dftfe::forceClass']]], + ['functional_20theory_20with_20finite_20elements_48',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['fvselfsmearedchargesgammaatomselementalcontribution_49',['FVselfSmearedChargesGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#aef9136617fe5901d3fee1d3923fa8e69',1,'dftfe::forceClass']]], + ['fxcoutputdataattributes_50',['fxcOutputDataAttributes',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475',1,'dftfe']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 000000000..e58631c33 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,182 @@ +var searchData= +[ + ['gatherlocallyownedentriessendbuffertotargetprocs_0',['gatherLocallyOwnedEntriesSendBufferToTargetProcs',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#a747b56d0850c53f761282adc38b5e0ec',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#ab10d03406c7d1de772e58368f78d05ee',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#ab700c85595ff0cd706db6f025c5f89dd',1,'dftfe::dftClass']]], + ['generatemesh_9',['generateMesh',['../classdftfe_1_1triangulation_manager.html#aac5c20678a005e6df0b1a4b7f353ed1b',1,'dftfe::triangulationManager']]], + ['generatempgrid_10',['generateMPGrid',['../classdftfe_1_1dft_class.html#ad3ecabbf8ce608a0fafb00c6d7f8348a',1,'dftfe::dftClass']]], + ['generateresetmeshes_11',['generateResetMeshes',['../classdftfe_1_1triangulation_manager.html#a99c3bc45a3cb92a750d16787b4c3e2e1',1,'dftfe::triangulationManager']]], + ['generateserialunmovedandparallelmovedunmovedmesh_12',['generateSerialUnmovedAndParallelMovedUnmovedMesh',['../classdftfe_1_1triangulation_manager.html#a9bbfcf8587f59c0760816d21238f96cb',1,'dftfe::triangulationManager']]], + ['geometryoptimizationclass_13',['geometryoptimizationclass',['../classdftfe_1_1geometry_optimization_class.html#ad4edfab54637282ebb9f426114c06037',1,'dftfe::geometryOptimizationClass::geometryOptimizationClass()'],['../classdftfe_1_1geometry_optimization_class.html',1,'dftfe::geometryOptimizationClass']]], + ['geometryoptimizationclass_2eh_14',['geometryOptimizationClass.h',['../geometry_optimization_class_8h.html',1,'']]], + ['geooptcell_15',['geooptcell',['../classdftfe_1_1geo_opt_cell.html#a9725a2266871b35b8d5535c5a3448ce2',1,'dftfe::geoOptCell::geoOptCell()'],['../classdftfe_1_1geo_opt_cell.html',1,'dftfe::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_5fattr_19',['get_attr',['../namespacedftfe_1_1pseudo_utils.html#ac7c65518267a50c2ccdf7ee683681ab5',1,'dftfe::pseudoUtils']]], + ['get_5finterpool_5fcomm_20',['get_interpool_comm',['../classdftfe_1_1dft_utils_1_1_pool.html#a3c9a67abe1e1a8310cad03f46b4af4bd',1,'dftfe::dftUtils::Pool']]], + ['get_5fintrapool_5fcomm_21',['get_intrapool_comm',['../classdftfe_1_1dft_utils_1_1_pool.html#a16e43d70ad01abc5d84180e2d404da38',1,'dftfe::dftUtils::Pool']]], + ['get_5fprocess_5fgrid_5fcolumns_22',['get_process_grid_columns',['../classdftfe_1_1_process_grid.html#ac0f46f07c2de3b6564b8793d629e1bf3',1,'dftfe::ProcessGrid']]], + ['get_5fprocess_5fgrid_5frows_23',['get_process_grid_rows',['../classdftfe_1_1_process_grid.html#a070f58a1dd24772ba335fd6e0bf7116e',1,'dftfe::ProcessGrid']]], + ['get_5fproperty_24',['get_property',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6213590579de7473604c7b7fc7fb1dcc',1,'dftfe::ScaLAPACKMatrix']]], + ['get_5fstate_25',['get_state',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1b6277fcc0a927bb6bed309eaaef18cc',1,'dftfe::ScaLAPACKMatrix']]], + ['get_5fthis_5fprocess_5fcolumn_26',['get_this_process_column',['../classdftfe_1_1_process_grid.html#a7e3e0a60c5cdb5af1f705fc5574ef707',1,'dftfe::ProcessGrid']]], + ['get_5fthis_5fprocess_5frow_27',['get_this_process_row',['../classdftfe_1_1_process_grid.html#a0a402b73111bcf3639467bf70514143a',1,'dftfe::ProcessGrid']]], + ['getatomicnumbers_28',['getAtomicNumbers',['../classdftfe_1_1dftfe_wrapper.html#a4bb128c03ef09e1b4bd1a3dca2e9b8b2',1,'dftfe::dftfeWrapper']]], + ['getatomidbinidmaplocalallimages_29',['getAtomIdBinIdMapLocalAllImages',['../classdftfe_1_1vself_bins_manager.html#adb96700444c2a24e822808bb890ff509',1,'dftfe::vselfBinsManager']]], + ['getatomidsbins_30',['getAtomIdsBins',['../classdftfe_1_1vself_bins_manager.html#ad7dc16b81e6779100b6231e6cc918bec',1,'dftfe::vselfBinsManager']]], + ['getatomimageidsbins_31',['getAtomImageIdsBins',['../classdftfe_1_1vself_bins_manager.html#a84a105106f0c8bde2eff23107cc731b4',1,'dftfe::vselfBinsManager']]], + ['getatomlocationscart_32',['getatomlocationscart',['../classdftfe_1_1dft_class.html#a787449c903b11db13506f5f282bbd750',1,'dftfe::dftClass::getAtomLocationsCart()'],['../classdftfe_1_1dft_base.html#a7d88b379db559eaeb4bf4a91e66567c5',1,'dftfe::dftBase::getAtomLocationsCart()']]], + ['getatomlocationsfrac_33',['getatomlocationsfrac',['../classdftfe_1_1dft_class.html#a35b9dde7af4c2522ce1ede6c74766a13',1,'dftfe::dftClass::getAtomLocationsFrac()'],['../classdftfe_1_1dft_base.html#a4263546ddfcd61bbd9a0b02d2e731c57',1,'dftfe::dftBase::getAtomLocationsFrac()']]], + ['getatompositionscart_34',['getAtomPositionsCart',['../classdftfe_1_1dftfe_wrapper.html#ad8882d3dc76b1b34893500c44a7d9a70',1,'dftfe::dftfeWrapper']]], + ['getatompositionsfrac_35',['getAtomPositionsFrac',['../classdftfe_1_1dftfe_wrapper.html#a043df110bc86ac36e0a6dd6e3eb65f83',1,'dftfe::dftfeWrapper']]], + ['getatomsforces_36',['getAtomsForces',['../classdftfe_1_1force_class.html#a58c11a1ce52cfd0216419d9b7eeaa685',1,'dftfe::forceClass']]], + ['getatomtypes_37',['getatomtypes',['../classdftfe_1_1dft_class.html#aa6cd903f7e7dcc9e16f4ffaf8650ec3e',1,'dftfe::dftClass::getAtomTypes()'],['../classdftfe_1_1dft_base.html#a901acff26b3f2059540ae6a9a50331f7',1,'dftfe::dftBase::getAtomTypes()']]], + ['getblocksize_38',['getBlockSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#aa361225f97c01df823a0916696501878',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['getboundaryflagsbins_39',['getBoundaryFlagsBins',['../classdftfe_1_1vself_bins_manager.html#a4887d6b82123f485217d83d36adea58c',1,'dftfe::vselfBinsManager']]], + ['getboundaryflagsbinsonlychargeid_40',['getBoundaryFlagsBinsOnlyChargeId',['../classdftfe_1_1vself_bins_manager.html#a440a6efe552e14880fe777e052643f9d',1,'dftfe::vselfBinsManager']]], + ['getcell_41',['getcell',['../classdftfe_1_1dft_class.html#a8dc8f6c7ec6f8ab210f97491536291eb',1,'dftfe::dftClass::getCell()'],['../classdftfe_1_1dft_base.html#ae8894911ab9825182f4c062b5ad619e0',1,'dftfe::dftBase::getCell()'],['../classdftfe_1_1dftfe_wrapper.html#ad3f6b5d56090f30005da6b13951f1fa1',1,'dftfe::dftfeWrapper::getCell()']]], + ['getcellstress_42',['getcellstress',['../classdftfe_1_1dft_class.html#a191e8f54983e6dfde4e1beb957ad1e3b',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_43',['getcellvolume',['../classdftfe_1_1dft_class.html#a68ea5eab1b3308390603c27ac49fa1fe',1,'dftfe::dftClass::getCellVolume()'],['../classdftfe_1_1dft_base.html#a9be899150f9aef815cc7870d21d7dd0d',1,'dftfe::dftBase::getCellVolume()']]], + ['getcellwavefunctionmatrix_44',['getCellWaveFunctionMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1d761c22f7dfba6c80b81c211ab1afe8',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getchararray_45',['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_46',['getClosestAtomIdsBins',['../classdftfe_1_1vself_bins_manager.html#abd6af334d47707a3b9b1c665b29615e9',1,'dftfe::vselfBinsManager']]], + ['getclosestatomlocationsbins_47',['getClosestAtomLocationsBins',['../classdftfe_1_1vself_bins_manager.html#ae5c142f1d7129aaf3aeca200109d06c4',1,'dftfe::vselfBinsManager']]], + ['getcompositegeneratorval_48',['getCompositeGeneratorVal',['../namespacedftfe_1_1dft_utils.html#a41080f57d452717c89539d41150c991b',1,'dftfe::dftUtils']]], + ['getcosineangle_49',['getcosineangle',['../namespacedftfe_1_1mesh_gen_utils.html#a7ba642c4d16ac2399e72ac5ad50112ff',1,'dftfe::meshGenUtils::getCosineAngle(std::vector< double > &Vector1, std::vector< double > &Vector2)'],['../namespacedftfe_1_1mesh_gen_utils.html#a526475d2e36bd9b6df44f734ede9ebbc',1,'dftfe::meshGenUtils::getCosineAngle(dealii::Tensor< 1, 3 > &Vector1, std::vector< double > &Vector2)']]], + ['getdebuglevel_50',['getDebugLevel',['../classdftfe_1_1non_linear_solver.html#ad03efe1123327c6f3fb0e6751bc389a1',1,'dftfe::nonLinearSolver']]], + ['getdensitybasedfamilytype_51',['getdensitybasedfamilytype',['../classdftfe_1_1exc_density_base_class.html#a9b5ca7a22a8dde0649ef0bceae56875c',1,'dftfe::excDensityBaseClass::getDensityBasedFamilyType()'],['../classdftfe_1_1exc_manager.html#a184b92ea85cc12067e65004de966c368',1,'dftfe::excManager::getDensityBasedFamilyType()']]], + ['getdeviceblashandle_52',['getDeviceBlasHandle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a8c3f46b403ee49d69f51ccffc959a0b2',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getdftfebaseptr_53',['getDftfeBasePtr',['../classdftfe_1_1dftfe_wrapper.html#a540e44c8269a2cd921817030c8e05c7f',1,'dftfe::dftfeWrapper']]], + ['getdftfreeenergy_54',['getDFTFreeEnergy',['../classdftfe_1_1dftfe_wrapper.html#ab963656ed167b1b3f2b2cfe934108beb',1,'dftfe::dftfeWrapper']]], + ['geteelectroeshelbytensor_55',['getEElectroEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#aa5eed0a1e4289ecfd22f664d3cd2ce95',1,'dftfe::eshelbyTensor']]], + ['getelectronicentropicenergy_56',['getElectronicEntropicEnergy',['../classdftfe_1_1dftfe_wrapper.html#ae7c9171fef582de5f07cb28fe58e5740',1,'dftfe::dftfeWrapper']]], + ['getelectrostaticsmeshdisp_57',['getElectrostaticsMeshDisp',['../classdftfe_1_1triangulation_manager.html#a4240a41aade7700f09774fc8536e88f3',1,'dftfe::triangulationManager']]], + ['getelectrostaticsmeshforce_58',['getElectrostaticsMeshForce',['../classdftfe_1_1triangulation_manager.html#a77de74393d39172d30e5c2c808d4be8a',1,'dftfe::triangulationManager']]], + ['getelectrostaticsmeshrho_59',['getElectrostaticsMeshRho',['../classdftfe_1_1triangulation_manager.html#a6885a129f2df782ccfa39261c25a1686',1,'dftfe::triangulationManager']]], + ['getelocpspeshelbytensor_60',['getELocPspEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#af556efee5e4f8140193f973cb6f47eff',1,'dftfe::eshelbyTensor']]], + ['getelocxceshelbytensor_61',['getelocxceshelbytensor',['../namespacedftfe_1_1eshelby_tensor_s_p.html#aca6760ff37ac8ce369016a1d4fed25b4',1,'dftfe::eshelbyTensorSP::getELocXcEshelbyTensor()'],['../namespacedftfe_1_1eshelby_tensor.html#af5829f7396d35efb69917e608caedf5d',1,'dftfe::eshelbyTensor::getELocXcEshelbyTensor()']]], + ['getelpaautotunehandle_62',['getElpaAutoTuneHandle',['../classdftfe_1_1elpa_scala_manager.html#a4f33402d6657c3fafce8ca660b0f63f5',1,'dftfe::elpaScalaManager']]], + ['getelpahandle_63',['getElpaHandle',['../classdftfe_1_1elpa_scala_manager.html#abfb7e48e8d49f605b12a05ad961da8f5',1,'dftfe::elpaScalaManager']]], + ['getelpahandlepartialeigenvec_64',['getElpaHandlePartialEigenVec',['../classdftfe_1_1elpa_scala_manager.html#aa2100b8b390adb1a69ad77cd483767f3',1,'dftfe::elpaScalaManager']]], + ['getenergycorrection_65',['getEnergyCorrection',['../classdftfe_1_1dispersion_correction.html#a27f0e12a156fdcee6ed5ae425bb9b9e2',1,'dftfe::dispersionCorrection']]], + ['getentropicenergy_66',['getentropicenergy',['../classdftfe_1_1dft_base.html#a9ac9d5a46e02de6f0ad10b2e430d563a',1,'dftfe::dftBase::getEntropicEnergy()'],['../classdftfe_1_1dft_class.html#a3071396a171930cd1b1d1ed762018437',1,'dftfe::dftClass::getEntropicEnergy()']]], + ['getexcdensityobj_67',['getexcdensityobj',['../classdftfe_1_1exc_manager.html#a800046c51d5e1c7e8dd5129cfc55d918',1,'dftfe::excManager::getExcDensityObj() const'],['../classdftfe_1_1exc_manager.html#a5816a49dfd654776d02fd6f086d7e92f',1,'dftfe::excManager::getExcDensityObj()']]], + ['getexcwavefunctionobj_68',['getexcwavefunctionobj',['../classdftfe_1_1exc_manager.html#a1c68b33e1927e8aaa7a75c3240f25298',1,'dftfe::excManager::getExcWavefunctionObj() const'],['../classdftfe_1_1exc_manager.html#aa285dc0dc1c88ee87d037827f4754836',1,'dftfe::excManager::getExcWavefunctionObj()']]], + ['getflattenedarraycelllocalprocindexidmap_69',['getflattenedarraycelllocalprocindexidmap',['../classdftfe_1_1operator_d_f_t_class.html#a9622bc9fd3ed84702b63c0c550974b20',1,'dftfe::operatorDFTClass::getFlattenedArrayCellLocalProcIndexIdMap()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ae27783b70930faf01f8020fa76b2728c',1,'dftfe::kohnShamDFTOperatorDeviceClass::getFlattenedArrayCellLocalProcIndexIdMap()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae8d40c12ccba48c587166f256a68db0f',1,'dftfe::kohnShamDFTOperatorClass::getFlattenedArrayCellLocalProcIndexIdMap()']]], + ['getfnonlinearcorecorrection_70',['getfnonlinearcorecorrection',['../namespacedftfe_1_1eshelby_tensor_s_p.html#af4ce2768abbdf57cad862817e9da5c98',1,'dftfe::eshelbyTensorSP::getFNonlinearCoreCorrection()'],['../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.html#a2bd9402ed74fe001f8c3bb6b7b9db768',1,'dftfe::eshelbyTensor::getFNonlinearCoreCorrection(const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore)']]], + ['getforcecorrection_71',['getForceCorrection',['../classdftfe_1_1dispersion_correction.html#a3f197f9d375f671a056108ef0f02fac7',1,'dftfe::dispersionCorrection']]], + ['getforceonatoms_72',['getforceonatoms',['../classdftfe_1_1dft_base.html#ab4c604becc53153486be44ef1eb17c24',1,'dftfe::dftBase::getForceonAtoms()'],['../classdftfe_1_1dft_class.html#a8e40961860e6a3527ac861faedc18758',1,'dftfe::dftClass::getForceonAtoms()']]], + ['getforcesatoms_73',['getForcesAtoms',['../classdftfe_1_1dftfe_wrapper.html#aba23244f85c7a6cd6371a473729e041b',1,'dftfe::dftfeWrapper']]], + ['getfpsplocal_74',['getFPSPLocal',['../namespacedftfe_1_1eshelby_tensor.html#acb8868b38c81bb95905042fcc488a132',1,'dftfe::eshelbyTensor']]], + ['getfractionalcoordinates_75',['getFractionalCoordinates',['../namespacedftfe_1_1dft_utils.html#aeac281264238a68abaf9dd7be44a6d3e',1,'dftfe::dftUtils']]], + ['getfreeenergy_76',['getfreeenergy',['../classdftfe_1_1dft_class.html#a1f16e5b7b7251733b05aa05263ec7ff2',1,'dftfe::dftClass::getFreeEnergy()'],['../classdftfe_1_1dft_base.html#ac80b75566ece1b6ef1f1b3dc05407d4f',1,'dftfe::dftBase::getFreeEnergy()']]], + ['getghostindices_77',['getGhostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#afc0d9e1d3a74ac5b4e47606c350d01f7',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostlocalindices_78',['getGhostLocalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#abcd7af0f089f1eb739da32f4f2550a2d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostlocalindicesranges_79',['getGhostLocalIndicesRanges',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a088145e75e35c68f77486d144f4e0d77',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostprocids_80',['getGhostProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4332a5faecf748b236d583c56feb5e54',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getinteriorsurfacenodesmapfromglobalarray_81',['getinteriorsurfacenodesmapfromglobalarray',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a8660dd74a620b122a6a1fd341a9cccb6',1,'dftfe::kohnShamDFTOperatorClass::getInteriorSurfaceNodesMapFromGlobalArray()'],['../classdftfe_1_1operator_d_f_t_class.html#a0b4293836761c040aee7bfad28637564',1,'dftfe::operatorDFTClass::getInteriorSurfaceNodesMapFromGlobalArray()']]], + ['getinternalenergy_82',['getinternalenergy',['../classdftfe_1_1dft_base.html#a01e8b55e51c7a8990185951e6341fa9d',1,'dftfe::dftBase::getInternalEnergy()'],['../classdftfe_1_1dft_class.html#adb5fb938cd6e08378745ab086388f483',1,'dftfe::dftClass::getInternalEnergy()']]], + ['getinversejacobiansnlp_83',['getinversejacobiansnlp',['../classdftfe_1_1operator_d_f_t_class.html#a63f6bb8f6c56ca228bb63e2bc4d65f69',1,'dftfe::operatorDFTClass::getInverseJacobiansNLP()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a7fa16e2f305aca908230d7a11d81d3eb',1,'dftfe::kohnShamDFTOperatorDeviceClass::getInverseJacobiansNLP()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a6491498d86e7817f9160c3f49691d3c9',1,'dftfe::kohnShamDFTOperatorClass::getInverseJacobiansNLP()']]], + ['getinvsqrtmassvec_84',['getInvSqrtMassVec',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a01435a76bdfb5ffb723e971d573776f5',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getinvsqrtmassvector_85',['getInvSqrtMassVector',['../classdftfe_1_1operator_d_f_t_class.html#abcbd0f9376869f32c32f753ad7dec466',1,'dftfe::operatorDFTClass']]], + ['getlocaldofindicesimag_86',['getLocalDofIndicesImag',['../classdftfe_1_1dft_class.html#af8e701e6f38ac19dd2ce342e0f08c05d',1,'dftfe::dftClass']]], + ['getlocaldofindicesreal_87',['getLocalDofIndicesReal',['../classdftfe_1_1dft_class.html#ad64c1b0026160eb27527d405f3f475c9',1,'dftfe::dftClass']]], + ['getlocallyownedprocboundarynodesvectordevice_88',['getLocallyOwnedProcBoundaryNodesVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a4f37d98b0f33dc841fdd1ff80e835220',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['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#ab6ca13be37eb4c41d1f472d4bd6f04f5',1,'dftfe::dftClass']]], + ['getlocalprocdofindicesreal_91',['getLocalProcDofIndicesReal',['../classdftfe_1_1dft_class.html#a4e284b4ec185c41a036743b9da2820a5',1,'dftfe::dftClass']]], + ['getmatrixfreedata_92',['getmatrixfreedata',['../classdftfe_1_1operator_d_f_t_class.html#af7ff9091b007fb85ddb36033804f5e8e',1,'dftfe::operatorDFTClass::getMatrixFreeData()'],['../classdftfe_1_1dft_class.html#af012047e6e7354f1ba10c4456706341d',1,'dftfe::dftClass::getMatrixFreeData()']]], + ['getmaximumnumberiterations_93',['getMaximumNumberIterations',['../classdftfe_1_1non_linear_solver.html#a6bd53949604d87d3ebd24802155a0289',1,'dftfe::nonLinearSolver']]], + ['getmpicommunicator_94',['getmpicommunicator',['../classdftfe_1_1geo_opt_ion.html#a5f528a5c71d21eec9dcdf6466d42003e',1,'dftfe::geoOptIon::getMPICommunicator()'],['../classdftfe_1_1operator_d_f_t_class.html#af881abf0015db034848f7cadc724ddd3',1,'dftfe::operatorDFTClass::getMPICommunicator()'],['../classdftfe_1_1nudged_elastic_band_class.html#aa1a4ac64243daaead4171b23c874da6e',1,'dftfe::nudgedElasticBandClass::getMPICommunicator()'],['../classdftfe_1_1nonlinear_solver_problem.html#aa7975ffa832002cd2ae29185590775be',1,'dftfe::nonlinearSolverProblem::getMPICommunicator()'],['../classdftfe_1_1geo_opt_cell.html#aa92ad2dd7b55f1159002473d9419f8f1',1,'dftfe::geoOptCell::getMPICommunicator()'],['../classdftfe_1_1elpa_scala_manager.html#a9fc7ce986a761710aebd003aaf0e3715',1,'dftfe::elpaScalaManager::getMPICommunicator()']]], + ['getmpidatatype_95',['getmpidatatype',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a3b4dfe355e570925189815808c225a16',1,'dftfe::dftUtils::QuadDataCompositeWrite::getMPIDataType()'],['../classdftfe_1_1dft_utils_1_1_composite_data.html#ab637524ec4fa72ee7fd108069ac48f71',1,'dftfe::dftUtils::CompositeData::getMPIDataType()']]], + ['getmpipatternp2p_96',['getmpipatternp2p',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a33ce66548bbeb927bea3cfd1212d0a16',1,'dftfe::linearAlgebra::MultiVector::getMPIPatternP2P()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a14c223b2f88ed4a122fb9da5f762812a',1,'dftfe::utils::mpi::MPICommunicatorP2P::getMPIPatternP2P()']]], + ['getmultivector_97',['getMultiVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a837f713834bed44e4a449faa721600b8',1,'dftfe::basis::FEBasisOperationsBase']]], + ['getnumbercharspercompositedata_98',['getnumbercharspercompositedata',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#aedc374ba0b3d26525dd56aa28a99cacc',1,'dftfe::dftUtils::QuadDataCompositeWrite::getNumberCharsPerCompositeData()'],['../classdftfe_1_1dft_utils_1_1_composite_data.html#a9a498eb8ee84ea740302d8953d1103b0',1,'dftfe::dftUtils::CompositeData::getNumberCharsPerCompositeData()']]], + ['getnumberunknowns_99',['getnumberunknowns',['../classdftfe_1_1geo_opt_cell.html#ab7a19d891948b672f1549898ba1ab143',1,'dftfe::geoOptCell::getNumberUnknowns()'],['../classdftfe_1_1nudged_elastic_band_class.html#a4d3a72449fd22ec8186fa9cafdcdba78',1,'dftfe::nudgedElasticBandClass::getNumberUnknowns()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab1d9fe730067d7e7f920b26daf06f117',1,'dftfe::nonlinearSolverProblem::getNumberUnknowns()'],['../classdftfe_1_1geo_opt_ion.html#a83543f9a545ab663f5b080b4c2e7fb74',1,'dftfe::geoOptIon::getNumberUnknowns()']]], + ['getnumghostindicesinproc_100',['getNumGhostIndicesInProc',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a08afcd2b84f7250d8c9601b8187828ed',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumghostindicesinprocs_101',['getNumGhostIndicesInProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a98c66a9f2536eef72d7fdbfb08a1f3f2',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumownedindicesfortargetproc_102',['getNumOwnedIndicesForTargetProc',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a110721b1e6aea0e08dca76d8d959f0ae',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumownedindicesfortargetprocs_103',['getNumOwnedIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a6ee60981b6d41cd29394724e4c582af7',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getoverloadedconstraintmatrix_104',['getOverloadedConstraintMatrix',['../classdftfe_1_1operator_d_f_t_class.html#a72413851e9c4577377d3e75b78ff9983',1,'dftfe::operatorDFTClass']]], + ['getownedlocalindices_105',['getOwnedLocalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a52e89faee260fddee14fd8c6412d1056',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getownedlocalindicesfortargetprocs_106',['getOwnedLocalIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a300070950255d96542870b84dc94f194',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getparallelchebyblockvector2device_107',['getParallelChebyBlockVector2Device',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a46a0488d424246b37605ca7c26519354',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getparallelchebyblockvectordevice_108',['getParallelChebyBlockVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aa98bc87e4b7dbdfcb64eb0d1a65e13ce',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getparallelmeshmoved_109',['getParallelMeshMoved',['../classdftfe_1_1triangulation_manager.html#a0e8b0eff1f03b6da4e2bd43fdf97744f',1,'dftfe::triangulationManager']]], + ['getparallelmeshunmoved_110',['getParallelMeshUnmoved',['../classdftfe_1_1triangulation_manager.html#a5390458da1af98472f7aaaf579fa25e8',1,'dftfe::triangulationManager']]], + ['getparallelprojectorkettimesblockvector_111',['getparallelprojectorkettimesblockvector',['../classdftfe_1_1operator_d_f_t_class.html#a5ab626524eca98f94e948934b3188fa1',1,'dftfe::operatorDFTClass::getParallelProjectorKetTimesBlockVector()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a27a024fb4444e4ee1f2e633479c78acc',1,'dftfe::kohnShamDFTOperatorClass::getParallelProjectorKetTimesBlockVector()']]], + ['getparallelprojectorkettimesblockvectordevice_112',['getParallelProjectorKetTimesBlockVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a4aa14d5160cc27f5e8223d924ecdf7d6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getparallelvecsinglecomponent_113',['getParallelVecSingleComponent',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9681a37096cf03ed992a4e1a883c999b',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getparametersobject_114',['getparametersobject',['../classdftfe_1_1dft_class.html#aff0e90b9fee358dff29c7413cec20089',1,'dftfe::dftClass::getParametersObject()'],['../classdftfe_1_1dft_base.html#a0c4905daf2f1014991196d1711a3c3d2',1,'dftfe::dftBase::getParametersObject()']]], + ['getpartialoccupancy_115',['getPartialOccupancy',['../namespacedftfe_1_1dft_utils.html#a3b1d6099a85fe1168b8f7fd56b1a646d',1,'dftfe::dftUtils']]], + ['getpartialoccupancyder_116',['getPartialOccupancyDer',['../namespacedftfe_1_1dft_utils.html#aca959162fdbd949b5a6c8a24b5ff452f',1,'dftfe::dftUtils']]], + ['getpbc_117',['getPBC',['../classdftfe_1_1dftfe_wrapper.html#a57374f5f734264a67d2f3c9241f715ec',1,'dftfe::dftfeWrapper']]], + ['getperturbedvselffieldbins_118',['getPerturbedVselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#aa5d89fc0d05a58d01c4ec6957e4ede40',1,'dftfe::vselfBinsManager']]], + ['getphiexteshelbytensor_119',['getPhiExtEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#ae4943ba115afd83f3e7a0025780a2b3b',1,'dftfe::eshelbyTensor']]], + ['getposition_120',['getposition',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a34d8be4f57a3e57a161eaee9e78c8077',1,'dftfe::utils::OptimizedIndexSet::getPosition(const OptimizedIndexSet< T > &rhs) const'],['../classdftfe_1_1utils_1_1_optimized_index_set.html#accc081bd8fccbdfd2158dc0be623571e',1,'dftfe::utils::OptimizedIndexSet::getPosition(const T &index, size_type &pos, bool &found) const']]], + ['getprocessgriddftfescalawrapper_121',['getProcessGridDftfeScalaWrapper',['../classdftfe_1_1elpa_scala_manager.html#a03ef49385d301a5ca4080137f318f38c',1,'dftfe::elpaScalaManager']]], + ['getprojectorkettimesvectorsingle_122',['getProjectorKetTimesVectorSingle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6f96fdacda4fd2b24fe77657fc75e982',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getradialfunctionval_123',['getRadialFunctionVal',['../namespacedftfe_1_1pseudo_utils.html#a92c8700497662dd7074f4ada5f245a3a',1,'dftfe::pseudoUtils']]], + ['getrequestingrankids_124',['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_125',['getrhonodalout',['../classdftfe_1_1dft_base.html#a4b49c03e2c305ce7319a1f2dda1483df',1,'dftfe::dftBase::getRhoNodalOut()'],['../classdftfe_1_1dft_class.html#ad537f0ae13a30350e70c831233229684',1,'dftfe::dftClass::getRhoNodalOut() const']]], + ['getrhonodalsplitout_126',['getrhonodalsplitout',['../classdftfe_1_1dft_class.html#a4338b168e40fc4ec5fb346a2fdb7704a',1,'dftfe::dftClass::getRhoNodalSplitOut()'],['../classdftfe_1_1dft_base.html#a28c0349208b040d8e5401e9e70f4e653',1,'dftfe::dftBase::getRhoNodalSplitOut()']]], + ['getscalapackblocksize_127',['getScalapackBlockSize',['../classdftfe_1_1elpa_scala_manager.html#a8f5ddee28fdf6d685d3789bd54f51da2',1,'dftfe::elpaScalaManager']]], + ['getserialmeshelectrostatics_128',['getSerialMeshElectrostatics',['../classdftfe_1_1triangulation_manager.html#aaf857f746830b6a43a3184e03d56238f',1,'dftfe::triangulationManager']]], + ['getserialmeshunmoved_129',['getSerialMeshUnmoved',['../classdftfe_1_1triangulation_manager.html#ad9084fa7531268e66d8b14735e1dbd73',1,'dftfe::triangulationManager']]], + ['getshadowpotentialforcerhodiffxceshelbytensor_130',['getShadowPotentialForceRhoDiffXcEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#a0b4ba3f6ac49888b72b58e631f2fe9cb',1,'dftfe::eshelbyTensor']]], + ['getshapefunctiongradientintegral_131',['getShapeFunctionGradientIntegral',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9d93b4dcfb278650d643fa6bbb7736a6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getshapefunctiongradientintegralelectro_132',['getShapeFunctionGradientIntegralElectro',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad5f0fab6e146df07ef22c7ab31ba0d5f',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getshapefunctiongradientvaluesnlptransposed_133',['getshapefunctiongradientvaluesnlptransposed',['../classdftfe_1_1operator_d_f_t_class.html#a2fb6c674783ec151819bd0ebbea719ab',1,'dftfe::operatorDFTClass::getShapeFunctionGradientValuesNLPTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1b11dab18fb77af4543fc94715addeef',1,'dftfe::kohnShamDFTOperatorDeviceClass::getShapeFunctionGradientValuesNLPTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae1fc2c12c8bc94d1f7b30ea15b0e9f33',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionGradientValuesNLPTransposed()']]], + ['getshapefunctiongradvaluesdensitygaussquad_134',['getshapefunctiongradvaluesdensitygaussquad',['../classdftfe_1_1operator_d_f_t_class.html#a72d3808f8c21a2ab5174a16941bd2efd',1,'dftfe::operatorDFTClass::getShapeFunctionGradValuesDensityGaussQuad()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aa11498552acab58b6ddd4dc87ea70809',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionGradValuesDensityGaussQuad()']]], + ['getshapefunctionvalues_135',['getShapeFunctionValues',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a96feaa3a7f326b82a9e37aa189a3f954',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getshapefunctionvaluesdensitygausslobattoquad_136',['getshapefunctionvaluesdensitygausslobattoquad',['../classdftfe_1_1operator_d_f_t_class.html#aef9e6a15a5acaec6a6c4ae13b8d164ce',1,'dftfe::operatorDFTClass::getShapeFunctionValuesDensityGaussLobattoQuad()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ab50ef5fc3b3f0026d0c19f39bce18cec',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionValuesDensityGaussLobattoQuad()']]], + ['getshapefunctionvaluesdensitygaussquad_137',['getshapefunctionvaluesdensitygaussquad',['../classdftfe_1_1operator_d_f_t_class.html#a9fe670a4509d01cb0358494959a10535',1,'dftfe::operatorDFTClass::getShapeFunctionValuesDensityGaussQuad()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ad59e50e6d499bc1c1c6bd581bea77fbf',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionValuesDensityGaussQuad()']]], + ['getshapefunctionvaluesdensitytransposed_138',['getshapefunctionvaluesdensitytransposed',['../classdftfe_1_1operator_d_f_t_class.html#aa2f2331bc5ba133ca2f51f8101203ab7',1,'dftfe::operatorDFTClass::getShapeFunctionValuesDensityTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a88ec6f05d1738e7f958f3ab828cb6b44',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionValuesDensityTransposed()']]], + ['getshapefunctionvaluesnlptransposed_139',['getshapefunctionvaluesnlptransposed',['../classdftfe_1_1operator_d_f_t_class.html#a34c203527ccbbc63245a20fe7d829c42',1,'dftfe::operatorDFTClass::getShapeFunctionValuesNLPTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a33021fc435ab0783b454f84e4954d08b',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionValuesNLPTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aac83a4f4eb50e53121e5fab219cc9f5d',1,'dftfe::kohnShamDFTOperatorDeviceClass::getShapeFunctionValuesNLPTransposed()']]], + ['getshapefunctionvaluestransposed_140',['getShapeFunctionValuesTransposed',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a28620067a4c7569b787fec555910dfd6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getsphericalharmonicval_141',['getSphericalHarmonicVal',['../namespacedftfe_1_1pseudo_utils.html#ab994c096d849a2c2ea597c48cd3120ad',1,'dftfe::pseudoUtils']]], + ['getsqrtmassvec_142',['getSqrtMassVec',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a770af3543b6ecc699a05e9621c116c7a',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getstoredadaptiveballradius_143',['getStoredAdaptiveBallRadius',['../classdftfe_1_1vself_bins_manager.html#a597b20011ff3b55472cd08adbd275a4a',1,'dftfe::vselfBinsManager']]], + ['getstress_144',['getStress',['../classdftfe_1_1force_class.html#af0aa3f0ac898dd377c07f978ad5841f6',1,'dftfe::forceClass']]], + ['getstresscorrection_145',['getStressCorrection',['../classdftfe_1_1dispersion_correction.html#a29557331a7c21cacc72363349568546f',1,'dftfe::dispersionCorrection']]], + ['gettargetprocids_146',['getTargetProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a68fb7688f3dbfa750e5c40ef192a7464',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['gettolerance_147',['getTolerance',['../classdftfe_1_1non_linear_solver.html#a86a71cd616e82b4fc4a010447ae4cb0b',1,'dftfe::nonLinearSolver']]], + ['gettotalchargeforrhosplit_148',['gettotalchargeforrhosplit',['../classdftfe_1_1dft_base.html#ac755de640ef6723cdeb031e038b580b9',1,'dftfe::dftBase::getTotalChargeforRhoSplit()'],['../classdftfe_1_1dft_class.html#aa1ee9f1dfbde478cb2b65a34aa958f67',1,'dftfe::dftClass::getTotalChargeforRhoSplit()']]], + ['getunknowncountflag_149',['getunknowncountflag',['../classdftfe_1_1nudged_elastic_band_class.html#a6fa4140e9abab6987bb0e377fbc74e78',1,'dftfe::nudgedElasticBandClass::getUnknownCountFlag()'],['../classdftfe_1_1nonlinear_solver_problem.html#a8199691b5b2cb164c078be900440a659',1,'dftfe::nonlinearSolverProblem::getUnknownCountFlag()'],['../classdftfe_1_1geo_opt_ion.html#a956ddc51474b65d51e631e2acb355bf3',1,'dftfe::geoOptIon::getUnknownCountFlag()'],['../classdftfe_1_1geo_opt_cell.html#a9a68cbbd70a82f45996f1467c9ed0208',1,'dftfe::geoOptCell::getUnknownCountFlag()']]], + ['getvalenceelectronnumbers_150',['getValenceElectronNumbers',['../classdftfe_1_1dftfe_wrapper.html#a73025873e24f3c62dc566dee33556d31',1,'dftfe::dftfeWrapper']]], + ['getvselfballeshelbytensor_151',['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_152',['getVselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#acfcb9299ef59b63e4b3b350a30923e80',1,'dftfe::vselfBinsManager']]], + ['getvselffieldderrbins_153',['getVselfFieldDerRBins',['../classdftfe_1_1vself_bins_manager.html#a813f7b3e680b81d674c1454cf2d0fca0',1,'dftfe::vselfBinsManager']]], + ['getwavefunctionbasedfamilytype_154',['getwavefunctionbasedfamilytype',['../classdftfe_1_1exc_manager.html#a2c87a6c0f6fc4b892814c422ecdfac4a',1,'dftfe::excManager::getWavefunctionBasedFamilyType()'],['../classdftfe_1_1exc_wavefunction_base_class.html#a83fc31bce9a012e0466c8a282cbe7a1a',1,'dftfe::excWavefunctionBaseClass::getWavefunctionBasedFamilyType()']]], + ['getx_155',['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_156',['GGA',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4ba5d71fd547f20684c4f5463766c0f2b04',1,'dftfe']]], + ['ghostsize_157',['ghostSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aac29fcb8f5ca940da0c86cda2497f43f',1,'dftfe::linearAlgebra::MultiVector']]], + ['global_5fcolumn_158',['global_column',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a11af4d9095e63de77c07fbcf1b34f367',1,'dftfe::ScaLAPACKMatrix']]], + ['global_5frow_159',['global_row',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab49c06fe686f8b2de01a1cec28a3afb2',1,'dftfe::ScaLAPACKMatrix']]], + ['global_5fsize_5ftype_160',['global_size_type',['../namespacedftfe_1_1data_types.html#a8105119c4ab84f3725e29104255b7dc2',1,'dftfe::dataTypes::global_size_type'],['../namespacedftfe.html#a8e7316115aa0be5dcf9bb43d0388ca47',1,'dftfe::global_size_type']]], + ['globalcellid_161',['globalCellId',['../classdftfe_1_1symmetry_class.html#a2d493a3d0002b055bd4e47e0d80a83d9',1,'dftfe::symmetryClass']]], + ['globalhandlesfinalize_162',['globalHandlesFinalize',['../classdftfe_1_1dftfe_wrapper.html#a6edc85d8ba059cb72698758d952444c9',1,'dftfe::dftfeWrapper']]], + ['globalhandlesinitialize_163',['globalHandlesInitialize',['../classdftfe_1_1dftfe_wrapper.html#a2eb91eab3aca3e592ce3fb8e53d01ac0',1,'dftfe::dftfeWrapper']]], + ['globalsize_164',['globalSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a89c298a1b9a03a6728f6fd26f25667d5',1,'dftfe::linearAlgebra::MultiVector']]], + ['globalsizetypevector_165',['GlobalSizeTypeVector',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a28ae9831d200cc9b25fd3b344795d4d6',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['globaltolocal_166',['globalToLocal',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a01ee60d4c7ba6011513140d34adc4e4b',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['gmres_167',['GMRES',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2a803ab643d1056d42f27c626f15168337',1,'dftfe::dealiiLinearSolver']]], + ['gradient_168',['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()']]], + ['gradrho_169',['gradRho',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a7912d60631352c04fdc4ce430fa04e51',1,'dftfe']]], + ['gradrhoinvalues_170',['gradRhoInValues',['../classdftfe_1_1dft_class.html#a7e81fc8a7b1ad9e57e66f38ad7a81815',1,'dftfe::dftClass']]], + ['gradrhoinvaluesspinpolarized_171',['gradRhoInValuesSpinPolarized',['../classdftfe_1_1dft_class.html#ac08bddc3cceef5c3ba60f42542478cba',1,'dftfe::dftClass']]], + ['gradrhooutvalues_172',['gradRhoOutValues',['../classdftfe_1_1dft_class.html#ad4fb590d46fcb4b9d2db5d46cbfdf450',1,'dftfe::dftClass']]], + ['gradrhooutvaluesspinpolarized_173',['gradRhoOutValuesSpinPolarized',['../classdftfe_1_1dft_class.html#ae1e9969d333053ae35a529ff154ad723',1,'dftfe::dftClass']]], + ['gradrhorecvd_174',['gradRhoRecvd',['../classdftfe_1_1symmetry_class.html#afd4dc908a2e1d4ddfbdff922d669055e',1,'dftfe::symmetryClass']]], + ['gramschmidtorthogonalization_175',['gramSchmidtOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#a7c42c60cf8378c3d8bdb8d2d6a97cf00',1,'dftfe::linearAlgebraOperations']]], + ['grid_176',['grid',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2b6dd32bd3f44887d3833ee19fcc44bd',1,'dftfe::ScaLAPACKMatrix']]], + ['groupoffsets_177',['groupOffsets',['../classdftfe_1_1symmetry_class.html#a5d6b26082735330a4ef9b8fd05fd26ac',1,'dftfe::symmetryClass']]], + ['gvec_178',['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..95def9644 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['h_5fd_5fa_0',['h_d_A',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#af0467e9124f5a43d915417caceda56e6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['h_5fd_5fb_1',['h_d_B',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a06ab28599d55d8f9a9b2ee99fe6074fe',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['h_5fd_5fc_2',['h_d_C',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aa6e2a81becacfda4f4c10f5994f4d949',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['haperbohrtoevperang_3',['haPerBohrToeVPerAng',['../classdftfe_1_1molecular_dynamics_class.html#ae6facb80fc18889cada2d2f0b548527d',1,'dftfe::molecularDynamicsClass']]], + ['hatoev_4',['haToeV',['../classdftfe_1_1molecular_dynamics_class.html#aa4ff0cbe5e3e00d1b3284d9fbdf3a5b5',1,'dftfe::molecularDynamicsClass']]], + ['haveallincomingmsgsreceived_5',['haveAllIncomingMsgsReceived',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a9976370f3a761778aa4f93a219696ddb',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['havealllocalsendreceived_6',['haveAllLocalSendReceived',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#afe6d8fea4abc84150e1fbc00967d60bf',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['headers_2eh_7',['headers.h',['../headers_8h.html',1,'']]], + ['hermitian_8',['hermitian',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9acacb022b5e749ecd8aded585fa69365425',1,'dftfe::LAPACKSupport']]], + ['hessenberg_9',['hessenberg',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca7c62e84843fe08403ca442daf6d76bd3',1,'dftfe::LAPACKSupport']]], + ['higheststateofinterestforchebfiltering_10',['highestStateOfInterestForChebFiltering',['../classdftfe_1_1dft_parameters.html#a8edabe09740d03d7368e5a7731bc2539',1,'dftfe::dftParameters']]], + ['host_11',['HOST',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ab9361011891280a44d85b967739cc6a5',1,'dftfe::utils']]], + ['host_5fpinned_12',['HOST_PINNED',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ac018c446839606eb033754630abaf31a',1,'dftfe::utils']]], + ['hubbard_13',['HUBBARD',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800a499b1eab54c72369d29e962da3c6e59c',1,'dftfe']]], + ['hvec_14',['hvec',['../classdftfe_1_1dealii_linear_solver.html#acb4b656e30476b8c7d49347ceafbba60',1,'dftfe::dealiiLinearSolver']]], + ['hx_15',['hx',['../classdftfe_1_1operator_d_f_t_class.html#a69976c59c41b7815904beb4603fa2487',1,'dftfe::operatorDFTClass::HX(distributedCPUMultiVec< dataTypes::number > &X, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &Y, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0'],['../classdftfe_1_1operator_d_f_t_class.html#a40e26e1d155c81d7f2f3a914411ff167',1,'dftfe::operatorDFTClass::HX(distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)=0'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a05f09bcf0961075c5b07a96ad4da7827',1,'dftfe::kohnShamDFTOperatorDeviceClass::HX(distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::numberFP32 > &srcFloat, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool singlePrecCommun=false, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a68889e93723a69af26d3e2b546842ea6',1,'dftfe::kohnShamDFTOperatorDeviceClass::HX(distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a4aaff916487a00fe5474e0d00d894451',1,'dftfe::kohnShamDFTOperatorClass::HX(distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberComponents, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae70bd92b273a1ba50a7aa80839fb5177',1,'dftfe::kohnShamDFTOperatorClass::HX(distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)']]], + ['hxcheby_16',['HXCheby',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6e0349c170805e1d01e58e8eac9f7154',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['hxoptimflag_17',['HXOptimFlag',['../classdftfe_1_1dft_parameters.html#a2d253b597ded056bd5f971df0fa4db4a',1,'dftfe::dftParameters']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..d6e887018 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,82 @@ +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#a67ad4aadd9aae23351fae41a01e3545a',1,'dftfe::utils::imagPart(const std::complex< float > x)'],['../namespacedftfe_1_1utils.html#ae35ca17dde4837542c9a9ed655127fb0',1,'dftfe::utils::imagPart(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#ab16e4e326821b23e375effb6110d9e8c',1,'dftfe::utils::imagPart(const float x)'],['../namespacedftfe_1_1utils.html#aed61a5800334465a12d3b74a1d05e276',1,'dftfe::utils::imagPart(const double x)']]], + ['imagpartdevice_5',['imagpartdevice',['../namespacedftfe_1_1utils.html#af09a337b3066e3da64c3fc94795ae60e',1,'dftfe::utils::imagPartDevice(hipFloatComplex a)'],['../namespacedftfe_1_1utils.html#ab4b591cf0ee10862af17814b05ced86b',1,'dftfe::utils::imagPartDevice(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#aa9ba4a8a0b7a5ee4808e84cbf398efaa',1,'dftfe::utils::imagPartDevice(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#a0b3337020d958b4d0502192cc844f6d7',1,'dftfe::utils::imagPartDevice(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#abeb54dc4120086f8f229e70c3b17f018',1,'dftfe::utils::imagPartDevice(float a)'],['../namespacedftfe_1_1utils.html#ac495c3ee3482c45e4f7329ac1c873d9c',1,'dftfe::utils::imagPartDevice(double 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_1dft_class.html#ac7d9a59be360d9894e1814c2202917c5',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_base.html#ad83a04ecb7994053d073e5163c2d0bbf',1,'dftfe::basis::FEBasisOperationsBase::init()'],['../classdftfe_1_1geometry_optimization_class.html#a3bdef8d6aed2085ede33ba4fdd8f046d',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#a8d0337ed862ba1e78d5f7857463491b0',1,'dftfe::kerkerSolverProblem::init()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a43dcf4d000275fbc4ec08890f2ee1b44',1,'dftfe::kohnShamDFTOperatorClass::init()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a0c5588c520dd62e8fec12b285b5c2c65',1,'dftfe::kohnShamDFTOperatorDeviceClass::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#a80fa7f3f45b09a506263704708b6635f',1,'dftfe::operatorDFTClass::init()']]], + ['initatomicrho_10',['initAtomicRho',['../classdftfe_1_1dft_class.html#a694cdc03ceaf1320f91521b1db6df0c7',1,'dftfe::dftClass']]], + ['initboundaryconditions_11',['initBoundaryConditions',['../classdftfe_1_1dft_class.html#af86dd0c3470400d2828536ad13057eb9',1,'dftfe::dftClass']]], + ['initcellwavefunctionmatrix_12',['initcellwavefunctionmatrix',['../classdftfe_1_1operator_d_f_t_class.html#a88819dd3cdbf5c5f1375952111c50c36',1,'dftfe::operatorDFTClass::initCellWaveFunctionMatrix()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a9f2ffee058164425fa710bc54d85c22d',1,'dftfe::kohnShamDFTOperatorClass::initCellWaveFunctionMatrix()']]], + ['initcorerho_13',['initCoreRho',['../classdftfe_1_1dft_class.html#a05ceef5928109937df6ba0bb722e2316',1,'dftfe::dftClass']]], + ['initdispersioncorrection_14',['initDispersionCorrection',['../classdftfe_1_1dispersion_correction.html#ad90170234d82c2abccdccd7ed626c7f2',1,'dftfe::dispersionCorrection']]], + ['initelectronicfields_15',['initElectronicFields',['../classdftfe_1_1dft_class.html#a8c7516e63cd258b32a7b858ade2b7ee9',1,'dftfe::dftClass']]], + ['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']]], + ['initialize_18',['initialize',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a9db89413f0cdaa5d656a498f001f2dff',1,'dftfe::dftUtils::constraintMatrixInfo::initialize()'],['../classdftfe_1_1dftfe_wrapper.html#a5411c937be76d912296bf78f8f01ffa3',1,'dftfe::dftfeWrapper::initialize()']]], + ['initializeconstraints_19',['initializeConstraints',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#abb9bb559b0d08ac9eca8e7547b99b135',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializedirection_20',['initializeDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a9b7d95a108a92a9f36ce976bf0d781f5',1,'dftfe::cgPRPNonLinearSolver']]], + ['initializeflattenedindexmaps_21',['initializeFlattenedIndexMaps',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a5e1dd3d777ecdbbf0d9475898f4a6a6f',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializehessian_22',['initializeHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a992f4a89d42c6b7f74ecf820fc1b335b',1,'dftfe::BFGSNonLinearSolver']]], + ['initializeindexmaps_23',['initializeIndexMaps',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aec60c24e4e86a72094735a4fc3441fa5',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializekohnshamdftoperator_24',['initializeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#a558bcd6354d8754c22166a44fc094239',1,'dftfe::dftClass']]], + ['initializempipattern_25',['initializeMPIPattern',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ae415b0960317d0f8914ac82e42f1c2ab',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializepreconditioner_26',['initializePreconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a3c41f3e300ce422a08a0d9ba26b1b716',1,'dftfe::LBFGSNonLinearSolver']]], + ['initializeshapefunctionandjacobianbasisdata_27',['initializeShapeFunctionAndJacobianBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#afe40beecff726dfc2444ab8364706105',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializeshapefunctionandjacobiandata_28',['initializeShapeFunctionAndJacobianData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a3c587804034c7883ebd5039252f8949a',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initimagechargesupdatekpoints_29',['initImageChargesUpdateKPoints',['../classdftfe_1_1dft_class.html#af31a345ee59fdd47fcb0f17ae5ae1461',1,'dftfe::dftClass']]], + ['initincrementfield_30',['initIncrementField',['../classdftfe_1_1mesh_movement_class.html#a68ff885f785f2f2cae50f6771024c843',1,'dftfe::meshMovementClass']]], + ['initlocalpseudopotential_31',['initLocalPseudoPotential',['../classdftfe_1_1dft_class.html#a40d28a52e17782c4a190726fc670607c',1,'dftfe::dftClass']]], + ['initmoved_32',['initmoved',['../classdftfe_1_1force_class.html#af7c239dc6ecd916e5b680d20fad0cbe6',1,'dftfe::forceClass::initMoved()'],['../classdftfe_1_1mesh_movement_class.html#a1331833cc5f77c2ef8b4ae84a1e74f16',1,'dftfe::meshMovementClass::initMoved()']]], + ['initnonlocalpseudopotential_5fov_33',['initNonLocalPseudoPotential_OV',['../classdftfe_1_1dft_class.html#a99f4b3bbde78bfc58bef2c20725fe151',1,'dftfe::dftClass']]], + ['initnoremesh_34',['initNoRemesh',['../classdftfe_1_1dft_class.html#a040025c96838cf91d45081294068a92f',1,'dftfe::dftClass']]], + ['initnscf_35',['initnscf',['../classdftfe_1_1dft_class.html#a27192bc8d8f275f8bc2d02caa747bffb',1,'dftfe::dftClass']]], + ['initprefinedobjects_36',['initpRefinedObjects',['../classdftfe_1_1dft_class.html#ac192c60bc7c10cce3c20755a38fa289b',1,'dftfe::dftClass']]], + ['initpseudodata_37',['initPseudoData',['../classdftfe_1_1force_class.html#ab4bef4493100e99f2cf633df1ac38f0d',1,'dftfe::forceClass']]], + ['initpseudopotentialall_38',['initPseudoPotentialAll',['../classdftfe_1_1dft_class.html#aaa2a304a03a18fe6d1f09acd7d94c317',1,'dftfe::dftClass']]], + ['initrho_39',['initRho',['../classdftfe_1_1dft_class.html#a19d02db24be71dbbaef10d477e11991b',1,'dftfe::dftClass']]], + ['initsymmetry_40',['initSymmetry',['../classdftfe_1_1symmetry_class.html#a19477a75efe70eb4380f9a102e980b5d',1,'dftfe::symmetryClass']]], + ['initunmoved_41',['initUnmoved',['../classdftfe_1_1force_class.html#aa07a8c1dfd14038364aa2204a65eed01',1,'dftfe::forceClass']]], + ['initunmovedtriangulation_42',['initUnmovedTriangulation',['../classdftfe_1_1dft_class.html#a7cf5877125604b46ab2523d76b46c3f5',1,'dftfe::dftClass']]], + ['initwithscalar_43',['initwithscalar',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#abeb19e7bc4ea3b09dd829af74ae52aa2',1,'dftfe::kohnShamDFTOperatorClass::initWithScalar()'],['../classdftfe_1_1operator_d_f_t_class.html#a18cd3d2fac6fb79d2f2d7018f7adccf1',1,'dftfe::operatorDFTClass::initWithScalar()']]], + ['inlocallyownedrange_44',['inLocallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa5c2eb07ba77efe1c676c31677ecb5c6',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['inneratomballradius_45',['innerAtomBallRadius',['../classdftfe_1_1dft_parameters.html#a14122952a8edbc41b5adaa1830a5b45f',1,'dftfe::dftParameters']]], + ['installation_20instructions_46',['Installation instructions',['../index.html#autotoc_md1',1,'']]], + ['instructions_47',['Installation instructions',['../index.html#autotoc_md1',1,'']]], + ['integratewithbasis_48',['integrateWithBasis',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a8874c27110a152028207db585b7c85b8',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['integratewithbasiskernel_49',['integrateWithBasisKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a9ac151c90928e46eea5d8d3ce0ee5fcd',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['interbandgroupcomm_50',['interbandgroupcomm',['../classdftfe_1_1dft_class.html#a34e9962b65570641a114376ac4451bff',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_51',['interpolate',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a21b35cee07e1ad9a91b64b4ad6a9f594',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['interpolateelectronodaldatatoquadraturedatageneral_52',['interpolateElectroNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#a4442d96f9b3e055c9da39e18c78f2f43',1,'dftfe::dftClass']]], + ['interpolatekernel_53',['interpolatekernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a57898c3099623a8dfd861deb2cb6bed1',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::interpolateKernel(const ValueTypeBasisCoeff *nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#ac8cb98519bcc395ec01dcd585efa75d9',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::interpolateKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const']]], + ['interpolaterhonodaldatatoquadraturedatageneral_54',['interpolateRhoNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#a325ec6bfe00281b07b2bd666279e129b',1,'dftfe::dftClass']]], + ['interpolaterhonodaldatatoquadraturedatalpsp_55',['interpolateRhoNodalDataToQuadratureDataLpsp',['../classdftfe_1_1dft_class.html#a3e99cc5e7ba9e3b2d7ca0b27243bcf45',1,'dftfe::dftClass']]], + ['interpolaterhospinnodaldatatoquadraturedatageneral_56',['interpolateRhoSpinNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#a5ac5ab100e53d92dcf11b91ff6daccd9',1,'dftfe::dftClass']]], + ['interpoolcomm_57',['interpoolcomm',['../classdftfe_1_1dft_class.html#ae5a1f08638ddcf27853350014e08e016',1,'dftfe::dftClass::interpoolcomm'],['../classdftfe_1_1dispersion_correction.html#ada4c59c7adac52a432d3ad3c3387ccfb',1,'dftfe::dispersionCorrection::interpoolcomm'],['../classdftfe_1_1triangulation_manager.html#a1954e08d84b8b81a0b18c64ec6fbe319',1,'dftfe::triangulationManager::interpoolcomm'],['../classdftfe_1_1symmetry_class.html#a85ab7ce148c7cbff2bea3d9c1dd2561b',1,'dftfe::symmetryClass::interpoolcomm'],['../classdftfe_1_1energy_calculator.html#a41ec32dc83b3a8b479fbdd93ca195a98',1,'dftfe::energyCalculator::interpoolcomm'],['../classdftfe_1_1dft_utils_1_1_pool.html#a76a35fe0aab1b1f3f12ad90ffb399495',1,'dftfe::dftUtils::Pool::interpoolcomm']]], + ['intrapoolcomm_58',['intrapoolcomm',['../classdftfe_1_1dft_utils_1_1_pool.html#af439a9ab17f312365f4a205f9235f370',1,'dftfe::dftUtils::Pool']]], + ['invalidargument_59',['InvalidArgument',['../namespacedftfe_1_1utils.html#aaae0795e8e681ca41c28a327428a7f37',1,'dftfe::utils']]], + ['inverse_60',['inverse',['../namespacedftfe_1_1linear_algebra_operations.html#a23f3bab0880944554667262d1ce5b359',1,'dftfe::linearAlgebraOperations']]], + ['inverse_5fmatrix_61',['inverse_matrix',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06ac88730880d15c57da31f903746c1deec',1,'dftfe::LAPACKSupport']]], + ['inverse_5fsvd_62',['inverse_svd',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06ae4a1f4347768b85c5437bd74cd95cc18',1,'dftfe::LAPACKSupport']]], + ['inversejacobians_63',['inverseJacobians',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aa267e644c242380c675bd1e7f02e4b76',1,'dftfe::basis::FEBasisOperationsBase']]], + ['inversejacobiansbasisdata_64',['inversejacobiansbasisdata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a695495b84c3d4a2127e08e32f2bc9238',1,'dftfe::basis::FEBasisOperationsBase::inverseJacobiansBasisData() const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a695495b84c3d4a2127e08e32f2bc9238',1,'dftfe::basis::FEBasisOperationsBase::inverseJacobiansBasisData() const']]], + ['invert_65',['invert',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a86e064ead5d748e9bfab51124535c735',1,'dftfe::ScaLAPACKMatrix']]], + ['ionoptsolver_66',['ionOptSolver',['../classdftfe_1_1dft_parameters.html#a71824922b64eb0c464ef2080c8b1781f',1,'dftfe::dftParameters']]], + ['ionrelaxflagsfile_67',['ionrelaxflagsfile',['../classdftfe_1_1run_parameters.html#ae97220db8e513d3f161b292d2b7b0d06',1,'dftfe::runParameters::ionRelaxFlagsFile'],['../classdftfe_1_1dft_parameters.html#ab3ad2a383b92fc7d4c89556e7bdbcbac',1,'dftfe::dftParameters::ionRelaxFlagsFile']]], + ['ipiv_68',['ipiv',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2005c068c6ebfb84b9b96827e40675d6',1,'dftfe::ScaLAPACKMatrix']]], + ['is_5fprocess_5factive_69',['is_process_active',['../classdftfe_1_1_process_grid.html#a291c7432cd6a8b215a9ff18d8721f693',1,'dftfe::ProcessGrid']]], + ['isbomd_70',['isBOMD',['../classdftfe_1_1dft_parameters.html#a47001959cd3860328119ab9ec2966e2d',1,'dftfe::dftParameters']]], + ['iscellstress_71',['isCellStress',['../classdftfe_1_1dft_parameters.html#ab1e0f6fd150f730c6306c0ef684676a0',1,'dftfe::dftParameters']]], + ['iscompatible_72',['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_73',['isconverged',['../classdftfe_1_1nudged_elastic_band_class.html#a8e25700ef519442e7dffd4bd54967799',1,'dftfe::nudgedElasticBandClass::isConverged()'],['../classdftfe_1_1nonlinear_solver_problem.html#a4fe8570a516d3fc119c460c9530bb390',1,'dftfe::nonlinearSolverProblem::isConverged()'],['../classdftfe_1_1geo_opt_ion.html#a3a665f5b328cb5b01792664780bb2524',1,'dftfe::geoOptIon::isConverged()'],['../classdftfe_1_1geo_opt_cell.html#a88304029eedfadb7ba9f4c37f56e6932',1,'dftfe::geoOptCell::isConverged()']]], + ['isghostentry_74',['isGhostEntry',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa9c323f0037592f1fcf8a9d3ff886f28',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['isionforce_75',['isIonForce',['../classdftfe_1_1dft_parameters.html#a8658bb75527cb70972751020e2d12184',1,'dftfe::dftParameters']]], + ['ispseudopotential_76',['isPseudopotential',['../classdftfe_1_1dft_parameters.html#aa2d71539a32d57c06c169ad1c342da25',1,'dftfe::dftParameters']]], + ['iterator_77',['iterator',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a68ade957d1d1d3dff51c24f3e3095366',1,'dftfe::linearAlgebra::MultiVector::iterator'],['../classdftfe_1_1utils_1_1_memory_storage.html#a24dd6fe5c4072fc009b6714e5ee36006',1,'dftfe::utils::MemoryStorage::iterator']]], + ['iwork_78',['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..6a367dba8 --- /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_base.html#a3605e3bcc6b0b43f5d21e59e137f54e3',1,'dftfe::basis::FEBasisOperationsBase']]], + ['jxwbasisdata_1',['jxwbasisdata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a6cef402c34f321fbed6b8c45be6e9f74',1,'dftfe::basis::FEBasisOperationsBase::JxWBasisData() const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a6cef402c34f321fbed6b8c45be6e9f74',1,'dftfe::basis::FEBasisOperationsBase::JxWBasisData() const']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 000000000..0890ee24c --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,21 @@ +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']]], + ['kohnshamdftoperator_2eh_8',['kohnShamDFTOperator.h',['../kohn_sham_d_f_t_operator_8h.html',1,'']]], + ['kohnshamdftoperatorclass_9',['kohnshamdftoperatorclass',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html',1,'dftfe::kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aed7d96d26e0e7887ba8f0a725d779cdb',1,'dftfe::kohnShamDFTOperatorClass::kohnShamDFTOperatorClass()']]], + ['kohnshamdftoperatorclass_3c_20feorder_2c_20feorderelectro_20_3e_10',['kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >',['../classdftfe_1_1dft_class.html#a51d87e1fd28f7908a7ffe3d0b26e6dde',1,'dftfe::dftClass']]], + ['kohnshamdftoperatordevice_2eh_11',['kohnShamDFTOperatorDevice.h',['../kohn_sham_d_f_t_operator_device_8h.html',1,'']]], + ['kohnshamdftoperatordeviceclass_12',['kohnshamdftoperatordeviceclass',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html',1,'dftfe::kohnShamDFTOperatorDeviceClass< FEOrder, FEOrderElectro >'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ae9da5cbace89e53fdda9c919fa2866bd',1,'dftfe::kohnShamDFTOperatorDeviceClass::kohnShamDFTOperatorDeviceClass()']]], + ['kohnshameigenspacecompute_13',['kohnShamEigenSpaceCompute',['../classdftfe_1_1dft_class.html#a4136dcb837619618ac059e6b68cf9113',1,'dftfe::dftClass']]], + ['kohnshameigenspacecomputenscf_14',['kohnShamEigenSpaceComputeNSCF',['../classdftfe_1_1dft_class.html#a72e7481f9c57dda62933ebed1686b325',1,'dftfe::dftClass']]], + ['kohnshameigenspacefirstorderdensitymatresponse_15',['kohnShamEigenSpaceFirstOrderDensityMatResponse',['../classdftfe_1_1dft_class.html#a6358969823490069fd258cd03f4599ee',1,'dftfe::dftClass']]], + ['kpointdatafile_16',['kPointDataFile',['../classdftfe_1_1dft_parameters.html#abd346febbdb6ff2aff7235feaaf261b3',1,'dftfe::dftParameters']]], + ['kpointreducedcoordinates_17',['kPointReducedCoordinates',['../classdftfe_1_1dft_class.html#a698bce68d29fed933acc39db9e3e87d7',1,'dftfe::dftClass']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 000000000..70cfa2b68 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,68 @@ +var searchData= +[ + ['l_0',['L',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#ab15119670c346dc06775fbbb0c6d2468',1,'dftfe::LAPACKSupport']]], + ['l1_1',['l1',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a4e5d282b1216f77662ff96943af3efe0',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['l2_2',['l2',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a17003cc3408dd26233fbd4e6f3c3d7ed',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['l2norm_3',['l2Norm',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9ac79ee1dc416decda9c75162fca20eb',1,'dftfe::linearAlgebra::MultiVector']]], + ['l2projectionquaddensityminusatomicdensity_4',['l2ProjectionQuadDensityMinusAtomicDensity',['../classdftfe_1_1dft_class.html#a0cad95ff0dfc571b65c961f298e7bbc2',1,'dftfe::dftClass']]], + ['l2projectionquadtonodal_5',['l2ProjectionQuadToNodal',['../classdftfe_1_1dft_class.html#aa8db3c424484949453484d347d5dba02',1,'dftfe::dftClass']]], + ['l3_6',['l3',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a7993559de672ded6a000be0a8d8bac48',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['lanczoslowerupperboundeigenspectrum_7',['lanczosLowerUpperBoundEigenSpectrum',['../namespacedftfe_1_1linear_algebra_operations.html#abaf4cb41c3474eced2619d5cab9f36ea',1,'dftfe::linearAlgebraOperations']]], + ['lapack_5fsupport_2eh_8',['lapack_support.h',['../lapack__support_8h.html',1,'']]], + ['lbfgsnonlinearsolver_9',['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_10',['LBFGSNonLinearSolver.h',['../_l_b_f_g_s_non_linear_solver_8h.html',1,'']]], + ['lbfgsnumpaststeps_11',['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_12',['LDA',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4bad67a2b071440202a4daa9c2c8bd718c7',1,'dftfe']]], + ['lengtherror_13',['LengthError',['../namespacedftfe_1_1utils.html#ab8f54b4afe20ba29b5518547371cde40',1,'dftfe::utils']]], + ['lengthofhistory_14',['lengthOfHistory',['../classdftfe_1_1_mixing_scheme.html#a33e3e4d30549f45298088889341dab8e',1,'dftfe::MixingScheme']]], + ['librarymdi_2eh_15',['libraryMDI.h',['../library_m_d_i_8h.html',1,'']]], + ['license_16',['License',['../index.html#autotoc_md5',1,'']]], + ['linearalgebraoperations_2eh_17',['linearAlgebraOperations.h',['../linear_algebra_operations_8h.html',1,'']]], + ['linearalgebraoperationsdevice_2eh_18',['linearAlgebraOperationsDevice.h',['../linear_algebra_operations_device_8h.html',1,'']]], + ['linearalgebraoperationsinternal_2eh_19',['linearAlgebraOperationsInternal.h',['../linear_algebra_operations_internal_8h.html',1,'']]], + ['linearsolver_20',['linearsolver',['../classdftfe_1_1linear_solver.html',1,'dftfe::linearSolver'],['../classdftfe_1_1linear_solver.html#a33487090706c6ea4df5b550843aa608d',1,'dftfe::linearSolver::linearSolver()']]], + ['linearsolver_2eh_21',['linearSolver.h',['../linear_solver_8h.html',1,'']]], + ['linearsolvercgdevice_2eh_22',['linearSolverCGDevice.h',['../linear_solver_c_g_device_8h.html',1,'']]], + ['linearsolverdevice_2eh_23',['linearSolverDevice.h',['../linear_solver_device_8h.html',1,'']]], + ['linearsolverproblemdevice_2eh_24',['linearSolverProblemDevice.h',['../linear_solver_problem_device_8h.html',1,'']]], + ['linesearch_25',['lineSearch',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a20da76a8080aeaf04af92bf1cb83b5dd',1,'dftfe::cgPRPNonLinearSolver']]], + ['linesearch_5ffailed_26',['LINESEARCH_FAILED',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a78ffc2d02aa9fcc54c3a28e2aab47728',1,'dftfe::nonLinearSolver']]], + ['lnorm_27',['LNorm',['../classdftfe_1_1nudged_elastic_band_class.html#a3593fe4caca6c5c316e73d257d98c535',1,'dftfe::nudgedElasticBandClass']]], + ['load_28',['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_29',['loadPSIFiles',['../classdftfe_1_1dft_class.html#afdd097736b7eec47ff7781dae9441356',1,'dftfe::dftClass']]], + ['loadrhodata_30',['loadRhoData',['../classdftfe_1_1dft_parameters.html#a8acf68f17d1766b507161475cc672fd8',1,'dftfe::dftParameters']]], + ['loadsupporttriangulations_31',['loadSupportTriangulations',['../classdftfe_1_1triangulation_manager.html#a6b6fe245e9ffd6a9f5e278e7e2436805',1,'dftfe::triangulationManager']]], + ['loadtriainfoandrhonodaldata_32',['loadTriaInfoAndRhoNodalData',['../classdftfe_1_1dft_class.html#a8cb56e0c0eba246c362e3d105744b109',1,'dftfe::dftClass']]], + ['loadtriangulationssolutionvectors_33',['loadTriangulationsSolutionVectors',['../classdftfe_1_1triangulation_manager.html#a00b82059f0d591e5a7cbf4bf949f229c',1,'dftfe::triangulationManager']]], + ['loc_5fpot_34',['loc_pot',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a463e9cae5ff29bcac747dcc5b7dae6c0',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['local_5fdof_5findicesimag_35',['local_dof_indicesImag',['../classdftfe_1_1dft_class.html#aa0cfc0ea727cb0889edafc0470dff1b4',1,'dftfe::dftClass']]], + ['local_5fdof_5findicesreal_36',['local_dof_indicesReal',['../classdftfe_1_1dft_class.html#aa7a6130fe8c493c00b19aedbf341ea01',1,'dftfe::dftClass']]], + ['local_5fel_37',['local_el',['../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)'],['../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']]], + ['local_5fm_38',['local_m',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a34aea7e92abd44b2a47142f2fa546671',1,'dftfe::ScaLAPACKMatrix']]], + ['local_5fn_39',['local_n',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1022e93c172ae09f9f976f769435dc82',1,'dftfe::ScaLAPACKMatrix']]], + ['local_5fpotential_40',['local_potential',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a1220eddc1b59caac475663a4aa527107',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['local_5fsize_5ftype_41',['local_size_type',['../namespacedftfe_1_1data_types.html#a90afd2e755c16836bd428bc7cf2e8774',1,'dftfe::dataTypes']]], + ['localghostsize_42',['localGhostSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aad7f0c3a7d06dbe6e3f95b6803a2e370',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['locally_5fowned_5fdofs_43',['locally_owned_dofs',['../classdftfe_1_1dft_class.html#a8e26a48512911dbbc8d29751907e2296',1,'dftfe::dftClass']]], + ['locally_5fowned_5fdofseigen_44',['locally_owned_dofsEigen',['../classdftfe_1_1dft_class.html#a5ef185c715df2cac937a122292edef9c',1,'dftfe::dftClass']]], + ['locally_5frelevant_5fdofs_45',['locally_relevant_dofs',['../classdftfe_1_1dft_class.html#ada973b72c5f9440bdd4d66aae8cb9973',1,'dftfe::dftClass']]], + ['locally_5frelevant_5fdofseigen_46',['locally_relevant_dofsEigen',['../classdftfe_1_1dft_class.html#a0dc1e617da4470fcc784e14fc3437d62',1,'dftfe::dftClass']]], + ['locallyownedsize_47',['locallyOwnedSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#abda14af1c27877b59b8da19dd8236a7c',1,'dftfe::linearAlgebra::MultiVector']]], + ['localownedsize_48',['localOwnedSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a5a04593d736021b0e1b4f39f29faa13c',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['localproc_5fdof_5findicesimag_49',['localProc_dof_indicesImag',['../classdftfe_1_1dft_class.html#aaa3ce37284a4b3eb5811841b403cb192',1,'dftfe::dftClass']]], + ['localproc_5fdof_5findicesreal_50',['localProc_dof_indicesReal',['../classdftfe_1_1dft_class.html#ad9eb3b143b9d4e6eeac4b01f057dd75d',1,'dftfe::dftClass']]], + ['localsize_51',['localSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a95ee5193650150d642b7f751ec71c134',1,'dftfe::linearAlgebra::MultiVector']]], + ['localtoglobal_52',['localToGlobal',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0aae8dcbce38023d86848b2532fcdd61',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['locateatomcorenodes_53',['locateAtomCoreNodes',['../classdftfe_1_1dft_class.html#acefa7c077932895aff31e12e3d3dd006',1,'dftfe::dftClass']]], + ['locateatomcorenodesforce_54',['locateAtomCoreNodesForce',['../classdftfe_1_1force_class.html#a216050d52190278152a7e6c04054f0f9',1,'dftfe::forceClass']]], + ['locateatomsinbins_55',['locateAtomsInBins',['../classdftfe_1_1vself_bins_manager.html#a872f830ddc0d284b8194ef221e8ec1f3',1,'dftfe::vselfBinsManager']]], + ['locateperiodicpinnednodes_56',['locatePeriodicPinnedNodes',['../classdftfe_1_1dft_class.html#a3431ce30f145b4a8a5ec7d7a68cc0a91',1,'dftfe::dftClass']]], + ['logicerror_57',['LogicError',['../namespacedftfe_1_1utils.html#ac14217af2ed8ec238a9e8174ef0e9990',1,'dftfe::utils']]], + ['lowdenorthogonalization_58',['lowdenOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#a7fbcfc34fd019e4704b2a8ddf4b1bd94',1,'dftfe::linearAlgebraOperations']]], + ['lower_5ftriangular_59',['lower_triangular',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca5cabb2a79e8f6e35216f706d4d5b431a',1,'dftfe::LAPACKSupport']]], + ['lowerboundkindex_60',['lowerBoundKindex',['../classdftfe_1_1dft_class.html#a3fd188400b5824333d25a381897a8d33',1,'dftfe::dftClass']]], + ['lowrankapproxscfdielectricmatrixinv_61',['lowrankApproxScfDielectricMatrixInv',['../classdftfe_1_1dft_class.html#ad7e350625677650c014c3b1e1ff88cd1',1,'dftfe::dftClass']]], + ['lowrankapproxscfdielectricmatrixinvspinpolarized_62',['lowrankApproxScfDielectricMatrixInvSpinPolarized',['../classdftfe_1_1dft_class.html#add85a6598d48f0cfc0ddd3cdcb670c7e',1,'dftfe::dftClass']]], + ['lu_63',['lu',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06af7657b06d9b721ff8fb58812ac335cfa',1,'dftfe::LAPACKSupport']]], + ['lworkfromwork_64',['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..b3b255454 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,135 @@ +var searchData= +[ + ['m_0',['m',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a58e8a50bfee69f4bf767b41fd4621f52',1,'dftfe::ScaLAPACKMatrix']]], + ['make_5fpositive_1',['MAKE_POSITIVE',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da42e202f66aeadd5ca1dbce7bb91b417f',1,'dftfe']]], + ['makecomplex_2',['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_3',['makedatatypedevicecompatible',['../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)'],['../namespacedftfe_1_1utils.html#adc50be81ab053cacbfc8d5b64183765b',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned int a)'],['../namespacedftfe_1_1utils.html#a23866963f61b778806b3bffe55733340',1,'dftfe::utils::makeDataTypeDeviceCompatible(long int a)'],['../namespacedftfe_1_1utils.html#a543a5f6ce66449bc8a1932838adf9b7e',1,'dftfe::utils::makeDataTypeDeviceCompatible(int a)'],['../namespacedftfe_1_1utils.html#a49256422281abd832bf025f9b3eec849',1,'dftfe::utils::makeDataTypeDeviceCompatible(const std::complex< float > *a)'],['../namespacedftfe_1_1utils.html#af6b64fe1e29492b52d98e01a5d1d1102',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< float > *a)'],['../namespacedftfe_1_1utils.html#aa2cd60a5b28347f01607d8b8624519a0',1,'dftfe::utils::makeDataTypeDeviceCompatible(const std::complex< double > *a)'],['../namespacedftfe_1_1utils.html#a744e1645d9ef70875849ae6f4cdfd885',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< double > *a)'],['../namespacedftfe_1_1utils.html#ac40d9c1e4801701da9b1696d2819a220',1,'dftfe::utils::makeDataTypeDeviceCompatible(const float *a)'],['../namespacedftfe_1_1utils.html#a4ba5fd4ed7fe3832648ce3396e43c950',1,'dftfe::utils::makeDataTypeDeviceCompatible(const unsigned long int *a)'],['../namespacedftfe_1_1utils.html#a97060128d2bcb54fe8953ca50a76cac5',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned long int *a)'],['../namespacedftfe_1_1utils.html#a5b40c4124ecb41075e58807876c4da30',1,'dftfe::utils::makeDataTypeDeviceCompatible(const unsigned int *a)'],['../namespacedftfe_1_1utils.html#ad038cfc024c68794ab17ad3733959c4e',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned int *a)'],['../namespacedftfe_1_1utils.html#aaa3f9c9491ab01be2f4d640b978ec3a2',1,'dftfe::utils::makeDataTypeDeviceCompatible(const long int *a)'],['../namespacedftfe_1_1utils.html#ae303cc24132199268684f6f3253ba75f',1,'dftfe::utils::makeDataTypeDeviceCompatible(long int *a)'],['../namespacedftfe_1_1utils.html#a08df0cd4aadf5df82cec12e103e8e8b9',1,'dftfe::utils::makeDataTypeDeviceCompatible(const int *a)'],['../namespacedftfe_1_1utils.html#a7a1cd29b80e3fe5d280420de996315e8',1,'dftfe::utils::makeDataTypeDeviceCompatible(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)']]], + ['mappedgroup_4',['mappedGroup',['../classdftfe_1_1symmetry_class.html#a75170dd41876dffb74e16ca491a0b424',1,'dftfe::symmetryClass']]], + ['mappedgrouprecvd0_5',['mappedGroupRecvd0',['../classdftfe_1_1symmetry_class.html#ab2ec39d676cf0f13b56be4eb1f339e41',1,'dftfe::symmetryClass']]], + ['mappedgrouprecvd1_6',['mappedGroupRecvd1',['../classdftfe_1_1symmetry_class.html#a2fb9b7dfc8eae5eacf174eef0f38564d',1,'dftfe::symmetryClass']]], + ['mappedgrouprecvd2_7',['mappedGroupRecvd2',['../classdftfe_1_1symmetry_class.html#af0739f1b7462ca23fea101645855aa82',1,'dftfe::symmetryClass']]], + ['mappedgroupsend0_8',['mappedGroupSend0',['../classdftfe_1_1symmetry_class.html#a5a1e2bdae8594a01c7a1b07cbf329a0a',1,'dftfe::symmetryClass']]], + ['mappedgroupsend1_9',['mappedGroupSend1',['../classdftfe_1_1symmetry_class.html#aec8c0517710bbe7673f1fdbb13b8d3af',1,'dftfe::symmetryClass']]], + ['mappedgroupsend2_10',['mappedGroupSend2',['../classdftfe_1_1symmetry_class.html#af0bfc59925b8a289e711d97c02b15fa7',1,'dftfe::symmetryClass']]], + ['markperiodicfacesnonorthogonal_11',['markPeriodicFacesNonOrthogonal',['../namespacedftfe_1_1mesh_gen_utils.html#a93d6f8f8f6598611e357f7d3d32c090c',1,'dftfe::meshGenUtils']]], + ['mass_12',['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']]], + ['matrix_13',['matrix',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a12b38d25fc5ef7deb25cd97a21bccc32',1,'dftfe::LAPACKSupport']]], + ['matrix_5ffree_5fdata_14',['matrix_free_data',['../classdftfe_1_1dft_class.html#adc819e4eb09228bb272d131e80c8e04c',1,'dftfe::dftClass']]], + ['max_5fiter_5freached_15',['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_16',['maxCellUpdateStep',['../classdftfe_1_1dft_parameters.html#a6448c676ac51d1a8525f216d9ff9e76a',1,'dftfe::dftParameters']]], + ['maximumnebiteration_17',['maximumNEBiteration',['../classdftfe_1_1run_parameters.html#a4804eeb599b316cc54ed5ddbd6d79168',1,'dftfe::runParameters']]], + ['maxionupdatestep_18',['maxIonUpdateStep',['../classdftfe_1_1dft_parameters.html#a645816312e33f264f3871741995ee87f',1,'dftfe::dftParameters']]], + ['maxjacobianratiofactorformd_19',['maxJacobianRatioFactorForMD',['../classdftfe_1_1dft_parameters.html#a90c1b53f11be5b2e7382778a030d271b',1,'dftfe::dftParameters']]], + ['maxlinearsolveriterations_20',['maxLinearSolverIterations',['../classdftfe_1_1dft_parameters.html#ada27a2576c3d82e1b00538821ef74203',1,'dftfe::dftParameters']]], + ['maxlinearsolveriterationshelmholtz_21',['maxLinearSolverIterationsHelmholtz',['../classdftfe_1_1dft_parameters.html#af51b1073e94542b1c85231f384be6142',1,'dftfe::dftParameters']]], + ['maxlinesearchitercgprp_22',['maxlinesearchitercgprp',['../classdftfe_1_1run_parameters.html#a1ee3061048f7f61d7bd499f68b48f7f6',1,'dftfe::runParameters::maxLineSearchIterCGPRP'],['../classdftfe_1_1nudged_elastic_band_class.html#a498bb5e8bd62b10af0191d6b160f9a35',1,'dftfe::nudgedElasticBandClass::maxLineSearchIterCGPRP'],['../classdftfe_1_1dft_parameters.html#a731348021334d1c0b21f27343d3e0acd',1,'dftfe::dftParameters::maxLineSearchIterCGPRP']]], + ['maxoptiter_23',['maxOptIter',['../classdftfe_1_1dft_parameters.html#a0f3f1ee3a008530b268de7b0ac8d99c7',1,'dftfe::dftParameters']]], + ['maxstaggeredcycles_24',['maxStaggeredCycles',['../classdftfe_1_1dft_parameters.html#aa94cca27de7a4ccfbc9630ecd5093b48',1,'dftfe::dftParameters']]], + ['maxwalltime_25',['MaxWallTime',['../classdftfe_1_1dft_parameters.html#a754eabf05f3b6b41ee234081e53e3f1c',1,'dftfe::dftParameters']]], + ['mdiengine_2eh_26',['MDIEngine.h',['../_m_d_i_engine_8h.html',1,'']]], + ['mdnve_27',['mdNVE',['../classdftfe_1_1molecular_dynamics_class.html#aba514f7d8f632ae1870d1f5de6ec5386',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtnosehoverchainsthermostat_28',['mdNVTnosehoverchainsThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a35109ee98ca2960c784b13f56fa27bad',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtrescalethermostat_29',['mdNVTrescaleThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a8b7eafdd02eb5c99fc4674bcb9ed8c1d',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtsvrthermostat_30',['mdNVTsvrThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a4a9b377819e099986c44bf04c0d468a6',1,'dftfe::molecularDynamicsClass']]], + ['mdtrack_31',['MDTrack',['../classdftfe_1_1dft_parameters.html#ac47f9ddfcb70b3a3ab7938d176473bb9',1,'dftfe::dftParameters']]], + ['meanvalueconstraintdistribute_32',['meanValueConstraintDistribute',['../classdftfe_1_1poisson_solver_problem.html#a5bb985e12bbb1a453d10590799aa97e6',1,'dftfe::poissonSolverProblem']]], + ['meanvalueconstraintdistributeslavetomaster_33',['meanValueConstraintDistributeSlaveToMaster',['../classdftfe_1_1poisson_solver_problem.html#a35336e7f3879e35944e15d1b87908fb2',1,'dftfe::poissonSolverProblem']]], + ['meanvalueconstraintsetzero_34',['meanValueConstraintSetZero',['../classdftfe_1_1poisson_solver_problem.html#a38551ba64c40ea985b96df83ceb0a676',1,'dftfe::poissonSolverProblem']]], + ['memorymanager_35',['MemoryManager',['../classdftfe_1_1utils_1_1_memory_manager.html',1,'dftfe::utils']]], + ['memorymanager_2eh_36',['MemoryManager.h',['../_memory_manager_8h.html',1,'']]], + ['memorymanager_3c_20valuetype_2c_20memoryspace_3a_3ahost_20_3e_37',['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_38',['MemorySpace',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341',1,'dftfe::utils']]], + ['memoryspacetype_2eh_39',['MemorySpaceType.h',['../_memory_space_type_8h.html',1,'']]], + ['memorystorage_40',['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)'],['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils::MemoryStorage< ValueType, memorySpace >']]], + ['memorystorage_2eh_41',['MemoryStorage.h',['../_memory_storage_8h.html',1,'']]], + ['memorystorage_3c_20datatypes_3a_3anumber_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3adevice_20_3e_42',['MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE >',['../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_43',['MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20dealii_3a_3atypes_3a_3aglobal_5fdof_5findex_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3adevice_20_3e_44',['MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE >',['../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_45',['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_46',['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_3adevice_20_3e_47',['MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20double_2c_20memoryspace_20_3e_48',['MemoryStorage< double, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20float_2c_20memoryspace_20_3e_49',['MemoryStorage< float, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20int_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3adevice_20_3e_50',['MemoryStorage< int, dftfe::utils::MemorySpace::DEVICE >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20size_5ftype_2c_20memoryspace_20_3e_51',['MemoryStorage< size_type, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20unsigned_20int_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3adevice_20_3e_52',['MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20valuetypebasiscoeff_2c_20memoryspace_20_3e_53',['MemoryStorage< ValueTypeBasisCoeff, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystoragefromstl_54',['memoryStorageFromSTL',['../namespacedftfe_1_1utils.html#ac07cb0a5493ca0895396e428081a1cfe',1,'dftfe::utils']]], + ['memorytransfer_55',['MemoryTransfer',['../classdftfe_1_1utils_1_1_memory_transfer.html',1,'dftfe::utils']]], + ['memorytransfer_2eh_56',['MemoryTransfer.h',['../_memory_transfer_8h.html',1,'']]], + ['memorytransfer_3c_20memoryspace_3a_3ahost_2c_20memoryspace_3a_3ahost_20_3e_57',['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_58',['MemoryTransferKernelsDevice.h',['../_memory_transfer_kernels_device_8h.html',1,'']]], + ['mesh_59',['mesh',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a3ad66908d0b595b7ec3605d8345f9061',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['mesh_5fspacing_60',['mesh_spacing',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a01f328738aa6b0d4e1ab8460d278d58a',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['meshadaption_61',['meshAdaption',['../classdftfe_1_1dft_parameters.html#a6b8cc0d451f3844f704e008f74ed93fb',1,'dftfe::dftParameters']]], + ['meshgenutils_2eh_62',['meshGenUtils.h',['../mesh_gen_utils_8h.html',1,'']]], + ['meshmovement_2eh_63',['meshMovement.h',['../mesh_movement_8h.html',1,'']]], + ['meshmovementaffinetransform_64',['meshmovementaffinetransform',['../classdftfe_1_1mesh_movement_affine_transform.html#aa82504dd00a1727527eb8487bee90d70',1,'dftfe::meshMovementAffineTransform::meshMovementAffineTransform()'],['../classdftfe_1_1mesh_movement_affine_transform.html',1,'dftfe::meshMovementAffineTransform']]], + ['meshmovementaffinetransform_2eh_65',['meshMovementAffineTransform.h',['../mesh_movement_affine_transform_8h.html',1,'']]], + ['meshmovementclass_66',['meshmovementclass',['../classdftfe_1_1mesh_movement_class.html#a11a93ca35ca3de8b60db373cf0cf2501',1,'dftfe::meshMovementClass::meshMovementClass()'],['../classdftfe_1_1mesh_movement_class.html',1,'dftfe::meshMovementClass']]], + ['meshmovementgaussian_2eh_67',['meshMovementGaussian.h',['../mesh_movement_gaussian_8h.html',1,'']]], + ['meshmovementgaussianclass_68',['meshmovementgaussianclass',['../classdftfe_1_1mesh_movement_gaussian_class.html',1,'dftfe::meshMovementGaussianClass'],['../classdftfe_1_1mesh_movement_gaussian_class.html#ad87c0589fd2775b847d33f97bdb65914',1,'dftfe::meshMovementGaussianClass::meshMovementGaussianClass()']]], + ['meshsizeinnerball_69',['meshSizeInnerBall',['../classdftfe_1_1dft_parameters.html#a597581e8dac9ea69f7a5ddbc9deaf476',1,'dftfe::dftParameters']]], + ['meshsizeouterball_70',['meshSizeOuterBall',['../classdftfe_1_1dft_parameters.html#af87a79e095a9b0cd8f3c0b25e1e9310c',1,'dftfe::dftParameters']]], + ['meshsizeouterdomain_71',['meshSizeOuterDomain',['../classdftfe_1_1dft_parameters.html#af85678dbe1ce046b64a1a1e6a396d680',1,'dftfe::dftParameters']]], + ['methodsubtypelrd_72',['methodSubTypeLRD',['../classdftfe_1_1dft_parameters.html#ad19e5331e64d5974bc64a6d87b1e600a',1,'dftfe::dftParameters']]], + ['mixing_5fsimple_73',['mixing_simple',['../classdftfe_1_1dft_class.html#a9568d26e2bbf29ddaafafb3e0a6b4dd0',1,'dftfe::dftClass']]], + ['mixing_5fsimple_5fspinpolarized_74',['mixing_simple_spinPolarized',['../classdftfe_1_1dft_class.html#a3e3d4589a81c0d8f635081401c9f4ffb',1,'dftfe::dftClass']]], + ['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#a2c7f13f60b0d644bdc97be968d305885',1,'dftfe::MixingScheme::MixingScheme()']]], + ['mixingvariable_80',['mixingVariable',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84',1,'dftfe']]], + ['mixvariable_81',['mixVariable',['../classdftfe_1_1_mixing_scheme.html#a93ea787fb3975fc98f897d8677018474',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#a037b8204c80522759b27b6b5f2cbd302',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#aecdce3755435db062345c3c7033ac9ad',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_1force_class.html#a155704b910556db96e836f3616eb78bb',1,'dftfe::forceClass::mpi_communicator'],['../classdftfe_1_1geo_opt_cell.html#ae7348b709510b4070a5dbbded9c55ee3',1,'dftfe::geoOptCell::mpi_communicator'],['../classdftfe_1_1symmetry_class.html#a4f4dc6c1148296b5d4aefc8634ce1981',1,'dftfe::symmetryClass::mpi_communicator'],['../classdftfe_1_1_process_grid.html#a2aebe1774b1c600153ad689f0af7f23d',1,'dftfe::ProcessGrid::mpi_communicator'],['../classdftfe_1_1poisson_solver_problem.html#a24e1fc185ed789c3dc45ab2fbf500d52',1,'dftfe::poissonSolverProblem::mpi_communicator'],['../classdftfe_1_1mesh_movement_class.html#a0138597e94e587818185cb216a152f61',1,'dftfe::meshMovementClass::mpi_communicator'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afffe0fc3ebaaabbdce739cf5efb17246',1,'dftfe::LBFGSNonLinearSolver::mpi_communicator'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a7b54b0a51b07a2a5580774d9a7aff431',1,'dftfe::kohnShamDFTOperatorDeviceClass::mpi_communicator'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aa0c10ddf9d60896d7da1d7d582020b42',1,'dftfe::kohnShamDFTOperatorClass::mpi_communicator'],['../classdftfe_1_1kerker_solver_problem.html#a05a9507e00859c1865fddf4468bb55d4',1,'dftfe::kerkerSolverProblem::mpi_communicator'],['../classdftfe_1_1geo_opt_ion.html#a62e16b8abf4499926af3b71ef686a3b3',1,'dftfe::geoOptIon::mpi_communicator'],['../classdftfe_1_1energy_calculator.html#a9f3a459deb097a947ab704d1557c43c5',1,'dftfe::energyCalculator::mpi_communicator'],['../classdftfe_1_1dft_class.html#a0a0f04466192aa5cb4123e9b3d0aff14',1,'dftfe::dftClass::mpi_communicator'],['../classdftfe_1_1dealii_linear_solver.html#a930436ff320469e4f231f2a988e8b691',1,'dftfe::dealiiLinearSolver::mpi_communicator'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a96944d9e79bf6ccf38e86b6da366e190',1,'dftfe::cgPRPNonLinearSolver::mpi_communicator'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#aedb63f983848dd29a876511efbfb6eaf',1,'dftfe::BFGSNonLinearSolver::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#a04aceb5d051eabcacfa5afe1ed9bccfb',1,'dftfe::symmetryClass']]], + ['mpi_5foffsets1_99',['mpi_offsets1',['../classdftfe_1_1symmetry_class.html#a19593c549b3fb31464d46609710b0bd0',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#adcd482cbbefacae9ca0e2275e18ed877',1,'dftfe::symmetryClass']]], + ['mpi_5fscattergrad_5foffset_106',['mpi_scatterGrad_offset',['../classdftfe_1_1symmetry_class.html#a109db6d60fb75e67b3232a5229992706',1,'dftfe::symmetryClass']]], + ['mpi_5ftype_5fid_107',['mpi_type_id',['../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 > *)'],['../namespacedftfe_1_1data_types.html#aeb14c95c8bc2a7a3d73ecb906a910914',1,'dftfe::dataTypes::mpi_type_id(const int *)']]], + ['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,'']]], + ['mpigrad_5foffsets1_115',['mpiGrad_offsets1',['../classdftfe_1_1symmetry_class.html#a858dbc6ab829069ae13cba3443c8c007',1,'dftfe::symmetryClass']]], + ['mpipatternp2p_116',['mpipatternp2p',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a279c39f8272d4df97504081292914605',1,'dftfe::utils::mpi::MPIPatternP2P::MPIPatternP2P()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html',1,'dftfe::utils::mpi::MPIPatternP2P< memorySpace >'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#afdaceb68eadb4c92fa979a95fadcc446',1,'dftfe::basis::FEBasisOperationsBase::mpiPatternP2P'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0a8db9b51b0fd6fa4170e4b0a2aa24e1',1,'dftfe::utils::mpi::MPIPatternP2P::MPIPatternP2P()']]], + ['mpipatternp2p_2eh_117',['MPIPatternP2P.h',['../_m_p_i_pattern_p2_p_8h.html',1,'']]], + ['mpirequestersbase_118',['MPIRequestersBase',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html',1,'dftfe::utils::mpi']]], + ['mpirequestersbase_2eh_119',['MPIRequestersBase.h',['../_m_p_i_requesters_base_8h.html',1,'']]], + ['mpirequestersnbx_120',['mpirequestersnbx',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a63da5b468e92b01eb7bd529b50fae7b4',1,'dftfe::utils::mpi::MPIRequestersNBX::MPIRequestersNBX()=default'],['../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',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['mpirequestersnbx_2eh_121',['MPIRequestersNBX.h',['../_m_p_i_requesters_n_b_x_8h.html',1,'']]], + ['mpitags_122',['MPITags',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5',1,'dftfe::utils::mpi']]], + ['mpitags_2eh_123',['MPITags.h',['../_m_p_i_tags_8h.html',1,'']]], + ['mpiwriteonfile_124',['MPIWriteOnFile',['../classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html',1,'dftfe::dftUtils']]], + ['mpiwriteonfile_2eh_125',['MPIWriteOnFile.h',['../_m_p_i_write_on_file_8h.html',1,'']]], + ['mtmult_126',['mTmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a707a28c545abba69394929b0ff934fdd',1,'dftfe::ScaLAPACKMatrix']]], + ['mult_127',['mult',['../namespacedftfe_1_1utils.html#a72b128596ee1a77af07d94093bfa111f',1,'dftfe::utils::mult(cuFloatComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a374ca5a1a4ffd39b8d515e7fd87f68f3',1,'dftfe::utils::mult(cuFloatComplex a, cuFloatComplex 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#a3026372ab6ab0625ee78b56505cd4520',1,'dftfe::utils::mult(int a, int b)'],['../namespacedftfe_1_1utils.html#aedb9ad40e707fe086a4e91668bafba3a',1,'dftfe::utils::mult(cuDoubleComplex 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)'],['../namespacedftfe_1_1utils.html#ae5c706e906bb78fa6967057ce9ee4486',1,'dftfe::utils::mult(float a, double b)'],['../namespacedftfe_1_1utils.html#a0ecbb7d7ee9ef5b7c940c2ca8c72fa6c',1,'dftfe::utils::mult(float a, float b)'],['../namespacedftfe_1_1utils.html#afb52371cacad3bbd6f7d7a1066cda349',1,'dftfe::utils::mult(double a, double b)'],['../namespacedftfe_1_1utils.html#adcda956285358e48e0c816e0724ce0e0',1,'dftfe::utils::mult(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#ad361e6bfe0d291045938225ecd3dd6ea',1,'dftfe::utils::mult(unsigned int a, unsigned int b)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a245caef57db69751ecdebc120ff4b456',1,'dftfe::ScaLAPACKMatrix::mult()'],['../namespacedftfe_1_1utils.html#a4dca74c83a4e7f6888558c68d68913d8',1,'dftfe::utils::mult()']]], + ['multivector_128',['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#a5b25af355ea6306c7dc8f21dd6683145',1,'dftfe::linearAlgebra::MultiVector::MultiVector(MultiVector &&u) noexcept'],['../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#ae4ff9bc39e8df13bce72f6cde957a003',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const MultiVector &u)'],['../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#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#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#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#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#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#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#a9df1033e595ed9efe7ff76c17b486565',1,'dftfe::linearAlgebra::MultiVector::MultiVector()=default']]], + ['multivector_2eh_129',['MultiVector.h',['../_multi_vector_8h.html',1,'']]], + ['multivector_3c_20double_20_3e_130',['MultiVector< double >',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html',1,'dftfe::linearAlgebra']]], + ['mutex_131',['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..aae3f0558 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,67 @@ +var searchData= +[ + ['n_0',['n',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#ac110e26736d1c19b8e0f7acbc6e38b8f',1,'dftfe::LAPACKSupport::N'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a41c494fd3964387d621a45c8f25e664d',1,'dftfe::ScaLAPACKMatrix::n() const']]], + ['n_5fcolumns_1',['n_columns',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a63d09a13a0bedeeb0e38abc743584d2c',1,'dftfe::ScaLAPACKMatrix']]], + ['n_5flocal_5fcolumns_2',['n_local_columns',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6d39f988166252b4f4a3347ea9bb97e6',1,'dftfe::ScaLAPACKMatrix']]], + ['n_5flocal_5frows_3',['n_local_rows',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ac2cb492c0c59c42dcc736ed44e51bd19',1,'dftfe::ScaLAPACKMatrix']]], + ['n_5fmpi_5fprocesses_4',['n_mpi_processes',['../classdftfe_1_1_process_grid.html#a33e5699c2cca8bb64d417b4960f6c2e4',1,'dftfe::ProcessGrid::n_mpi_processes'],['../classdftfe_1_1poisson_solver_problem.html#a8c1d87f1b68f2837dcbc6dcf2093de30',1,'dftfe::poissonSolverProblem::n_mpi_processes'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a4b4d5245d7580a9da61fb1c3cbd2f42c',1,'dftfe::kohnShamDFTOperatorDeviceClass::n_mpi_processes'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a737cf17c938114b8970d18ae8e885be4',1,'dftfe::kohnShamDFTOperatorClass::n_mpi_processes'],['../classdftfe_1_1kerker_solver_problem.html#a7f72144d70661f9a7614da1c377a3c74',1,'dftfe::kerkerSolverProblem::n_mpi_processes'],['../classdftfe_1_1geo_opt_ion.html#abe281983d56f026ded3c833bfc9c3e9a',1,'dftfe::geoOptIon::n_mpi_processes'],['../classdftfe_1_1geo_opt_cell.html#afc0ae256aafc7e1efb012aa73e968e1a',1,'dftfe::geoOptCell::n_mpi_processes'],['../classdftfe_1_1force_class.html#a4f4210049e665c28c39e57fc4bb6764b',1,'dftfe::forceClass::n_mpi_processes'],['../classdftfe_1_1dft_class.html#a34ce0cdebd6fd22d7779115e52793c93',1,'dftfe::dftClass::n_mpi_processes'],['../classdftfe_1_1dealii_linear_solver.html#a4f7f3676b226e67a1b7366159d92c2f0',1,'dftfe::dealiiLinearSolver::n_mpi_processes'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a734b7f3dca0af43a51171dde38813feb',1,'dftfe::cgPRPNonLinearSolver::n_mpi_processes'],['../classdftfe_1_1symmetry_class.html#a8ad16b988cf3ce53092c3496fa7f6dd0',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_5',['n_process_columns',['../classdftfe_1_1_process_grid.html#a2352a26d9d63e3e045c8706a6a7bcf3d',1,'dftfe::ProcessGrid']]], + ['n_5fprocess_5frows_6',['n_process_rows',['../classdftfe_1_1_process_grid.html#a49e1e092e3ebd0c81c65eb6c9c09ebd7',1,'dftfe::ProcessGrid']]], + ['n_5frefinement_5fsteps_7',['n_refinement_steps',['../classdftfe_1_1dft_parameters.html#a043778f9c1b5ab2eaa6ef4004555ecb7',1,'dftfe::dftParameters']]], + ['n_5frows_8',['n_rows',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a45b24efb278a43b1696a379a2b332bab',1,'dftfe::ScaLAPACKMatrix']]], + ['natoms_9',['natoms',['../classdftfe_1_1dft_parameters.html#ab7158d579cdec773142127159d4f13d8',1,'dftfe::dftParameters']]], + ['natomtypes_10',['natomTypes',['../classdftfe_1_1dft_parameters.html#a413ac553c42abd627c6895f0a49e653f',1,'dftfe::dftParameters']]], + ['nbandgrps_11',['nbandGrps',['../classdftfe_1_1dft_parameters.html#a2b05448b25c6d87e843055fcd52a3461',1,'dftfe::dftParameters']]], + ['ncells_12',['nCells',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aaadadd35ef03548e393e0bb65073d087',1,'dftfe::basis::FEBasisOperationsBase']]], + ['ndofspercell_13',['nDofsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a8b1e0a4639d93c0196a7dd3daa764c4d',1,'dftfe::basis::FEBasisOperationsBase']]], + ['nglobalindices_14',['nGlobalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a82b80390d551c7cb29d42206f08cc044',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['nkx_15',['nkx',['../classdftfe_1_1dft_parameters.html#ac0d1ad2326dc4132990b67ae301f89a4',1,'dftfe::dftParameters']]], + ['nky_16',['nky',['../classdftfe_1_1dft_parameters.html#a582c49281298861ffcbf56d5e4b4e6a3',1,'dftfe::dftParameters']]], + ['nkz_17',['nkz',['../classdftfe_1_1dft_parameters.html#a5f46e5ac67aa1a305c65811b52ea737f',1,'dftfe::dftParameters']]], + ['nmpiprocesses_18',['nmpiProcesses',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa2f96b19290ef765ff84ca46ef0a23f1',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['nngga_2eh_19',['NNGGA.h',['../_n_n_g_g_a_8h.html',1,'']]], + ['nnlda_2eh_20',['NNLDA.h',['../_n_n_l_d_a_8h.html',1,'']]], + ['no_5fcheck_21',['NO_CHECK',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da6bf6e695293507a237fe65e10a4ba2e8',1,'dftfe']]], + ['nodaldensity_5fmixing_5fanderson_5fkerker_22',['nodalDensity_mixing_anderson_kerker',['../classdftfe_1_1dft_class.html#a2460a2cd36a19db3de9c8cd7285c98e6',1,'dftfe::dftClass']]], + ['nodaldensity_5fmixing_5fsimple_5fkerker_23',['nodalDensity_mixing_simple_kerker',['../classdftfe_1_1dft_class.html#a6fadf587b71febc91eec581d5653506f',1,'dftfe::dftClass']]], + ['none_24',['NONE',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800ab50339a10e1de285ac99d4c3990b8693',1,'dftfe']]], + ['nonlinearcorecorrection_25',['nonLinearCoreCorrection',['../classdftfe_1_1dft_parameters.html#a8c4279efe140a446c0c3043f20f395d2',1,'dftfe::dftParameters']]], + ['nonlinearsolver_26',['nonlinearsolver',['../classdftfe_1_1non_linear_solver.html#acb2fee7d397c0f1fcca01edff29bc1dc',1,'dftfe::nonLinearSolver::nonLinearSolver()'],['../classdftfe_1_1non_linear_solver.html',1,'dftfe::nonLinearSolver']]], + ['nonlinearsolver_2eh_27',['nonLinearSolver.h',['../non_linear_solver_8h.html',1,'']]], + ['nonlinearsolverproblem_28',['nonlinearsolverproblem',['../classdftfe_1_1nonlinear_solver_problem.html',1,'dftfe::nonlinearSolverProblem'],['../classdftfe_1_1nonlinear_solver_problem.html#a6f468b90032ab9339b639b20109706f5',1,'dftfe::nonlinearSolverProblem::nonlinearSolverProblem()']]], + ['nonlinearsolverproblem_2eh_29',['nonlinearSolverProblem.h',['../nonlinear_solver_problem_8h.html',1,'']]], + ['nonselfconsistentforce_30',['nonSelfConsistentForce',['../classdftfe_1_1dft_parameters.html#a287ea09bc4cf525d3de1d2ad5cf5d5d3',1,'dftfe::dftParameters']]], + ['noremeshrhodatainit_31',['noRemeshRhoDataInit',['../classdftfe_1_1dft_class.html#a73afd3485c2fa4fd14a72ffb23262254',1,'dftfe::dftClass']]], + ['normalizeatomicrhoquadvalues_32',['normalizeAtomicRhoQuadValues',['../classdftfe_1_1dft_class.html#a0cf6b0a3305d07fee904a09f029e9db4',1,'dftfe::dftClass']]], + ['normalizerhoinquadvalues_33',['normalizeRhoInQuadValues',['../classdftfe_1_1dft_class.html#af4e4df4bd1adcc6456ec1693d1f733f3',1,'dftfe::dftClass']]], + ['normalizerhooutquadvalues_34',['normalizeRhoOutQuadValues',['../classdftfe_1_1dft_class.html#a0813da3f722b14371619587f2cc4cd7f',1,'dftfe::dftClass']]], + ['nosehoverchains_35',['NoseHoverChains',['../classdftfe_1_1molecular_dynamics_class.html#ada336d8717658e87d6b7436443b9b252',1,'dftfe::molecularDynamicsClass']]], + ['nosehoverextendedlagrangian_36',['NoseHoverExtendedLagrangian',['../classdftfe_1_1molecular_dynamics_class.html#a8c5b0138a53a601f7e7e9c8998c7668d',1,'dftfe::molecularDynamicsClass']]], + ['nowneddofs_37',['nOwnedDofs',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a54d74f18a9672cc3b795ec54a62f9db2',1,'dftfe::basis::FEBasisOperationsBase']]], + ['npool_38',['npool',['../classdftfe_1_1dft_parameters.html#a29bf831f7e14f799077431ce4a759e7d',1,'dftfe::dftParameters']]], + ['nquadspercell_39',['nQuadsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ac906748956f34c8424b5a9331e56a29c',1,'dftfe::basis::FEBasisOperationsBase']]], + ['nrelaventdofs_40',['nRelaventDofs',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a9e10a7070c514d194f960749e559f28c',1,'dftfe::basis::FEBasisOperationsBase']]], + ['nscf_41',['nscf',['../classdftfe_1_1dft_class.html#a72d8da277a5096d741e3d95cd38e9357',1,'dftfe::dftClass']]], + ['nudgedelasticbandclass_42',['nudgedelasticbandclass',['../classdftfe_1_1nudged_elastic_band_class.html#af282ee272ef6074fcc6a9fbde9112af7',1,'dftfe::nudgedElasticBandClass::nudgedElasticBandClass()'],['../classdftfe_1_1nudged_elastic_band_class.html',1,'dftfe::nudgedElasticBandClass']]], + ['nudgedelasticbandclass_2eh_43',['nudgedElasticBandClass.h',['../nudged_elastic_band_class_8h.html',1,'']]], + ['number_44',['number',['../namespacedftfe_1_1data_types.html#ae16b50f6fbf917006c2e4078cf81e274',1,'dftfe::dataTypes']]], + ['numbereigenvalues_45',['numberEigenValues',['../classdftfe_1_1dft_parameters.html#a6425e76c6b0e545e8bf57e8a31440f0e',1,'dftfe::dftParameters']]], + ['numberfp32_46',['numberFP32',['../namespacedftfe_1_1data_types.html#afe5d7e0a13ee0a005bffd9a3529b16ea',1,'dftfe::dataTypes']]], + ['numberfp32valuetype_47',['numberFP32ValueType',['../namespacedftfe_1_1data_types.html#a97b0ce72cb321e15de84ee86399193a4',1,'dftfe::dataTypes']]], + ['numberofimages_48',['numberOfImages',['../classdftfe_1_1run_parameters.html#a7d32818828532bb9bdf809cd2a58a9e8',1,'dftfe::runParameters']]], + ['numberstepsbomd_49',['numberStepsBOMD',['../classdftfe_1_1dft_parameters.html#a05c417dbf391c3b4c5bccf7f40a3bdd5',1,'dftfe::dftParameters']]], + ['numbervaluetype_50',['numberValueType',['../namespacedftfe_1_1data_types.html#a519f5c925e03c2b044becee02e7aff4b',1,'dftfe::dataTypes']]], + ['numberwavefunctionsforestimate_51',['numberWaveFunctionsForEstimate',['../classdftfe_1_1dft_parameters.html#ae5083a2788335f4c48f4bc09a8bbacf9',1,'dftfe::dftParameters']]], + ['numcorewfcrr_52',['numCoreWfcRR',['../classdftfe_1_1dft_parameters.html#a0ce81552be8483b510660ee587031991',1,'dftfe::dftParameters']]], + ['numcorewfcxthx_53',['numCoreWfcXtHX',['../classdftfe_1_1dft_parameters.html#af66c14504fbf271cc6f1a63ed1f4d84f',1,'dftfe::dftParameters']]], + ['numelectrons_54',['numElectrons',['../classdftfe_1_1dft_class.html#af26db5a0a33452b31bb8c0399da0ac53',1,'dftfe::dftClass']]], + ['numelectronsdown_55',['numElectronsDown',['../classdftfe_1_1dft_class.html#a18dc226b85f699d95de5db03654a679d',1,'dftfe::dftClass']]], + ['numelectronsup_56',['numElectronsUp',['../classdftfe_1_1dft_class.html#a83e6240fbd4da24463ff0ce9e4e936c7',1,'dftfe::dftClass']]], + ['numlevels_57',['numlevels',['../classdftfe_1_1dft_parameters.html#a52b4e2872fb286473ac4aac2c2bfbdbb',1,'dftfe::dftParameters::numLevels'],['../classdftfe_1_1dft_class.html#a5d9abf7eced517df1854ffa90c3fb9ec',1,'dftfe::dftClass::numLevels']]], + ['numpass_58',['numPass',['../classdftfe_1_1dft_parameters.html#a0412a932e3e3cb5c96df987d6373aee0',1,'dftfe::dftParameters']]], + ['numroc_5f_59',['numroc_',['../namespacedftfe.html#ab4551d8b31f0faf036189b071760a55e',1,'dftfe']]], + ['numscfiterations_60',['numSCFIterations',['../classdftfe_1_1dft_parameters.html#ab1ea947fa06a01a3a2a0823c02393523',1,'dftfe::dftParameters']]], + ['numsymm_61',['numSymm',['../classdftfe_1_1symmetry_class.html#a799777300c1a99ef8e60bbe62a72e9af',1,'dftfe::symmetryClass']]], + ['numsymmundergroup_62',['numSymmUnderGroup',['../classdftfe_1_1symmetry_class.html#aa85e955abd1d477b84167445190ba712',1,'dftfe::symmetryClass']]], + ['numvectors_63',['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..ffcc86cff --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,36 @@ +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']]], + ['one_4',['one',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a90d2387cf428fc1e8c4c17a567551891',1,'dftfe::LAPACKSupport']]], + ['operator_21_3d_5',['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_6',['operator&',['../namespacedftfe_1_1basis.html#a968aecdead1f0467074cacbbedc3492c',1,'dftfe::basis']]], + ['operator_26_3d_7',['operator&=',['../namespacedftfe_1_1basis.html#aae43e26dc49262b93899c9a9edccc420',1,'dftfe::basis']]], + ['operator_2eh_8',['operator.h',['../operator_8h.html',1,'']]], + ['operator_3d_9',['operator=',['../classdftfe_1_1utils_1_1_memory_storage.html#a0c57b7d1e9e4c9f95c3dbdd73fff9f0a',1,'dftfe::utils::MemoryStorage::operator=()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af882bffcec0872a8b97ab7530eaabeb3',1,'dftfe::linearAlgebra::MultiVector::operator=(MultiVector &&u)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#add96302dfff873a70466a452066fbad1',1,'dftfe::linearAlgebra::MultiVector::operator=(const MultiVector &u)'],['../classdftfe_1_1utils_1_1_memory_storage.html#ac4e3dd36624251164ff929fe6e67a71b',1,'dftfe::utils::MemoryStorage::operator=()']]], + ['operator_3d_3d_10',['operator==',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a53dfa9d6fd66e0ca486d2d7158ccc2ef',1,'dftfe::utils::OptimizedIndexSet']]], + ['operator_5b_5d_11',['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']]], + ['operatordevice_2eh_12',['operatorDevice.h',['../operator_device_8h.html',1,'']]], + ['operatordftclass_13',['operatordftclass',['../classdftfe_1_1operator_d_f_t_class.html#a98f799df477536a14ae62cf8fd1e4e95',1,'dftfe::operatorDFTClass::operatorDFTClass()'],['../classdftfe_1_1operator_d_f_t_class.html#a21c349c2ed44312e3f345ba6ee3ee6cb',1,'dftfe::operatorDFTClass::operatorDFTClass(const MPI_Comm &mpi_comm_replica, const dealii::MatrixFree< 3, double > &matrix_free_data, dftUtils::constraintMatrixInfo &constraintMatrixNone)'],['../classdftfe_1_1operator_d_f_t_class.html',1,'dftfe::operatorDFTClass']]], + ['operator_7c_14',['operator|',['../namespacedftfe_1_1basis.html#a1e087bcab2de5ca7747d1d306c752a29',1,'dftfe::basis']]], + ['operator_7c_3d_15',['operator|=',['../namespacedftfe_1_1basis.html#a2cc9c04d0f959faadd30c609ced094f6',1,'dftfe::basis']]], + ['optimizationmode_16',['optimizationMode',['../classdftfe_1_1dft_parameters.html#ad67a16954e339f095f4ed40433a6b4d7',1,'dftfe::dftParameters']]], + ['optimizationsolver_17',['optimizationSolver',['../classdftfe_1_1run_parameters.html#a48f7a2b6445cb1f82a40c7ce86b9a28a',1,'dftfe::runParameters']]], + ['optimizedindexset_18',['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_19',['OptimizedIndexSet.h',['../_optimized_index_set_8h.html',1,'']]], + ['optimizedindexset_3c_20global_5fsize_5ftype_20_3e_20',['OptimizedIndexSet< global_size_type >',['../classdftfe_1_1utils_1_1_optimized_index_set.html',1,'dftfe::utils']]], + ['optimizermaxionupdatestep_21',['optimizermaxIonUpdateStep',['../classdftfe_1_1run_parameters.html#afacaaa04872f004f99a13f2b772aabcc',1,'dftfe::runParameters']]], + ['orthogtype_22',['orthogType',['../classdftfe_1_1dft_parameters.html#a10fe92305b1d87156a56e2304b895e81',1,'dftfe::dftParameters']]], + ['outeratomballradius_23',['outerAtomBallRadius',['../classdftfe_1_1dft_parameters.html#a84bc480b8838d8570cc6d96cba28c3e2',1,'dftfe::dftParameters']]], + ['outervalues_24',['outerValues',['../classdftfe_1_1dft_class.html#a279d0c983e647646954ec0fa19849254',1,'dftfe::dftClass']]], + ['outofrangeerror_25',['OutOfRangeError',['../namespacedftfe_1_1utils.html#affdcb5d1a7aac285a5f6b3139b8da32c',1,'dftfe::utils']]], + ['outputdata_26',['outputData',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#aa409fa0ff8d24bdb69e6cc248afccf19',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['outputdensity_27',['outputDensity',['../classdftfe_1_1dft_class.html#a7571c3a8d2766d49946e22b8e416fdc0',1,'dftfe::dftClass']]], + ['outputwfc_28',['outputWfc',['../classdftfe_1_1dft_class.html#a96e05a04b8d5dd0e624da876a91cc6e6',1,'dftfe::dftClass']]], + ['overflowerror_29',['OverflowError',['../namespacedftfe_1_1utils.html#a22befb8b6cd118fe3528b83c869767e8',1,'dftfe::utils']]], + ['overlapcomputecommuncheby_30',['overlapComputeCommunCheby',['../classdftfe_1_1dft_parameters.html#a63b367f44db2c5ea013f5305b399528a',1,'dftfe::dftParameters']]], + ['overlapcomputecommunorthorr_31',['overlapComputeCommunOrthoRR',['../classdftfe_1_1dft_parameters.html#afdd820ba75e3ca5eedb81e566c389175',1,'dftfe::dftParameters']]], + ['ownerprocglobal_32',['ownerProcGlobal',['../classdftfe_1_1symmetry_class.html#a8a052c775b12c83d8c5f833f8466c8dc',1,'dftfe::symmetryClass']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 000000000..aac6efbad --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bfgsnonlinearsolver_0',['BFGSNonLinearSolver',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html',1,'dftfe']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 000000000..3247d7a8b --- /dev/null +++ b/search/classes_1.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_10.js b/search/classes_10.js new file mode 100644 index 000000000..543fe3ede --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vselfbinsmanager_0',['vselfBinsManager',['../classdftfe_1_1vself_bins_manager.html',1,'dftfe']]] +]; diff --git a/search/classes_11.js b/search/classes_11.js new file mode 100644 index 000000000..56519a052 --- /dev/null +++ b/search/classes_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xmltodftfeparser_0',['xmlTodftfeParser',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html',1,'dftfe::pseudoUtils']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 000000000..bb1350c0e --- /dev/null +++ b/search/classes_2.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_3.js b/search/classes_3.js new file mode 100644 index 000000000..29d271691 --- /dev/null +++ b/search/classes_3.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_4.js b/search/classes_4.js new file mode 100644 index 000000000..94f4b17c5 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['febasisoperations_0',['FEBasisOperations',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html',1,'dftfe::basis']]], + ['febasisoperations_3c_20valuetypebasiscoeff_2c_20valuetypebasisdata_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_1',['FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html',1,'dftfe::basis']]], + ['febasisoperationsbase_2',['FEBasisOperationsBase',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html',1,'dftfe::basis']]], + ['febasisoperationsbase_3c_20valuetypebasiscoeff_2c_20valuetypebasisdata_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_3',['FEBasisOperationsBase< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html',1,'dftfe::basis']]], + ['forceclass_4',['forceClass',['../classdftfe_1_1force_class.html',1,'dftfe']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 000000000..003647f65 --- /dev/null +++ b/search/classes_5.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_6.js b/search/classes_6.js new file mode 100644 index 000000000..3a70fd8da --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['kerkersolverproblem_0',['kerkerSolverProblem',['../classdftfe_1_1kerker_solver_problem.html',1,'dftfe']]], + ['kohnshamdftoperatorclass_1',['kohnShamDFTOperatorClass',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html',1,'dftfe']]], + ['kohnshamdftoperatordeviceclass_2',['kohnShamDFTOperatorDeviceClass',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html',1,'dftfe']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 000000000..73e2cff73 --- /dev/null +++ b/search/classes_7.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_8.js b/search/classes_8.js new file mode 100644 index 000000000..4e738e3f1 --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,33 @@ +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_3adevice_20_3e_3',['MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::DEVICE >',['../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_4',['MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20dealii_3a_3atypes_3a_3aglobal_5fdof_5findex_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3adevice_20_3e_5',['MemoryStorage< dealii::types::global_dof_index, dftfe::utils::MemorySpace::DEVICE >',['../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_6',['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_7',['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_3adevice_20_3e_8',['MemoryStorage< double, dftfe::utils::MemorySpace::DEVICE >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20double_2c_20memoryspace_20_3e_9',['MemoryStorage< double, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20float_2c_20memoryspace_20_3e_10',['MemoryStorage< float, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20int_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3adevice_20_3e_11',['MemoryStorage< int, dftfe::utils::MemorySpace::DEVICE >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20size_5ftype_2c_20memoryspace_20_3e_12',['MemoryStorage< size_type, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20unsigned_20int_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3adevice_20_3e_13',['MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20valuetypebasiscoeff_2c_20memoryspace_20_3e_14',['MemoryStorage< ValueTypeBasisCoeff, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorytransfer_15',['MemoryTransfer',['../classdftfe_1_1utils_1_1_memory_transfer.html',1,'dftfe::utils']]], + ['memorytransfer_3c_20memoryspace_3a_3ahost_2c_20memoryspace_3a_3ahost_20_3e_16',['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_17',['meshMovementAffineTransform',['../classdftfe_1_1mesh_movement_affine_transform.html',1,'dftfe']]], + ['meshmovementclass_18',['meshMovementClass',['../classdftfe_1_1mesh_movement_class.html',1,'dftfe']]], + ['meshmovementgaussianclass_19',['meshMovementGaussianClass',['../classdftfe_1_1mesh_movement_gaussian_class.html',1,'dftfe']]], + ['mixingscheme_20',['MixingScheme',['../classdftfe_1_1_mixing_scheme.html',1,'dftfe']]], + ['moleculardynamicsclass_21',['molecularDynamicsClass',['../classdftfe_1_1molecular_dynamics_class.html',1,'dftfe']]], + ['mpicommunicatorp2p_22',['MPICommunicatorP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html',1,'dftfe::utils::mpi']]], + ['mpicommunicatorp2pkernels_23',['MPICommunicatorP2PKernels',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html',1,'dftfe::utils']]], + ['mpipatternp2p_24',['MPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html',1,'dftfe::utils::mpi']]], + ['mpirequestersbase_25',['MPIRequestersBase',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html',1,'dftfe::utils::mpi']]], + ['mpirequestersnbx_26',['MPIRequestersNBX',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html',1,'dftfe::utils::mpi']]], + ['mpiwriteonfile_27',['MPIWriteOnFile',['../classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html',1,'dftfe::dftUtils']]], + ['multivector_28',['MultiVector',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html',1,'dftfe::linearAlgebra']]], + ['multivector_3c_20double_20_3e_29',['MultiVector< double >',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html',1,'dftfe::linearAlgebra']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 000000000..158f665c2 --- /dev/null +++ b/search/classes_9.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_a.js b/search/classes_a.js new file mode 100644 index 000000000..7550d07b4 --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['operatordftclass_0',['operatorDFTClass',['../classdftfe_1_1operator_d_f_t_class.html',1,'dftfe']]], + ['optimizedindexset_1',['OptimizedIndexSet',['../classdftfe_1_1utils_1_1_optimized_index_set.html',1,'dftfe::utils']]], + ['optimizedindexset_3c_20global_5fsize_5ftype_20_3e_2',['OptimizedIndexSet< global_size_type >',['../classdftfe_1_1utils_1_1_optimized_index_set.html',1,'dftfe::utils']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 000000000..187e9c899 --- /dev/null +++ b/search/classes_b.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_c.js b/search/classes_c.js new file mode 100644 index 000000000..fca506a4c --- /dev/null +++ b/search/classes_c.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_d.js b/search/classes_d.js new file mode 100644 index 000000000..d7e6eb347 --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['runparameters_0',['runParameters',['../classdftfe_1_1run_parameters.html',1,'dftfe']]] +]; diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 000000000..05cd89497 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scalapackmatrix_0',['ScaLAPACKMatrix',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html',1,'dftfe']]], + ['symmetryclass_1',['symmetryClass',['../classdftfe_1_1symmetry_class.html',1,'dftfe']]] +]; diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 000000000..4a74f9850 --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['triangulationmanager_0',['triangulationManager',['../classdftfe_1_1triangulation_manager.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..8d577e1f0 --- /dev/null +++ b/search/defines_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['device_5fapi_5fcheck_0',['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_1',['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_2',['DFTFE_Assert',['../_exceptions_8h.html#a62be5192be4135c752f0522f127bd3b8',1,'Exceptions.h']]], + ['dftfe_5fassertwithmsg_3',['DFTFE_AssertWithMsg',['../_exceptions_8h.html#a2530a17dcdf9fe37ee288cf3f887e644',1,'Exceptions.h']]], + ['dispersioncorrection_5fh_5f_4',['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..5988237e6 --- /dev/null +++ b/search/defines_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vselfbinsmanager_5fh_5f_0',['vselfBinsManager_H_',['../vself_bins_manager_8h.html#ae5a2a83ea50f3c88047ddeba02f3ec95',1,'vselfBinsManager.h']]] +]; diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 000000000..f2bf5ff9f --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['densityfamilytype_0',['densityFamilyType',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4b',1,'dftfe']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 000000000..345225328 --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['excdensitypositivitychecktypes_0',['excDensityPositivityCheckTypes',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00d',1,'dftfe']]] +]; diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 000000000..ad1f5d730 --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fxcoutputdataattributes_0',['fxcOutputDataAttributes',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475',1,'dftfe']]] +]; diff --git a/search/enums_3.js b/search/enums_3.js new file mode 100644 index 000000000..3792901cf --- /dev/null +++ b/search/enums_3.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_4.js b/search/enums_4.js new file mode 100644 index 000000000..e59a8f294 --- /dev/null +++ b/search/enums_4.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_5.js b/search/enums_5.js new file mode 100644 index 000000000..e8ac90394 --- /dev/null +++ b/search/enums_5.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_6.js b/search/enums_6.js new file mode 100644 index 000000000..4ca888efd --- /dev/null +++ b/search/enums_6.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_7.js b/search/enums_7.js new file mode 100644 index 000000000..f18ff8073 --- /dev/null +++ b/search/enums_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['updateflags_0',['UpdateFlags',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898',1,'dftfe::basis']]] +]; diff --git a/search/enums_8.js b/search/enums_8.js new file mode 100644 index 000000000..1771a1e14 --- /dev/null +++ b/search/enums_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['veffoutputdataattributes_0',['VeffOutputDataAttributes',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238e',1,'dftfe']]] +]; diff --git a/search/enums_9.js b/search/enums_9.js new file mode 100644 index 000000000..3ace2d25d --- /dev/null +++ b/search/enums_9.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..b8b3aca86 --- /dev/null +++ b/search/enumvalues_0.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_1.js b/search/enumvalues_1.js new file mode 100644 index 000000000..9830ff446 --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['der2energywithdensity_0',['der2EnergyWithDensity',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475a6d74ee91791d12a6d1aec6e6d09d1188',1,'dftfe']]], + ['der2energywithdensitysigma_1',['der2EnergyWithDensitySigma',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475ae904f928241e314eb0dad7989f79d367',1,'dftfe']]], + ['der2energywithsigma_2',['der2EnergyWithSigma',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475ac3dc879502e28bc2e08c9c8c4915970d',1,'dftfe']]], + ['derenergywithdensity_3',['derEnergyWithDensity',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238ea7fa7b35baa55d216aa46c6862aa08d25',1,'dftfe']]], + ['derenergywithsigmagraddensity_4',['derEnergyWithSigmaGradDensity',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238eab0c327071aa3ac496cade6b801299895',1,'dftfe']]], + ['device_5',['DEVICE',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ae10b6ab6a278644ce40631f62f360b6d',1,'dftfe::utils']]], + ['diagonal_6',['diagonal',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca87d8c9354f8b729ca3177c5cc8ab567d',1,'dftfe::LAPACKSupport']]], + ['dummy_5fmpi_5ftag_7',['DUMMY_MPI_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5aca6c6d77288fa7def2204455ba7a47fb',1,'dftfe::utils::mpi']]] +]; diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 000000000..533c8686f --- /dev/null +++ b/search/enumvalues_2.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_3.js b/search/enumvalues_3.js new file mode 100644 index 000000000..78623cbf6 --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,4 @@ +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']]] +]; diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 000000000..338a80b25 --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,7 @@ +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']]], + ['gradrho_3',['gradRho',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a7912d60631352c04fdc4ce430fa04e51',1,'dftfe']]] +]; diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 000000000..7fe653db0 --- /dev/null +++ b/search/enumvalues_5.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_6.js b/search/enumvalues_6.js new file mode 100644 index 000000000..845aacc93 --- /dev/null +++ b/search/enumvalues_6.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_7.js b/search/enumvalues_7.js new file mode 100644 index 000000000..b088f60f0 --- /dev/null +++ b/search/enumvalues_7.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_8.js b/search/enumvalues_8.js new file mode 100644 index 000000000..6c72874ea --- /dev/null +++ b/search/enumvalues_8.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['make_5fpositive_0',['MAKE_POSITIVE',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da42e202f66aeadd5ca1dbce7bb91b417f',1,'dftfe']]], + ['matrix_1',['matrix',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a12b38d25fc5ef7deb25cd97a21bccc32',1,'dftfe::LAPACKSupport']]], + ['max_5fiter_5freached_2',['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_3',['MPI_P2P_COMMUNICATOR_GATHER_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a0f1d6e66b71390d689d95d500b20df13',1,'dftfe::utils::mpi']]], + ['mpi_5fp2p_5fcommunicator_5fscatter_5ftag_4',['MPI_P2P_COMMUNICATOR_SCATTER_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5af02ebfce5378ba6102d041f3b917247d',1,'dftfe::utils::mpi']]], + ['mpi_5fp2p_5fpattern_5ftag_5',['MPI_P2P_PATTERN_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a64d36eadb62e3a3d13e9829ad3df9d93',1,'dftfe::utils::mpi']]], + ['mpi_5frequesters_5fnbx_5ftag_6',['MPI_REQUESTERS_NBX_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a5c507bae40f4bed228358a245fad9c5d',1,'dftfe::utils::mpi']]] +]; diff --git a/search/enumvalues_9.js b/search/enumvalues_9.js new file mode 100644 index 000000000..763188281 --- /dev/null +++ b/search/enumvalues_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['no_5fcheck_0',['NO_CHECK',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da6bf6e695293507a237fe65e10a4ba2e8',1,'dftfe']]], + ['none_1',['NONE',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800ab50339a10e1de285ac99d4c3990b8693',1,'dftfe']]] +]; diff --git a/search/enumvalues_a.js b/search/enumvalues_a.js new file mode 100644 index 000000000..aadad9cf4 --- /dev/null +++ b/search/enumvalues_a.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_b.js b/search/enumvalues_b.js new file mode 100644 index 000000000..8b683f289 --- /dev/null +++ b/search/enumvalues_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['scaled_5ffock_0',['SCALED_FOCK',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800aa78ddbc9f811a897f116a3d8a324a3a1',1,'dftfe']]], + ['sigmagradvalue_1',['sigmaGradValue',['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7a3751137a69e981a5b124cc00959cb39d',1,'dftfe']]], + ['success_2',['success',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7ac3eb2ff0ea3ba5a2fd29f81d5dd21e3a',1,'dftfe::nonLinearSolver::SUCCESS'],['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700ad0749aaba8b833466dfcbb0428e4f89c',1,'dftfe::eigenSolverClass::SUCCESS']]], + ['svd_3',['svd',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a497aadc9a46708ab7fb255c9e44800e1',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enumvalues_c.js b/search/enumvalues_c.js new file mode 100644 index 000000000..0cf327ef2 --- /dev/null +++ b/search/enumvalues_c.js @@ -0,0 +1,9 @@ +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_5ftranspose_3',['update_transpose',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898aa5dfe1fc7ae4c74d7cf29a46cf9dd752',1,'dftfe::basis']]], + ['update_5fvalues_4',['update_values',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898a095fedfd2ca7d7f5e9a7763b85034463',1,'dftfe::basis']]], + ['upper_5ftriangular_5',['upper_triangular',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9acab99738c18bb979ff47b22d1cac0d0727',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enumvalues_d.js b/search/enumvalues_d.js new file mode 100644 index 000000000..21faaba87 --- /dev/null +++ b/search/enumvalues_d.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..5ae5371f1 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bfgsnonlinearsolver_2eh_0',['BFGSNonLinearSolver.h',['../_b_f_g_s_non_linear_solver_8h.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 000000000..c6af473e1 --- /dev/null +++ b/search/files_1.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_10.js b/search/files_10.js new file mode 100644 index 000000000..cb274daa8 --- /dev/null +++ b/search/files_10.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_11.js b/search/files_11.js new file mode 100644 index 000000000..260b7ce38 --- /dev/null +++ b/search/files_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['upftoxml_2ecc_0',['upfToxml.cc',['../upf_toxml_8cc.html',1,'']]], + ['upftoxml_2eh_1',['upfToxml.h',['../upf_toxml_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_13.js b/search/files_13.js new file mode 100644 index 000000000..f05d687bf --- /dev/null +++ b/search/files_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xmltodftfeparser_2eh_0',['xmlTodftfeParser.h',['../xml_todftfe_parser_8h.html',1,'']]] +]; diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 000000000..e714912bb --- /dev/null +++ b/search/files_2.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_3.js b/search/files_3.js new file mode 100644 index 000000000..1fe4ae171 --- /dev/null +++ b/search/files_3.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_4.js b/search/files_4.js new file mode 100644 index 000000000..1562756f7 --- /dev/null +++ b/search/files_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['febasisoperations_2eh_0',['FEBasisOperations.h',['../_f_e_basis_operations_8h.html',1,'']]], + ['febasisoperationskernelsdevice_2eh_1',['FEBasisOperationsKernelsDevice.h',['../_f_e_basis_operations_kernels_device_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,'']]], + ['forcewfccontractionsdevice_2eh_5',['forceWfcContractionsDevice.h',['../force_wfc_contractions_device_8h.html',1,'']]] +]; diff --git a/search/files_5.js b/search/files_5.js new file mode 100644 index 000000000..ea114c120 --- /dev/null +++ b/search/files_5.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_6.js b/search/files_6.js new file mode 100644 index 000000000..9b7ba9f87 --- /dev/null +++ b/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['headers_2eh_0',['headers.h',['../headers_8h.html',1,'']]] +]; diff --git a/search/files_7.js b/search/files_7.js new file mode 100644 index 000000000..1d26249b3 --- /dev/null +++ b/search/files_7.js @@ -0,0 +1,7 @@ +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,'']]], + ['kohnshamdftoperator_2eh_2',['kohnShamDFTOperator.h',['../kohn_sham_d_f_t_operator_8h.html',1,'']]], + ['kohnshamdftoperatordevice_2eh_3',['kohnShamDFTOperatorDevice.h',['../kohn_sham_d_f_t_operator_device_8h.html',1,'']]] +]; diff --git a/search/files_8.js b/search/files_8.js new file mode 100644 index 000000000..9cd9ebb34 --- /dev/null +++ b/search/files_8.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_9.js b/search/files_9.js new file mode 100644 index 000000000..423de7372 --- /dev/null +++ b/search/files_9.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_a.js b/search/files_a.js new file mode 100644 index 000000000..f0940d3ba --- /dev/null +++ b/search/files_a.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_b.js b/search/files_b.js new file mode 100644 index 000000000..2ab7c32ee --- /dev/null +++ b/search/files_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['operator_2eh_0',['operator.h',['../operator_8h.html',1,'']]], + ['operatordevice_2eh_1',['operatorDevice.h',['../operator_device_8h.html',1,'']]], + ['optimizedindexset_2eh_2',['OptimizedIndexSet.h',['../_optimized_index_set_8h.html',1,'']]] +]; diff --git a/search/files_c.js b/search/files_c.js new file mode 100644 index 000000000..dc52b72eb --- /dev/null +++ b/search/files_c.js @@ -0,0 +1,9 @@ +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,'']]], + ['pseudoutils_2eh_5',['pseudoUtils.h',['../pseudo_utils_8h.html',1,'']]] +]; diff --git a/search/files_d.js b/search/files_d.js new file mode 100644 index 000000000..91c75742e --- /dev/null +++ b/search/files_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quaddatacompositewrite_2eh_0',['QuadDataCompositeWrite.h',['../_quad_data_composite_write_8h.html',1,'']]] +]; diff --git a/search/files_e.js b/search/files_e.js new file mode 100644 index 000000000..c3ee5f0a6 --- /dev/null +++ b/search/files_e.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/files_f.js b/search/files_f.js new file mode 100644 index 000000000..305eeebe2 --- /dev/null +++ b/search/files_f.js @@ -0,0 +1,7 @@ +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,'']]], + ['symmetry_2eh_3',['symmetry.h',['../symmetry_8h.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..b40b68f29 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,29 @@ +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#a074a5a3585f53d64504f73d63ec00d47',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#abd58fcfd408a17056729886c3e37b877',1,'dftfe::forceClass']]], + ['accumulatefromcellnodaldata_6',['accumulateFromCellNodalData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a78909b02303fd00831f3cc145e485d2f',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['accumulatefromcellnodaldatakernel_7',['accumulateFromCellNodalDataKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a7b5c5944d2a5ef534a24bb81171f538a',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['add_8',['add',['../namespacedftfe_1_1utils.html#a7014a60efa2f43b3b9fdf472fb6d4b84',1,'dftfe::utils::add(hipFloatComplex a, hipDoubleComplex b)'],['../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)'],['../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()']]], + ['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#ad9dc9f5a075fe17d98681736ba9716c5',1,'dftfe::dftClass']]], + ['addenonlinearcorecorrectionstresscontribution_11',['addENonlinearCoreCorrectionStressContribution',['../classdftfe_1_1force_class.html#a355fde9b419a2e1eccab6ba5cbc5d819',1,'dftfe::forceClass']]], + ['addenonlinearcorecorrectionstresscontributionspinpolarized_12',['addENonlinearCoreCorrectionStressContributionSpinPolarized',['../classdftfe_1_1force_class.html#a68868081478617ad414d341ed118e88e',1,'dftfe::forceClass']]], + ['addephitotsmearedstresscontribution_13',['addEPhiTotSmearedStressContribution',['../classdftfe_1_1force_class.html#aaa89f7af3612e1ab7a5cfe008345e43a',1,'dftfe::forceClass']]], + ['addepspstresscontribution_14',['addEPSPStressContribution',['../classdftfe_1_1force_class.html#a31dd6c55c31935a9cd30c508b19f29d3',1,'dftfe::forceClass']]], + ['addevselfsmearedstresscontribution_15',['addEVselfSmearedStressContribution',['../classdftfe_1_1force_class.html#af82cd61019b0f193f05c8b943e3306ae',1,'dftfe::forceClass']]], + ['addmixingvariable_16',['addMixingVariable',['../classdftfe_1_1_mixing_scheme.html#ae8b4d7ec2b0d3bb0d06eae31ac5fef5e',1,'dftfe::MixingScheme']]], + ['addvariabletoinhist_17',['addVariableToInHist',['../classdftfe_1_1_mixing_scheme.html#a4da5c0b3b2263f9977cea31c713b6f43',1,'dftfe::MixingScheme']]], + ['addvariabletoouthist_18',['addVariableToOutHist',['../classdftfe_1_1_mixing_scheme.html#ac77ba111c3c89d4b3d2b57f103c41d99',1,'dftfe::MixingScheme']]], + ['allocate_19',['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_20',['aposterioriMeshGenerate',['../classdftfe_1_1dft_class.html#ab7fb7d7943dfa2e3762e9d2c94217a7d',1,'dftfe::dftClass']]], + ['applyhomogeneousdirichletbc_21',['applyHomogeneousDirichletBC',['../classdftfe_1_1dft_class.html#a7f0a7a8ee7fc70ee3a1a6e5d59e323c4',1,'dftfe::dftClass']]], + ['applyperiodicbchigherordernodes_22',['applyPeriodicBCHigherOrderNodes',['../classdftfe_1_1dft_class.html#a5a5a766b99e8719045eb55c7e8fa7ec2',1,'dftfe::dftClass']]], + ['applywavefunctiondependentvxc_23',['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()']]], + ['ax_24',['ax',['../classdftfe_1_1poisson_solver_problem.html#a080f87858752f6e4e1df13c8531e310c',1,'dftfe::poissonSolverProblem::AX()'],['../classdftfe_1_1kerker_solver_problem.html#a32839116a83e5a699408bdf46944a0d8',1,'dftfe::kerkerSolverProblem::AX()']]], + ['axpby_25',['axpby',['../classdftfe_1_1operator_d_f_t_class.html#a97ca45bee93486b8752e34457df38b30',1,'dftfe::operatorDFTClass::axpby()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#af56269e6e380e2085a0f721604fd4e8b',1,'dftfe::kohnShamDFTOperatorClass::axpby()']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 000000000..9f4b39f95 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,6 @@ +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']]], + ['broadcastacrossintercommscalapackmat_2',['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..e87528ab0 --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quaddatacompositewrite_0',['QuadDataCompositeWrite',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a706fe0ad27eec6e077ce483cf8b9f40b',1,'dftfe::dftUtils::QuadDataCompositeWrite']]] +]; diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 000000000..565a4cb19 --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['rayleighritz_0',['rayleighRitz',['../namespacedftfe_1_1linear_algebra_operations.html#a53a8186b77aebcdeaa7c90c213313df8',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzgep_1',['rayleighRitzGEP',['../namespacedftfe_1_1linear_algebra_operations.html#a30899ff81a036aac9aa8b955ea78f8a1',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzgepspectrumsplitdirect_2',['rayleighRitzGEPSpectrumSplitDirect',['../namespacedftfe_1_1linear_algebra_operations.html#ae1f67994f31a21da082ea96da982686c',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzspectrumsplitdirect_3',['rayleighRitzSpectrumSplitDirect',['../namespacedftfe_1_1linear_algebra_operations.html#aeed0689c8e46f73683a1f4e616e2ddcf',1,'dftfe::linearAlgebraOperations']]], + ['readfile_4',['readFile',['../namespacedftfe_1_1dft_utils.html#a8c6d0d0249775853719a1e599f8fa707',1,'dftfe::dftUtils']]], + ['readkpointdata_5',['readkPointData',['../classdftfe_1_1dft_class.html#ace0ee185652e4addef41a3e5a609677d',1,'dftfe::dftClass']]], + ['readpsi_6',['readPSI',['../classdftfe_1_1dft_class.html#af9c604ecfc21dfa947115728b6421289',1,'dftfe::dftClass']]], + ['readpsifile_7',['readPsiFile',['../namespacedftfe_1_1dft_utils.html#a9cd072ebfa9f0046d25fb14684398796',1,'dftfe::dftUtils']]], + ['readpsiradialvalues_8',['readPSIRadialValues',['../classdftfe_1_1dft_class.html#aad4305a56be183b14df306033ddba1ae',1,'dftfe::dftClass']]], + ['readrelaxationflagsfile_9',['readRelaxationFlagsFile',['../namespacedftfe_1_1dft_utils.html#aa5f6ccd68e9c4b58e055d60cf7d639fc',1,'dftfe::dftUtils']]], + ['realpart_10',['realpart',['../namespacedftfe_1_1utils.html#ac842eff416fd8183670411de8a30bfc4',1,'dftfe::utils::realPart(const std::complex< float > x)'],['../namespacedftfe_1_1utils.html#a17e0aa81a720251abed8169ac0270117',1,'dftfe::utils::realPart(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#a329fee6055d6ab0349e28d73e2cc39cb',1,'dftfe::utils::realPart(const float x)'],['../namespacedftfe_1_1utils.html#af397c74986c0a3da6b343a3f8cfb3d27',1,'dftfe::utils::realPart(const double x)']]], + ['realpartdevice_11',['realpartdevice',['../namespacedftfe_1_1utils.html#a7ac38ab177210ca02e546c0db8101f5c',1,'dftfe::utils::realPartDevice(float a)'],['../namespacedftfe_1_1utils.html#a7f189677d8a881de936a196765025e32',1,'dftfe::utils::realPartDevice(double 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#a722b2d6b361e73915ee3518a20c5e22c',1,'dftfe::dftClass']]], + ['refinementalgorithma_13',['refinementAlgorithmA',['../classdftfe_1_1triangulation_manager.html#a08592645d6a3a1c4a56ac3e8247fa9f4',1,'dftfe::triangulationManager']]], + ['refineserialmesh_14',['refineSerialMesh',['../classdftfe_1_1triangulation_manager.html#a48ab7214b9743b44274cafc2040d20ba',1,'dftfe::triangulationManager']]], + ['reinit_15',['reinit',['../classdftfe_1_1operator_d_f_t_class.html#a9c7688aabd519a3a9bfcf67d1b2460e0',1,'dftfe::operatorDFTClass::reinit()'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1a08450144cb221e7ebaa5cf0ba1a02b',1,'dftfe::ScaLAPACKMatrix::reinit()'],['../classdftfe_1_1operator_d_f_t_class.html#a5af15f8575f26f5c770f1f31104c0917',1,'dftfe::operatorDFTClass::reinit(const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)=0'],['../classdftfe_1_1operator_d_f_t_class.html#a06534aa9fa56dc90f5312f75aa969a0c',1,'dftfe::operatorDFTClass::reinit(const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)=0'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a347e3c4efbb0501729f5e38f74993ef3',1,'dftfe::linearAlgebra::MultiVector::reinit(const MultiVector &u)'],['../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_1kohn_sham_d_f_t_operator_device_class.html#add01fb30ffc69889cc5a170666e7f813',1,'dftfe::kohnShamDFTOperatorDeviceClass::reinit()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae2b1527c9cd51f84080463e4e5cffb12',1,'dftfe::kohnShamDFTOperatorClass::reinit(const unsigned int wavefunBlockSize)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a3187ab80ade565b601080333eaa7eb46',1,'dftfe::kohnShamDFTOperatorClass::reinit(const unsigned int wavefunBlockSize, distributedCPUMultiVec< dataTypes::number > &X, bool flag)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aaed845f95346eafeb60c1ec5b27bb465',1,'dftfe::kohnShamDFTOperatorClass::reinit(const unsigned int wavefunBlockSize, distributedCPUVec< dataTypes::number > &X, bool flag)'],['../classdftfe_1_1kerker_solver_problem.html#a0f147066e39f2945e7427432572a15e9',1,'dftfe::kerkerSolverProblem::reinit()'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a685d504e57f0b514772b8ce390c5043f',1,'dftfe::basis::FEBasisOperationsBase::reinit()'],['../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_1dftfe_wrapper.html#a1e846cab63970993eb53bc6da8be79cc',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 isScfRestart=true)'],['../classdftfe_1_1dftfe_wrapper.html#acd578816aab8377362fbc77c2e847796',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)'],['../classdftfe_1_1poisson_solver_problem.html#aa45f2ffd06029c91970e3b35d93307df',1,'dftfe::poissonSolverProblem::reinit()'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1144c2f751a2e2d6245dcde85d9958d1',1,'dftfe::ScaLAPACKMatrix::reinit()']]], + ['reinitializekohnshamdftoperator_16',['reInitializeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#a83e9def88c02ba94d6c977cd5b807751',1,'dftfe::dftClass']]], + ['reinitkpointspinindex_17',['reinitkpointspinindex',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#acd368f422454a45d41700a72cb9fd755',1,'dftfe::kohnShamDFTOperatorClass::reinitkPointSpinIndex()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a5d2e459e778de6536daa4ced50fb7752',1,'dftfe::kohnShamDFTOperatorDeviceClass::reinitkPointSpinIndex()'],['../classdftfe_1_1operator_d_f_t_class.html#a52181d95b4e1036110d88b7ebb767eaf',1,'dftfe::operatorDFTClass::reinitkPointSpinIndex()']]], + ['reinitspectrumbounds_18',['reinitSpectrumBounds',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a34cc1a9a57e84e79e392841219886fff',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['rescalevelocities_19',['RescaleVelocities',['../classdftfe_1_1molecular_dynamics_class.html#a9f064dae8f3c00a23ba58b69c88609cd',1,'dftfe::molecularDynamicsClass']]], + ['resetextpothamflag_20',['resetextpothamflag',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae8b0fd5dca88eae95e50763c08ebdebc',1,'dftfe::kohnShamDFTOperatorClass::resetExtPotHamFlag()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a948b6c2bdeb6cc20801de9df367f5221',1,'dftfe::kohnShamDFTOperatorDeviceClass::resetExtPotHamFlag()']]], + ['resetmesh_21',['resetMesh',['../classdftfe_1_1triangulation_manager.html#a8d10e3842e326bd523d3d9401038ce32',1,'dftfe::triangulationManager']]], + ['resetrhonodalin_22',['resetrhonodalin',['../classdftfe_1_1dft_class.html#a03c98a5732c08cb1cb683e35097ee4cc',1,'dftfe::dftClass::resetRhoNodalIn()'],['../classdftfe_1_1dft_base.html#afb55667a7521ffe8a6b6aebce139ebc3',1,'dftfe::dftBase::resetRhoNodalIn()']]], + ['resetrhonodalsplitin_23',['resetrhonodalsplitin',['../classdftfe_1_1dft_class.html#a008d814e1de564babb2580821af6cd41',1,'dftfe::dftClass::resetRhoNodalSplitIn()'],['../classdftfe_1_1dft_base.html#a62350a0841630fdbebac2931d15439da',1,'dftfe::dftBase::resetRhoNodalSplitIn()']]], + ['resize_24',['resize',['../classdftfe_1_1utils_1_1_memory_storage.html#a444af8c7c6a92f83b0db6422075ac9b8',1,'dftfe::utils::MemoryStorage']]], + ['resizetempstorage_25',['resizeTempStorage',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a0b370b7fc59c20016d0a0c32e746abd9',1,'dftfe::basis::FEBasisOperationsBase']]], + ['returnnormedvector_26',['ReturnNormedVector',['../classdftfe_1_1nudged_elastic_band_class.html#af06d3ee71b8a7e14e22ad540b6bf0950',1,'dftfe::nudgedElasticBandClass']]], + ['rhofieldinnerproduct_27',['rhofieldInnerProduct',['../classdftfe_1_1dft_class.html#ab8072353bcca630cb60230e9e24cc96b',1,'dftfe::dftClass']]], + ['rhofieldl2norm_28',['rhofieldl2Norm',['../classdftfe_1_1dft_class.html#a7393137c5f1fc1f307f4006547791fc3',1,'dftfe::dftClass']]], + ['run_29',['run',['../classdftfe_1_1geo_opt_ion.html#a75dbb301294056cd8e231513ffdb3984',1,'dftfe::geoOptIon::run()'],['../classdftfe_1_1geo_opt_cell.html#a535b250bcee9c5f61a778238bd8a520a',1,'dftfe::geoOptCell::run()'],['../classdftfe_1_1dftfe_wrapper.html#a2d719af7bc23d4e4f471f9844f65074b',1,'dftfe::dftfeWrapper::run()'],['../classdftfe_1_1dft_base.html#a6a270166bb2f8dabcefa1cb7fabe58f9',1,'dftfe::dftBase::run()'],['../classdftfe_1_1dft_class.html#a2615251523d24d3c0e50c5ebb54b0d19',1,'dftfe::dftClass::run()']]], + ['runmd_30',['runMD',['../classdftfe_1_1molecular_dynamics_class.html#ad50b54b4bc6f8afc490783ca7e92ad44',1,'dftfe::molecularDynamicsClass']]], + ['runopt_31',['runOpt',['../classdftfe_1_1geometry_optimization_class.html#a654861464517f6da7cb0be690bf1d2a7',1,'dftfe::geometryOptimizationClass']]], + ['runparameters_32',['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..ff59f2c0a --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,57 @@ +var searchData= +[ + ['save_0',['save',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a189f6b2553901b5c64160b0b7be40f9a',1,'dftfe::cgPRPNonLinearSolver::save()'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a6d8501e5df74bcb6c921272fcb3b1936',1,'dftfe::BFGSNonLinearSolver::save()'],['../classdftfe_1_1nudged_elastic_band_class.html#af51109e0dd719061f6032f308045e17e',1,'dftfe::nudgedElasticBandClass::save()'],['../classdftfe_1_1nonlinear_solver_problem.html#aef5a7d70f38f60fc254553b3cf42c12d',1,'dftfe::nonlinearSolverProblem::save()'],['../classdftfe_1_1non_linear_solver.html#aa81440478681e39d87f3665e4a62b7c6',1,'dftfe::nonLinearSolver::save()'],['../classdftfe_1_1geo_opt_ion.html#afd5d287723853e77bf8411904cecd8da',1,'dftfe::geoOptIon::save()'],['../classdftfe_1_1geo_opt_cell.html#a889f90082046defab1e68c1ff044c5ce',1,'dftfe::geoOptCell::save()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a35ce4645d180db0f1df68f38b8656bae',1,'dftfe::LBFGSNonLinearSolver::save()']]], + ['savesupporttriangulations_1',['saveSupportTriangulations',['../classdftfe_1_1triangulation_manager.html#a5403284760785c6ce4c9ea9a92c7d296',1,'dftfe::triangulationManager']]], + ['savetriainfoandrhonodaldata_2',['saveTriaInfoAndRhoNodalData',['../classdftfe_1_1dft_class.html#a518794653070d913fe23580ff4eb5557',1,'dftfe::dftClass']]], + ['savetriangulationssolutionvectors_3',['saveTriangulationsSolutionVectors',['../classdftfe_1_1triangulation_manager.html#a40210727e959e453c3f51950816a4a27',1,'dftfe::triangulationManager']]], + ['scalapackmatrix_4',['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_5',['scale',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a38f37020fabce832e4420917297a8c13',1,'dftfe::linearAlgebra::MultiVector']]], + ['scale_5fcolumns_6',['scale_columns',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aab1e407c313486935ec3721ab3a964f8',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5fcolumns_5frealfactors_7',['scale_columns_realfactors',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8bc3849a2ce63c21eff33ed6c31ce0b3',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5frows_8',['scale_rows',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#af2a0e3fdc8f1fd82872b936b8f411512',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5frows_5frealfactors_9',['scale_rows_realfactors',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a9281a7b0cfbe3a779e09aa5312229488',1,'dftfe::ScaLAPACKMatrix']]], + ['scaleandadd_10',['scaleAndAdd',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9ce3abbe60bf23a9fc6007bed302251b',1,'dftfe::linearAlgebra::MultiVector']]], + ['scalehessian_11',['scaleHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0ee49a85038fccb65c54130e438e41e9',1,'dftfe::BFGSNonLinearSolver']]], + ['scalepreconditioner_12',['scalePreconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#aa2573093fc0b5b767e2163821b9fa76f',1,'dftfe::LBFGSNonLinearSolver']]], + ['scalescalapackmat_13',['scaleScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a735a697df81b760e87196b3e137420e8',1,'dftfe::linearAlgebraOperations::internal']]], + ['seek_5fstr_14',['seek_str',['../namespacedftfe_1_1pseudo_utils.html#a9d5c06d77292285d412124923fdb3d2d',1,'dftfe::pseudoUtils']]], + ['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#a4696f69c1ed2b0355fa9cc12c3e4587a',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#aa0971677b6775af0eeed4fd3e340ba13',1,'dftfe::dftUtils::constraintMatrixInfo::set_zero(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a857dd4a4d359b78e4a9ad64443bfa024',1,'dftfe::dftUtils::constraintMatrixInfo::set_zero(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const']]], + ['setautoparameters_19',['setAutoParameters',['../classdftfe_1_1dft_parameters.html#a4eb986c625ed4f9d706634d028ae4812',1,'dftfe::dftParameters']]], + ['setinvsqrtmassvector_20',['setInvSqrtMassVector',['../classdftfe_1_1operator_d_f_t_class.html#a18171bb9bee297cbfaff8e8cf445e9d0',1,'dftfe::operatorDFTClass']]], + ['setupelpahandleparameters_21',['setupELPAHandleParameters',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#af89cc23ee6f73c883aa9118a960de7a3',1,'dftfe::linearAlgebraOperations::internal']]], + ['setvalue_22',['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_23',['shapefunctionbasisdata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a52a6c1f5eced2f4c1f5f3936ed869341',1,'dftfe::basis::FEBasisOperationsBase::shapeFunctionBasisData(bool transpose=false) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a52a6c1f5eced2f4c1f5f3936ed869341',1,'dftfe::basis::FEBasisOperationsBase::shapeFunctionBasisData(bool transpose=false) const']]], + ['shapefunctiondata_24',['shapeFunctionData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a35b2bf96e00189818d42aae8266be98e',1,'dftfe::basis::FEBasisOperationsBase']]], + ['shapefunctiongradientbasisdata_25',['shapefunctiongradientbasisdata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a2f36c9e1ffe9474ca02f4f67e736627d',1,'dftfe::basis::FEBasisOperationsBase::shapeFunctionGradientBasisData(bool transpose=false) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a2f36c9e1ffe9474ca02f4f67e736627d',1,'dftfe::basis::FEBasisOperationsBase::shapeFunctionGradientBasisData(bool transpose=false) const']]], + ['shapefunctiongradientdata_26',['shapeFunctionGradientData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a729dbfc7ab4fa7dd35db66bbb6f6368d',1,'dftfe::basis::FEBasisOperationsBase']]], + ['signallocalsendcompletion_27',['signalLocalSendCompletion',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#ae6eb820306e12ee181fed52c1436acf7',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['size_28',['size',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#ab2f86bd20cdb8d62c3d90555d274aafc',1,'dftfe::pseudoUtils::PeriodicTable::size()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a8eb4504f8bee0b28881f0d65604f9f7e',1,'dftfe::utils::MemoryStorage::size()']]], + ['smearedcharge_29',['smearedCharge',['../namespacedftfe_1_1dft_utils.html#ab40366b16eed96067c605074c9ed4f07',1,'dftfe::dftUtils']]], + ['smearedchargedr_30',['smearedChargeDr',['../namespacedftfe_1_1dft_utils.html#a46110cc38e1a2d4cccfa5fcad5969791',1,'dftfe::dftUtils']]], + ['smearedpot_31',['smearedPot',['../namespacedftfe_1_1dft_utils.html#a15c9bd0524aa6c965278c90c8ff0d18c',1,'dftfe::dftUtils']]], + ['smearedpotdr_32',['smearedPotDr',['../namespacedftfe_1_1dft_utils.html#a209b19b28e8259ac7e0cd5dcc99704ac',1,'dftfe::dftUtils']]], + ['solution_33',['solution',['../classdftfe_1_1geo_opt_cell.html#a0b63235c81c90ac29c3cf07ff5b496d7',1,'dftfe::geoOptCell::solution()'],['../classdftfe_1_1nudged_elastic_band_class.html#a0980b28edb852b0b34a31d55c060b896',1,'dftfe::nudgedElasticBandClass::solution()'],['../classdftfe_1_1nonlinear_solver_problem.html#a57432a0cd4697e3af47a04923c481ef9',1,'dftfe::nonlinearSolverProblem::solution()'],['../classdftfe_1_1geo_opt_ion.html#a513ee21951cdd9114752f43e6b045010',1,'dftfe::geoOptIon::solution()']]], + ['solve_34',['solve',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a4834be342d730c5536c1c60c4b457bf4',1,'dftfe::BFGSNonLinearSolver::solve()'],['../classdftfe_1_1non_linear_solver.html#a2e2d921bc700a699ba30165cf78d212a',1,'dftfe::nonLinearSolver::solve()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afad3f1e3e7313d118fc1d2a124b2e10f',1,'dftfe::LBFGSNonLinearSolver::solve()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a978ed675629e3570f2e6702a5d9bfcef',1,'dftfe::cgPRPNonLinearSolver::solve()'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a66495fd526536301f5efef0418a60e16',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve(operatorDFTClass &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 bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#ae51b3f31b54141993f738e4d427b0d3c',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve(operatorDFTClass &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#a22a48975cf095457bfebb68e0802de17',1,'dftfe::dftClass::solve()'],['../classdftfe_1_1dft_base.html#abd320fa08778b4b1bc46e837b5f1ccbb',1,'dftfe::dftBase::solve()'],['../classdftfe_1_1eigen_solver_class.html#a0b1820bab87e160405335a3095288cc2',1,'dftfe::eigenSolverClass::solve()'],['../classdftfe_1_1linear_solver.html#a1408df7f509ce8bdd7dad94ff19b6050',1,'dftfe::linearSolver::solve()']]], + ['solvenoscf_35',['solveNoSCF',['../classdftfe_1_1dft_class.html#afa9668adcfe541996e53881d090a4e73',1,'dftfe::dftClass']]], + ['solvevselfinbins_36',['solveVselfInBins',['../classdftfe_1_1vself_bins_manager.html#a47c9182d6d236c160bbe21533b2e3c74',1,'dftfe::vselfBinsManager']]], + ['solvevselfinbinsperturbeddomain_37',['solveVselfInBinsPerturbedDomain',['../classdftfe_1_1vself_bins_manager.html#a17a036f51e64def2ec6d77514aef433b',1,'dftfe::vselfBinsManager']]], + ['startlocalsend_38',['startLocalSend',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#aaa5098493d6e441db02af3e9c3e58315',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['state_5fname_39',['state_name',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a1ad6cab489e9639b5217b1d344e4ca7a',1,'dftfe::LAPACKSupport']]], + ['stressenlelementalcontribution_40',['stressEnlElementalContribution',['../classdftfe_1_1force_class.html#a15a0f8fb1dd270a7c03ec6efca5c7227',1,'dftfe::forceClass']]], + ['sub_41',['sub',['../namespacedftfe_1_1utils.html#a1699f57dc042ff557bbfa7a4e7e23df4',1,'dftfe::utils::sub(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#af285b0f352d9ea596a066217c1dea45c',1,'dftfe::utils::sub(unsigned int a, unsigned 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_42',['subscribe',['../classdftfe_1_1poisson_solver_problem.html#a0a57b1ab7a21ed34cd62c73ce3cc2404',1,'dftfe::poissonSolverProblem::subscribe()'],['../classdftfe_1_1dealii_linear_solver_problem.html#abe9cc5ee76771f260dc527db4b4dc159',1,'dftfe::dealiiLinearSolverProblem::subscribe()'],['../classdftfe_1_1kerker_solver_problem.html#a6a60087b1bb2c42fe475276086bd92ab',1,'dftfe::kerkerSolverProblem::subscribe()']]], + ['subspacerotation_43',['subspaceRotation',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a68bad9fd7afb389abf78b37629efd9e5',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationcgsmixedprec_44',['subspaceRotationCGSMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a23ba10da48e0fb28d232bee3c9df411f',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationmixedprec_45',['subspaceRotationMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a6d03dd66f5aaf2768bc1af6f8362cf3d',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationspectrumsplit_46',['subspaceRotationSpectrumSplit',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a0905baf1d7c457180580c64f1a57d2ed',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationspectrumsplitmixedprec_47',['subspaceRotationSpectrumSplitMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#afbf8d821857e0f111897ecdb8ce4db5a',1,'dftfe::linearAlgebraOperations::internal']]], + ['subtractatomicrhoquadvaluesgradients_48',['subtractAtomicRhoQuadValuesGradients',['../classdftfe_1_1dft_class.html#ad5c37e9f1f997897eccba6f7ee0e5936',1,'dftfe::dftClass']]], + ['sumacrossintercommscalapackmat_49',['sumAcrossInterCommScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#abbb04264506d10f84faf370ff41e9622',1,'dftfe::linearAlgebraOperations::internal']]], + ['svr_50',['svr',['../classdftfe_1_1molecular_dynamics_class.html#a252129e528db8582e34c17d0213bde86',1,'dftfe::molecularDynamicsClass']]], + ['swap_51',['swap',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ac32ddffd17246347c688558d7cd48800',1,'dftfe::linearAlgebra::MultiVector::swap()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a673649b25448f73587021f756761aea0',1,'dftfe::utils::MemoryStorage::swap()']]], + ['symbol_52',['symbol',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a56c0dd3d4fba24fc42ec38e9311b2b4e',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['symmetryclass_53',['symmetryClass',['../classdftfe_1_1symmetry_class.html#aa73185c3c57d368215fc158409c269f3',1,'dftfe::symmetryClass']]] +]; diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 000000000..280b71171 --- /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#a620d35087439a6b1385e153c8b366da6',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField, std::map< dealii::CellId, std::vector< double > > &rhoQuadValues)'],['../classdftfe_1_1dft_class.html#a6526ff0dc26022b4be5c0a77a70485b8',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)'],['../classdftfe_1_1dft_class.html#a38b0460996f081071f8c32ed103c5a1f',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)'],['../classdftfe_1_1dft_class.html#ad4a2a7fa78e6fe75f4278ff7bff4f545',1,'dftfe::dftClass::totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)']]], + ['totalmagnetization_5',['totalMagnetization',['../classdftfe_1_1dft_class.html#a06dd19a99bd5e9f67100023badf20c41',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#a6e0f1ba395a49e457f47429b0a8719d4',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..88486d08f --- /dev/null +++ b/search/functions_14.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['unsubscribe_0',['unsubscribe',['../classdftfe_1_1kerker_solver_problem.html#afc73ee344193c5b99b52b344b2a8b1dc',1,'dftfe::kerkerSolverProblem::unsubscribe()'],['../classdftfe_1_1poisson_solver_problem.html#aac807806fb5ed86456b47b8b2898a729',1,'dftfe::poissonSolverProblem::unsubscribe()'],['../classdftfe_1_1dealii_linear_solver_problem.html#a2adfa6e44f7621deee1024fd19d43cc6',1,'dftfe::dealiiLinearSolverProblem::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#aa38b1d0d1815e1fa1294ec95986476c2',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_1linear_algebra_1_1_multi_vector.html#ab399344072370e4a44f9f10d3ad86078',1,'dftfe::linearAlgebra::MultiVector::updateGhostValues()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#af58c204da503454f522e84a50cb36298',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValues(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)']]], + ['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']]], + ['updatesolution_11',['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_12',['updateTriangulationVertices',['../classdftfe_1_1mesh_movement_class.html#a392861a690db2ee6bf4e35163f8a9593',1,'dftfe::meshMovementClass']]], + ['updatewavefunctiondependentvxc_13',['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()']]], + ['upftoxml_14',['upfToxml',['../namespacedftfe_1_1pseudo_utils.html#a412b1b4b0fd7aed5722d966633ddbd7b',1,'dftfe::pseudoUtils']]] +]; 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..5ce1060a9 --- /dev/null +++ b/search/functions_16.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['wfccontractionsforcekernelsallh_0',['wfcContractionsForceKernelsAllH',['../namespacedftfe_1_1force.html#a969d90c4a97c62e6cfe13cc6b4cbfafc',1,'dftfe::force']]], + ['writebands_1',['writeBands',['../classdftfe_1_1dft_class.html#a1c3fa8435adce12998ff97948831fc25',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#a9ba81968d244114bab6bbaccbe64bdfd',1,'dftfe::dftUtils::writeDataIntoFile(const std::vector< std::vector< double > > &data, const std::string &fileName)'],['../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)']]], + ['writedatavtuparallellowestpoolid_4',['writeDataVTUParallelLowestPoolId',['../namespacedftfe_1_1dft_utils.html#ab2d0c7684eb485e417ddfb8a1c945836',1,'dftfe::dftUtils']]], + ['writedomainandatomcoordinates_5',['writedomainandatomcoordinates',['../classdftfe_1_1dftfe_wrapper.html#ace395ea4730e404be8549f8b47108692',1,'dftfe::dftfeWrapper::writeDomainAndAtomCoordinates()'],['../classdftfe_1_1dft_class.html#a8915dd518691f20cc755d9651b2dc1e4',1,'dftfe::dftClass::writeDomainAndAtomCoordinates()'],['../classdftfe_1_1dft_class.html#a1b984756d1a646dca728f9f862c92840',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']]], + ['writegselectrondensity_6',['writegselectrondensity',['../classdftfe_1_1dft_class.html#ab43cba0b4608275a4be01983085899f9',1,'dftfe::dftClass::writeGSElectronDensity()'],['../classdftfe_1_1dft_base.html#a81e929d95a1e7eef56246ccb57fe7ceb',1,'dftfe::dftBase::writeGSElectronDensity()']]], + ['writemesh_7',['writemesh',['../classdftfe_1_1dftfe_wrapper.html#a53ae029e8da83f2e19620ef26f94e58b',1,'dftfe::dftfeWrapper::writeMesh()'],['../classdftfe_1_1geo_opt_cell.html#ae033e40f4a9baf62f194329e87b43e21',1,'dftfe::geoOptCell::writeMesh()'],['../classdftfe_1_1dft_base.html#addd8918b0a2b31a20979686ab946375e',1,'dftfe::dftBase::writeMesh()'],['../classdftfe_1_1dft_class.html#a64f0f24d5c868b1efac382752e8c9143',1,'dftfe::dftClass::writeMesh(std::string meshFileName)'],['../classdftfe_1_1dft_class.html#abdd4879518e59e22c0c55ec30af96f46',1,'dftfe::dftClass::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#a375bf99679efc7b5bbfd8fc23030acd1',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..8d86e3b01 --- /dev/null +++ b/search/functions_17.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['xcopy_0',['xcopy',['../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)']]], + ['xgemm_1',['xgemm',['../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)']]], + ['xmltodftfeparser_2',['xmlTodftfeParser',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a289dbe12684054f78dcaf0a5cad4f02a',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['xscal_3',['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)']]], + ['xthx_4',['xthx',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a1b108d799790a92e0306dc8642ae59b7',1,'dftfe::kohnShamDFTOperatorClass::XtHX(const dataTypes::number *src, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aebc94776baedf1689a204e5ae5da39fe',1,'dftfe::kohnShamDFTOperatorClass::XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)'],['../classdftfe_1_1operator_d_f_t_class.html#a024250c70345ba2df79da55df501930e',1,'dftfe::operatorDFTClass::XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, std::vector< dataTypes::number > &ProjHam)=0'],['../classdftfe_1_1operator_d_f_t_class.html#abeb23ca5dd4695eda12d125c9818aea1',1,'dftfe::operatorDFTClass::XtHX(const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0']]], + ['xthxmixedprec_5',['xthxmixedprec',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aa0ad9610abe9e4814c8f22f28b86d7b8',1,'dftfe::kohnShamDFTOperatorClass::XtHXMixedPrec()'],['../classdftfe_1_1operator_d_f_t_class.html#aa68de041a196f6c055965363fb43d408',1,'dftfe::operatorDFTClass::XtHXMixedPrec()']]] +]; 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..83995f828 --- /dev/null +++ b/search/functions_19.js @@ -0,0 +1,31 @@ +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#a6874f5287ab5c06e573752fdc4df6d04',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']]], + ['_7efebasisoperationsbase_13',['~FEBasisOperationsBase',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#af6bb9fe2a557d4f976736b4c1a369fec',1,'dftfe::basis::FEBasisOperationsBase']]], + ['_7ekohnshamdftoperatordeviceclass_14',['~kohnShamDFTOperatorDeviceClass',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6b2894d134ae37256e24f3111ee3b99a',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['_7elbfgsnonlinearsolver_15',['~LBFGSNonLinearSolver',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#adbf97527c3394b91e07ad0012376f4ab',1,'dftfe::LBFGSNonLinearSolver']]], + ['_7ememorystorage_16',['~MemoryStorage',['../classdftfe_1_1utils_1_1_memory_storage.html#a5a81d138956b331642b19958251138e2',1,'dftfe::utils::MemoryStorage']]], + ['_7emeshmovementclass_17',['~meshMovementClass',['../classdftfe_1_1mesh_movement_class.html#a7b3820b3fbf12ddc1a497557c9a2a789',1,'dftfe::meshMovementClass']]], + ['_7empipatternp2p_18',['~MPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0cf00e673b5fa956e42fdcb52165404b',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['_7empirequestersbase_19',['~MPIRequestersBase',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html#a181c8cb807d38305dafb0eeb3ef92308',1,'dftfe::utils::mpi::MPIRequestersBase']]], + ['_7emultivector_20',['~MultiVector',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a87a40ed298ce1f602e794a4e64b20981',1,'dftfe::linearAlgebra::MultiVector']]], + ['_7enonlinearsolver_21',['~nonLinearSolver',['../classdftfe_1_1non_linear_solver.html#aa2245adca4f04b972cdb9715769b405f',1,'dftfe::nonLinearSolver']]], + ['_7enonlinearsolverproblem_22',['~nonlinearSolverProblem',['../classdftfe_1_1nonlinear_solver_problem.html#a859578af1f37f26d4a5e2d5481c4ceab',1,'dftfe::nonlinearSolverProblem']]], + ['_7eoperatordftclass_23',['~operatorDFTClass',['../classdftfe_1_1operator_d_f_t_class.html#a2ddba1b3b2b3b3a50b73c2b8e750f5e9',1,'dftfe::operatorDFTClass']]], + ['_7eoptimizedindexset_24',['~OptimizedIndexSet',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a7131d9ad589b09d6429b530d8f037c35',1,'dftfe::utils::OptimizedIndexSet']]], + ['_7eprocessgrid_25',['~ProcessGrid',['../classdftfe_1_1_process_grid.html#a89ae9102265a4950855f93db673fef17',1,'dftfe::ProcessGrid']]], + ['_7etriangulationmanager_26',['~triangulationManager',['../classdftfe_1_1triangulation_manager.html#aeeeb378e19dc801a35671951bbfb9a66',1,'dftfe::triangulationManager']]], + ['_7exmltodftfeparser_27',['~xmlTodftfeParser',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#ae07c312bb6d50bba62acd74c142a3633',1,'dftfe::pseudoUtils::xmlTodftfeParser']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 000000000..d186526c0 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,197 @@ +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#a80ddbec9a6c7563869a88c76631a2ea3',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#a6168c65b3507b95094116d0292aac6b2',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_base.html#a018fd956b5fdeba3db102a839c41851b',1,'dftfe::basis::FEBasisOperationsBase']]], + ['cellstypeflag_32',['cellsTypeFlag',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a4d16181763023f4fb59faa43ab74ce62',1,'dftfe::basis::FEBasisOperationsBase']]], + ['cgerv2d_33',['cgerv2d',['../namespacedftfe.html#a04e4d97f239e0b9956f4845bee81977e',1,'dftfe::Cgerv2d(int, int, int, number *, int, int, int)'],['../namespacedftfe.html#a6bf86fc7fe8ae20e11a768bd7c332ada',1,'dftfe::Cgerv2d(int context, int M, int N, float *A, int lda, int rsrc, int csrc)'],['../namespacedftfe.html#a98a1ccbf0216f537b9de25a185d1558e',1,'dftfe::Cgerv2d(int context, int M, int N, double *A, int lda, int rsrc, int csrc)']]], + ['cgesd2d_34',['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_35',['cgPRPNonLinearSolver',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#aac1c94491ec3af84a823082eac62e856',1,'dftfe::cgPRPNonLinearSolver']]], + ['chebyshevfilter_36',['chebyshevFilter',['../namespacedftfe_1_1linear_algebra_operations.html#a735b3562ca9fd1c750af7d5d8b3faa0f',1,'dftfe::linearAlgebraOperations']]], + ['chebyshevfilteropt_37',['chebyshevFilterOpt',['../namespacedftfe_1_1linear_algebra_operations.html#a6376b8e1e190aa67ba64c66f11cd91fb',1,'dftfe::linearAlgebraOperations']]], + ['chebyshevorthogonalizedsubspaceiterationsolver_38',['chebyshevOrthogonalizedSubspaceIterationSolver',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a89c63d828f3841b92e2e13b1675d39ed',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['check_5fparameters_39',['check_parameters',['../classdftfe_1_1dft_parameters.html#a166f01e993b958c7eec268548241d415',1,'dftfe::dftParameters']]], + ['checkconstraintsconsistency_40',['checkConstraintsConsistency',['../classdftfe_1_1triangulation_manager.html#a5f788b4faeea455b1d920b401c1bbad7',1,'dftfe::triangulationManager']]], + ['checkperiodicsurfacerefinementconsistency_41',['checkPeriodicSurfaceRefinementConsistency',['../classdftfe_1_1triangulation_manager.html#a565b8a3f11c4962037a7c40898785278',1,'dftfe::triangulationManager']]], + ['checkrestart_42',['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_43',['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_44',['classifyInteriorSurfaceNodesInCell',['../namespacedftfe_1_1vector_tools.html#aef36d37d346a77547ebbfdad6ff975c9',1,'dftfe::vectorTools']]], + ['classifyinteriorsurfacenodesinglobalarray_45',['classifyInteriorSurfaceNodesInGlobalArray',['../namespacedftfe_1_1vector_tools.html#abe2433fc07b81e4cdfb66067f9264647',1,'dftfe::vectorTools']]], + ['clear_46',['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_1utils_1_1_memory_storage.html#a998f773c54881aa83edf83a21bf7d4a5',1,'dftfe::utils::MemoryStorage::clear()'],['../classdftfe_1_1poisson_solver_problem.html#a208add694f68451e4d7dadb63ee24782',1,'dftfe::poissonSolverProblem::clear()']]], + ['clearhistory_47',['clearHistory',['../classdftfe_1_1_mixing_scheme.html#a05f44fc9c96365483edf66f9546777c2',1,'dftfe::MixingScheme']]], + ['clearmaps_48',['clearMaps',['../classdftfe_1_1symmetry_class.html#ac8d9ad06a47e0ee33051d66afe0494f4',1,'dftfe::symmetryClass']]], + ['clearrhodata_49',['clearRhoData',['../classdftfe_1_1dft_class.html#a8162f36f1085a4cb8a8b6f5ddd64389a',1,'dftfe::dftClass']]], + ['clearscratchmultivectors_50',['clearScratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a81ea4dc95fcfbf1033a2ef3a257bffdd',1,'dftfe::basis::FEBasisOperationsBase']]], + ['complexconj_51',['complexconj',['../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)'],['../namespacedftfe_1_1utils.html#a053e2c730762866c294a4f28ab31b2b9',1,'dftfe::utils::complexConj(const double x)'],['../namespacedftfe_1_1utils.html#ac352935e73b5afc211a924fa31515b7f',1,'dftfe::utils::complexConj(const float x)']]], + ['compositedata_52',['CompositeData',['../classdftfe_1_1dft_utils_1_1_composite_data.html#abf075a97ea1ac713b7ecfbbc33c95e8b',1,'dftfe::dftUtils::CompositeData']]], + ['compute_5fcholesky_5ffactorization_53',['compute_cholesky_factorization',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6e90313134e463ddf7374ee2023ba032',1,'dftfe::ScaLAPACKMatrix']]], + ['compute_5ffermienergy_54',['compute_fermienergy',['../classdftfe_1_1dft_class.html#a80d33098c0b660e8e54d61e71fbd5a09',1,'dftfe::dftClass']]], + ['compute_5ffermienergy_5fconstraintmagnetization_55',['compute_fermienergy_constraintMagnetization',['../classdftfe_1_1dft_class.html#a6fc10c5f849fdc6bf2e0f64ed5ded496',1,'dftfe::dftClass']]], + ['compute_5fldos_56',['compute_ldos',['../classdftfe_1_1dft_class.html#a673e8b5f245d5bcd14eaf349b65dd400',1,'dftfe::dftClass']]], + ['compute_5flocalizationlength_57',['compute_localizationLength',['../classdftfe_1_1dft_class.html#abe99a474ec236b4cec0f3b6670c5436f',1,'dftfe::dftClass']]], + ['compute_5flu_5ffactorization_58',['compute_lu_factorization',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8ce68e532d59d501135b8c49f0ad174f',1,'dftfe::ScaLAPACKMatrix']]], + ['compute_5fpdos_59',['compute_pdos',['../classdftfe_1_1dft_class.html#a7a9f2ebcd809ccfbe33875ec0ea37119',1,'dftfe::dftClass']]], + ['compute_5frhoout_60',['compute_rhoOut',['../classdftfe_1_1dft_class.html#afe116ad6b8b55c8fad396e156b170a95',1,'dftfe::dftClass']]], + ['compute_5ftdos_61',['compute_tdos',['../classdftfe_1_1dft_class.html#a4abaea25d0f116f400be43fa704f88ab',1,'dftfe::dftClass']]], + ['computeandersonmixingcoeff_62',['computeAndersonMixingCoeff',['../classdftfe_1_1_mixing_scheme.html#a0f66c77a6ef53062cadf9b6a0f5728a7',1,'dftfe::MixingScheme']]], + ['computeandsymmetrize_5frhoout_63',['computeAndSymmetrize_rhoOut',['../classdftfe_1_1symmetry_class.html#a7bd98fac638ed9f7acb97305c3d314c8',1,'dftfe::symmetryClass']]], + ['computeatomsforces_64',['computeAtomsForces',['../classdftfe_1_1force_class.html#ac06b05c279e7d97ecad2f8f6236b739c',1,'dftfe::forceClass']]], + ['computeatomsforcesgaussiangenerator_65',['computeAtomsForcesGaussianGenerator',['../classdftfe_1_1force_class.html#a39d0fc9d3fefc3913247875356132ce7',1,'dftfe::forceClass']]], + ['computecelllocalindexsetmap_66',['computecelllocalindexsetmap',['../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)'],['../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#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)']]], + ['computeconfigurationalforceeeshelbyeelectrophitot_67',['computeConfigurationalForceEEshelbyEElectroPhiTot',['../classdftfe_1_1force_class.html#a3cfb2b604232e385d6b6b1007107cf57',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeeshelbytensorfpspfnllinfe_68',['computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE',['../classdftfe_1_1force_class.html#ad3c0b332d5ad4af930482d75615dea0f',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeselflinfe_69',['computeConfigurationalForceEselfLinFE',['../classdftfe_1_1force_class.html#af0a2e278454e913838ca332381696f85',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeselfnosurfacelinfe_70',['computeConfigurationalForceEselfNoSurfaceLinFE',['../classdftfe_1_1force_class.html#afeb25e90a9f5d3a8added6fc97bcc739',1,'dftfe::forceClass']]], + ['computeconfigurationalforcephiextlinfe_71',['computeConfigurationalForcePhiExtLinFE',['../classdftfe_1_1force_class.html#aa1d226061b7e582dd37e0c1597f4599d',1,'dftfe::forceClass']]], + ['computeconfigurationalforcetotallinfe_72',['computeConfigurationalForceTotalLinFE',['../classdftfe_1_1force_class.html#a5dbbdcdb9b367f2319047b7ec4a822d5',1,'dftfe::forceClass']]], + ['computedeltad_73',['computeDeltaD',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7e148abbafa347569ce898ee0252c5af',1,'dftfe::cgPRPNonLinearSolver']]], + ['computedeltas_74',['computeDeltas',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a26f389399477411e2bd73cc0434442bf',1,'dftfe::cgPRPNonLinearSolver']]], + ['computedensitybasedenergydensity_75',['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_76',['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()'],['../classdftfe_1_1exc_density_base_class.html#ae4c3fb6a4e629abd478353c9a927bd12',1,'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 =0']]], + ['computedensitybasedvxc_77',['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_78',['computeDFTDCorrection',['../classdftfe_1_1dispersion_correction.html#a9678ff2882412d84267d8256bd2bf234',1,'dftfe::dispersionCorrection']]], + ['computedftfreeenergy_79',['computeDFTFreeEnergy',['../classdftfe_1_1dftfe_wrapper.html#aeecf15844b4e6fc0005f8a5ba321a1da',1,'dftfe::dftfeWrapper']]], + ['computediagonala_80',['computediagonala',['../classdftfe_1_1kerker_solver_problem.html#a5db62e0f9189cc375a1f13bb071a4ce0',1,'dftfe::kerkerSolverProblem::computeDiagonalA()'],['../classdftfe_1_1poisson_solver_problem.html#a2db6195ac0129cd852cff44c06262965',1,'dftfe::poissonSolverProblem::computeDiagonalA()']]], + ['computedispresioncorrection_81',['computeDispresionCorrection',['../classdftfe_1_1dispersion_correction.html#ad07f240b59b757a39b913611fa7597b0',1,'dftfe::dispersionCorrection']]], + ['computeeigenresidualnorm_82',['computeEigenResidualNorm',['../namespacedftfe_1_1linear_algebra_operations.html#a6228b73d78eaeb4f9cec4a67951abad4',1,'dftfe::linearAlgebraOperations']]], + ['computeelectrostaticenergyhrefined_83',['computeElectrostaticEnergyHRefined',['../classdftfe_1_1dft_class.html#a3298ee11100f1d66d3371750cea9b3e2',1,'dftfe::dftClass']]], + ['computeelementalnonlocalpseudoovdataforce_84',['computeElementalNonLocalPseudoOVDataForce',['../classdftfe_1_1force_class.html#ad37e04da7afd67dec1882e33192ee676',1,'dftfe::forceClass']]], + ['computeelementalovprojectorkets_85',['computeElementalOVProjectorKets',['../classdftfe_1_1dft_class.html#ae991f51d4a28e0ddcec3001c37dc42a0',1,'dftfe::dftClass']]], + ['computeenergy_86',['computeEnergy',['../classdftfe_1_1energy_calculator.html#af987be10cee1da2c726fb5133832769c',1,'dftfe::energyCalculator']]], + ['computeenergyspinpolarized_87',['computeEnergySpinPolarized',['../classdftfe_1_1energy_calculator.html#aa467fa2ac5afbff8495951495005c813',1,'dftfe::energyCalculator']]], + ['computeentropicenergy_88',['computeEntropicEnergy',['../classdftfe_1_1energy_calculator.html#a1f47ac488d9823bb083a31bb6730e8b3',1,'dftfe::energyCalculator']]], + ['computeeta_89',['computeEta',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ae775910470c51a65a373b4ff70011ad5',1,'dftfe::cgPRPNonLinearSolver']]], + ['computefloatingatomsforces_90',['computeFloatingAtomsForces',['../classdftfe_1_1force_class.html#ac48b7f696b19b9f989ba16ea6ca2ab76',1,'dftfe::forceClass']]], + ['computehamiltonianmatricesallkpt_91',['computeHamiltonianMatricesAllkpt',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a46b9c4221dac191f4c7206951b460ee3',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['computehamiltonianmatrix_92',['computeHamiltonianMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a95dad82e3190de59545422f0a85bc86b',1,'dftfe::kohnShamDFTOperatorClass']]], + ['computehamiltoniantimesxinternal_93',['computeHamiltonianTimesXInternal',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a6dd53a1564e82a94bda89b1ded7595df',1,'dftfe::kohnShamDFTOperatorClass']]], + ['computehx_94',['computeHx',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad38d152f3b493423b7a643ba80232311',1,'dftfe::LBFGSNonLinearSolver']]], + ['computeincrement_95',['computeincrement',['../classdftfe_1_1mesh_movement_gaussian_class.html#ae3bdfb1d098b810a802f8cb9931c3a25',1,'dftfe::meshMovementGaussianClass::computeIncrement()'],['../classdftfe_1_1mesh_movement_affine_transform.html#a3bee91967e0e4f6fae3676c83d583b66',1,'dftfe::meshMovementAffineTransform::computeIncrement()']]], + ['computeincrementtwostep_96',['computeIncrementTwoStep',['../classdftfe_1_1mesh_movement_gaussian_class.html#ab9a2bcda8b4c09c32454323277b379a6',1,'dftfe::meshMovementGaussianClass']]], + ['computejxwforrho_97',['computeJxWForRho',['../classdftfe_1_1dft_class.html#a34ec94f66b264a6f8c2a94510aeda0ac',1,'dftfe::dftClass']]], + ['computekineticmatrix_98',['computeKineticMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a32fa111bdaac8e10a073d723f888c521',1,'dftfe::kohnShamDFTOperatorClass']]], + ['computelocalhamiltoniantimesx_99',['computelocalhamiltoniantimesx',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a0bd704f4019cc2ac8039c1628e92521a',1,'dftfe::kohnShamDFTOperatorClass::computeLocalHamiltonianTimesX()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a80e78aa5c0bdd0f863b354d4980621ce',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeLocalHamiltonianTimesX()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a94a1a8e86ff919f45f12f8148d19a6fa',1,'dftfe::kohnShamDFTOperatorClass::computeLocalHamiltonianTimesX()']]], + ['computelocalrhoout_100',['computeLocalrhoOut',['../classdftfe_1_1symmetry_class.html#a4d5cd1483de7f396b849ac12e1806f11',1,'dftfe::symmetryClass']]], + ['computemassvector_101',['computemassvector',['../classdftfe_1_1operator_d_f_t_class.html#a9ac124c7c417a90d30405e61044a1a07',1,'dftfe::operatorDFTClass::computeMassVector()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad511c9f1ae497ec3e5701a098d3903f7',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeMassVector()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a757f93c20650e8fbebde1f7a79fad028',1,'dftfe::kohnShamDFTOperatorClass::computeMassVector()']]], + ['computemaximumhighestoccupiedstateresidualnorm_102',['computemaximumhighestoccupiedstateresidualnorm',['../classdftfe_1_1dft_class.html#a0874f8d5fb6d61c0d68291f2ae40a191',1,'dftfe::dftClass::computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState)'],['../classdftfe_1_1dft_class.html#a9f5a5d83c8060b668c7f650c1bfaf59c',1,'dftfe::dftClass::computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy)']]], + ['computemeanvalueconstraint_103',['computeMeanValueConstraint',['../classdftfe_1_1poisson_solver_problem.html#a281466439e2358bbe58bafea27f61c06',1,'dftfe::poissonSolverProblem']]], + ['computemixingmatrices_104',['computeMixingMatrices',['../classdftfe_1_1_mixing_scheme.html#afee8968d6de0d01a032ace52ff1935a9',1,'dftfe::MixingScheme']]], + ['computenewtonstep_105',['computeNewtonStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a55dbb50629e2baef41ccbbe8da63622a',1,'dftfe::BFGSNonLinearSolver']]], + ['computenodalrhofromquaddata_106',['computeNodalRhoFromQuadData',['../classdftfe_1_1dft_class.html#a7f637a00ccbee150341af50d2290dfcc',1,'dftfe::dftClass']]], + ['computenonlocalhamiltoniantimesx_107',['computenonlocalhamiltoniantimesx',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a0c07d0a4b1c86b1c7fb2fa98569f01f2',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeNonLocalHamiltonianTimesX()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ac596b8428436f1d505041492bc6ab214',1,'dftfe::kohnShamDFTOperatorClass::computeNonLocalHamiltonianTimesX()']]], + ['computenonlocalprojectorkettimesxtimesv_108',['computenonlocalprojectorkettimesxtimesv',['../classdftfe_1_1operator_d_f_t_class.html#aabf98bb2709eecca713098727c5c47e3',1,'dftfe::operatorDFTClass::computeNonLocalProjectorKetTimesXTimesV()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a9ad6e17e41bf28c405e109143a77ed32',1,'dftfe::kohnShamDFTOperatorClass::computeNonLocalProjectorKetTimesXTimesV()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a245268ad1e87e1c71915137d2e03d773',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeNonLocalProjectorKetTimesXTimesV()']]], + ['computeoffsetvectors_109',['computeOffsetVectors',['../namespacedftfe_1_1mesh_gen_utils.html#a4c04260faf47b3fc3b2990ca52b2ebf2',1,'dftfe::meshGenUtils']]], + ['computeoutputdensitydirectionalderivative_110',['computeOutputDensityDirectionalDerivative',['../classdftfe_1_1dft_class.html#af16ae713ae44c20f13bb6e511cfbfc0a',1,'dftfe::dftClass']]], + ['computeperiodicfacenormals_111',['computePeriodicFaceNormals',['../namespacedftfe_1_1mesh_gen_utils.html#a8cd97500e6d1b1fcf250a0069bd68eb8',1,'dftfe::meshGenUtils']]], + ['computeresiduall2norm_112',['computeResidualL2Norm',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a124bb0c681b685fa3ccff00b8dc1d4d2',1,'dftfe::cgPRPNonLinearSolver']]], + ['computerfostep_113',['computeRFOStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af138aa8db7da640b332f4b431714118b',1,'dftfe::BFGSNonLinearSolver']]], + ['computerhofirstorderresponsecpu_114',['computeRhoFirstOrderResponseCPU',['../namespacedftfe.html#a4fc4a18e3948d3f1c907ec7d18830ebb',1,'dftfe']]], + ['computerhofirstorderresponsecpumixedprec_115',['computeRhoFirstOrderResponseCPUMixedPrec',['../namespacedftfe.html#a75f99fd9facc34f78a0953999539f641',1,'dftfe']]], + ['computerhofrompsi_116',['computeRhoFromPSI',['../namespacedftfe.html#a861ed3871328c07f40a30c7b6b0f2512',1,'dftfe']]], + ['computerhogradrhofrominterpolatedvalues_117',['computeRhoGradRhoFromInterpolatedValues',['../namespacedftfe.html#af0903e4ac9fd49c22cf81df8df9cb13e',1,'dftfe']]], + ['computerhoinitialguessfrompsi_118',['computeRhoInitialGuessFromPSI',['../classdftfe_1_1dft_class.html#a8ede23db497cce6f15c7d2b3218bd505',1,'dftfe::dftClass']]], + ['computerhonodalfirstorderresponsefrompsiandpsiprime_119',['computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime',['../classdftfe_1_1dft_class.html#adba61a95c20dea27626d1cf4677062ca',1,'dftfe::dftClass']]], + ['computerhonodalfrompsi_120',['computeRhoNodalFromPSI',['../classdftfe_1_1dft_class.html#aef59caa1c3d5809c59ca5559404eca46',1,'dftfe::dftClass']]], + ['computerhs_121',['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()']]], + ['computesparsestructurenonlocalprojectors_5fov_122',['computeSparseStructureNonLocalProjectors_OV',['../classdftfe_1_1dft_class.html#a90284f68d2fadcdcd0a956adba437c80',1,'dftfe::dftClass']]], + ['computestep_123',['computestep',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a5d2d2d2e0b9e9e86063ccaf9d812c29d',1,'dftfe::LBFGSNonLinearSolver::computeStep()'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a8eabd0433a0564f247ebe3e7e60ed89c',1,'dftfe::BFGSNonLinearSolver::computeStep()']]], + ['computestepscale_124',['computeStepScale',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a0dcf24f75956fc467c1788d40969d73e',1,'dftfe::LBFGSNonLinearSolver']]], + ['computestress_125',['computestress',['../classdftfe_1_1dft_class.html#a9e4b008ff40378a5aef6d20c2f3dc311',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#afe98400f6935796142fb58a87e7b6d9f',1,'dftfe::forceClass::computeStress(const dealii::MatrixFree< 3, double > &matrixFreeData, kohnShamDFTOperatorClass< FEOrder, FEOrderElectro > &kohnShamDFTEigenOperator, 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::map< dealii::CellId, std::vector< double > > &rhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &rhoOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectro, const std::map< dealii::CellId, std::vector< double > > &gradRhoOutValuesElectroLpsp, 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_126',['computeStressEEshelbyEElectroPhiTot',['../classdftfe_1_1force_class.html#abc43b4b7947bd0bda27179e4725a9332',1,'dftfe::forceClass']]], + ['computestresseeshelbyepspenlek_127',['computeStressEEshelbyEPSPEnlEk',['../classdftfe_1_1force_class.html#a8cd227128f5240945d61c62143587e2b',1,'dftfe::forceClass']]], + ['computestresseself_128',['computeStressEself',['../classdftfe_1_1force_class.html#a513b14e0715bcc3eb440f3766c10a4af',1,'dftfe::forceClass']]], + ['computestressspinpolarizedeeshelbyepspenlek_129',['computeStressSpinPolarizedEEshelbyEPSPEnlEk',['../classdftfe_1_1force_class.html#abbf27146dda8220802e373dc14a420ba',1,'dftfe::forceClass']]], + ['computetotaldensityfromspinpolarised_130',['computeTotalDensityFromSpinPolarised',['../classdftfe_1_1dft_class.html#afaafd0c993b988800df713efad194769',1,'dftfe::dftClass']]], + ['computetotalgraddensityfromspinpolarised_131',['computeTotalGradDensityFromSpinPolarised',['../classdftfe_1_1dft_class.html#a79fca39448df1d08896c9030dab38917',1,'dftfe::dftClass']]], + ['computetotalnumberunknowns_132',['computeTotalNumberUnknowns',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7bb90f7e15efc7aad6a2ddab565eb60a',1,'dftfe::cgPRPNonLinearSolver']]], + ['computetracexthx_133',['computeTraceXtHX',['../classdftfe_1_1dft_class.html#a02ecf2986810c694fc0460e1de107162',1,'dftfe::dftClass']]], + ['computetracextkx_134',['computeTraceXtKX',['../classdftfe_1_1dft_class.html#a1d578bf59cf6b2d413d5a175ff49de4c',1,'dftfe::dftClass']]], + ['computetrustradius_135',['computeTrustRadius',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ae933250fa74d21f28232979c2b8b748a',1,'dftfe::BFGSNonLinearSolver']]], + ['computeupdatestep_136',['computeUpdateStep',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a4a4c929d27e3f9a31a057f3264c8ed92',1,'dftfe::LBFGSNonLinearSolver']]], + ['computeveff_137',['computeveff',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a56ec99f68f23545b8881110f97c9efac',1,'dftfe::kohnShamDFTOperatorClass::computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ad9bcfcf2314ea9148722c1991994b22d',1,'dftfe::kohnShamDFTOperatorClass::computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a7834665a86b09b10fb897361274be587',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aad17d0302fd0bd082d6a25f5cb5a0be1',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEff(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)']]], + ['computeveffexternalpotcorr_138',['computeveffexternalpotcorr',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad1a585ad044039689a5b06154627e5a0',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffExternalPotCorr()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a50474755ace0d6b48298fd6c0eab56e3',1,'dftfe::kohnShamDFTOperatorClass::computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const unsigned int externalPotCorrQuadratureId)']]], + ['computeveffprime_139',['computeveffprime',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a24e487973bc197223d7edea0b235a823',1,'dftfe::kohnShamDFTOperatorClass::computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aa9066cba3520b2208d8b5cb868632374',1,'dftfe::kohnShamDFTOperatorClass::computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a46424810e19080c7dea107ceef9f6022',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#adb3baa2cad413c196e84f4a917f5c71d',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffPrime(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)']]], + ['computeveffprimespinpolarized_140',['computeveffprimespinpolarized',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a30107281a1cd37464d0e027dbf6966fd',1,'dftfe::kohnShamDFTOperatorClass::computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#acd98b8f88dc45843bc5aa5e1ee59bbed',1,'dftfe::kohnShamDFTOperatorClass::computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a935768df02bb352b010d2121c75b9c0e',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a01ed7d8a700b0196c003835679fc4c42',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffPrimeSpinPolarized(const std::map< dealii::CellId, std::vector< double > > &rhoValues, const std::map< dealii::CellId, std::vector< double > > &rhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoPrimeValues, const std::map< dealii::CellId, std::vector< double > > &phiPrimeValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues)']]], + ['computeveffspinpolarized_141',['computeveffspinpolarized',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a45fb30bd00abeda3eec2932c23c53192',1,'dftfe::kohnShamDFTOperatorClass::computeVEffSpinPolarized()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a8c3943c5578fa90c3ba8baf546139a35',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > *gradRhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, const unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a8736042b80f107c2cf82508132648ee3',1,'dftfe::kohnShamDFTOperatorDeviceClass::computeVEffSpinPolarized(const std::map< dealii::CellId, std::vector< double > > *rhoValues, const std::map< dealii::CellId, std::vector< double > > &phiValues, unsigned int spinIndex, const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const unsigned int externalPotCorrQuadratureId)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a4690d28a0fae00f6ef27ab8c60bd847e',1,'dftfe::kohnShamDFTOperatorClass::computeVEffSpinPolarized()']]], + ['computevolume_142',['computeVolume',['../classdftfe_1_1dft_class.html#a4277d99c80f5eefab05924c8db31f8d3',1,'dftfe::dftClass']]], + ['computevselffieldgateauxderfd_143',['computeVselfFieldGateauxDerFD',['../classdftfe_1_1dft_class.html#a521200ac4552f2fbeac94a567d8ed458',1,'dftfe::dftClass']]], + ['computewavefunctiondependentexcenergy_144',['computewavefunctiondependentexcenergy',['../classdftfe_1_1exc_wavefunction_none_class.html#aed45b4171bbd0bb8fefe5f84c6eb4dc0',1,'dftfe::excWavefunctionNoneClass::computeWaveFunctionDependentExcEnergy()'],['../classdftfe_1_1exc_wavefunction_base_class.html#af68e3fda8e202c167a35fadd778de170',1,'dftfe::excWavefunctionBaseClass::computeWaveFunctionDependentExcEnergy()']]], + ['configforcelinfefinalize_145',['configForceLinFEFinalize',['../classdftfe_1_1force_class.html#ab88404cc09e20ef63720d03a4a753b4f',1,'dftfe::forceClass']]], + ['configforcelinfeinit_146',['configForceLinFEInit',['../classdftfe_1_1force_class.html#a295f9bad098c188759eb8ee94231447d',1,'dftfe::forceClass']]], + ['configuration_147',['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_148',['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_149',['conjugate',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a46ffac5802f6c8aa4e4f8faf739b85f7',1,'dftfe::ScaLAPACKMatrix']]], + ['consistentperiodicboundaryrefinement_150',['consistentPeriodicBoundaryRefinement',['../classdftfe_1_1triangulation_manager.html#a5ae101850bbb04ecfd369ee14b2bb53a',1,'dftfe::triangulationManager']]], + ['constraintmatrixinfo_151',['constraintMatrixInfo',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ab0064a774fc33fea62956386123f8579',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['convert_152',['convert',['../namespacedftfe_1_1pseudo_utils.html#ad187100ff9f9710b59b63e23df1161a7',1,'dftfe::pseudoUtils']]], + ['convertcartesiantospherical_153',['convertCartesianToSpherical',['../namespacedftfe_1_1pseudo_utils.html#aade7fcbd6b4fce4925871823d2b76127',1,'dftfe::pseudoUtils']]], + ['copy_154',['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()'],['../classdftfe_1_1utils_1_1_memory_transfer.html#a243d3f87405eb1503456f85ab9d1fbd1',1,'dftfe::utils::MemoryTransfer::copy()']]], + ['copy_5fconjugate_5ftransposed_155',['copy_conjugate_transposed',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a04dd4e08159c26e5fae262f9ca8dc183',1,'dftfe::ScaLAPACKMatrix']]], + ['copy_5fto_156',['copy_to',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2b846add6ba88a8e9b1f1af7750e3a9c',1,'dftfe::ScaLAPACKMatrix']]], + ['copy_5ftransposed_157',['copy_transposed',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab607c0944accd8bc9b549e43c57f695a',1,'dftfe::ScaLAPACKMatrix']]], + ['copydensityfromvector_158',['copyDensityFromVector',['../classdftfe_1_1dft_class.html#a5de064aaa887ead82ca7f698172ffe1f',1,'dftfe::dftClass']]], + ['copydensitytovector_159',['copyDensityToVector',['../classdftfe_1_1dft_class.html#aa441e9d0c2e678e13fb47b5a75e1df31',1,'dftfe::dftClass']]], + ['copyfile_160',['copyFile',['../namespacedftfe_1_1dft_utils.html#afdf53b76635604e4d222e23d82c54a95',1,'dftfe::dftUtils']]], + ['copyflatteneddealiivectosinglecompvec_161',['copyFlattenedDealiiVecToSingleCompVec',['../namespacedftfe_1_1vector_tools.html#ad8be7e32b2490c9d3211293ea4367b7c',1,'dftfe::vectorTools']]], + ['copyflattenedstlvectosinglecompvec_162',['copyFlattenedSTLVecToSingleCompVec',['../namespacedftfe_1_1vector_tools.html#ae9e994d96e1fbae2e10b12c1b77ed399',1,'dftfe::vectorTools']]], + ['copyfrom_163',['copyfrom',['../classdftfe_1_1utils_1_1_memory_storage.html#a421f6029b20bd1cf68bee49f239a6a0b',1,'dftfe::utils::MemoryStorage::copyFrom(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)'],['../classdftfe_1_1utils_1_1_memory_storage.html#af9ade9288f870cce7544f80003760b26',1,'dftfe::utils::MemoryStorage::copyFrom(const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage)']]], + ['copygraddensityfromvector_164',['copyGradDensityFromVector',['../classdftfe_1_1dft_class.html#ad12c5e4d82f4699b3706bd0c4ee075d2',1,'dftfe::dftClass']]], + ['copygraddensitytovector_165',['copyGradDensityToVector',['../classdftfe_1_1dft_class.html#a6fedfd16dbb753cdcde85902dc375013',1,'dftfe::dftClass']]], + ['copysinglecompvectoflatteneddealiivec_166',['copySingleCompVecToFlattenedDealiiVec',['../namespacedftfe_1_1vector_tools.html#a0920ffac60d8dc52a5d0854f5a9a410b',1,'dftfe::vectorTools']]], + ['copysinglecompvectoflattenedstlvec_167',['copySingleCompVecToFlattenedSTLVec',['../namespacedftfe_1_1vector_tools.html#ab5808aada14eb28ffc011775be52e072',1,'dftfe::vectorTools']]], + ['copyto_168',['copyto',['../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'],['../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#ae809a6c181b268ab01db861062cfc7df',1,'dftfe::utils::MemoryStorage::copyTo(ValueType *dst) 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#ae58b42050a422a237bd2c93ff22414bb',1,'dftfe::utils::MemoryStorage::copyTo(MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage) const']]], + ['copyvalue_169',['copyvalue',['../namespacedftfe_1_1utils.html#a1ea0aa4dc8f973de69fffcb53eb6d100',1,'dftfe::utils::copyValue(cuFloatComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#a79f307f373152b7a11b3cb370114c310',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const double b)'],['../namespacedftfe_1_1utils.html#adc6b68aa7d6871a7a255c164b3468028',1,'dftfe::utils::copyValue(cuFloatComplex *a, const cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a97b7ee5b1ba526695fa88a591ddbd6d8',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a20f425804df75df7a9aa0adaf6d3e2f3',1,'dftfe::utils::copyValue(hipFloatComplex *a, const double b)'],['../namespacedftfe_1_1utils.html#a7cfc456950459801afaf21bf2b03e470',1,'dftfe::utils::copyValue(double *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#a4854f3648ec34c4df9a4b546eade78c5',1,'dftfe::utils::copyValue(float *a, const double b)'],['../namespacedftfe_1_1utils.html#ad642a6592074ff59592a482383d19240',1,'dftfe::utils::copyValue(cuFloatComplex *a, const cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#abbd62a194d6e755b4244990590514771',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#aa62ba3f486de8602c6714ad814ac8b7d',1,'dftfe::utils::copyValue(float *a, const float b)'],['../namespacedftfe_1_1utils.html#a5b54b8d954cf7f7a6fefce0adffc03ec',1,'dftfe::utils::copyValue(double *a, const double b)']]], + ['createatombins_170',['createAtomBins',['../classdftfe_1_1vself_bins_manager.html#a22bf860da00a54ad61404ec1d8cb1e8c',1,'dftfe::vselfBinsManager']]], + ['createatombinssanitycheck_171',['createAtomBinsSanityCheck',['../classdftfe_1_1vself_bins_manager.html#ad6061e11aa96ae2515c432b0cfee1e4e',1,'dftfe::vselfBinsManager']]], + ['createbandparallelizationindices_172',['createBandParallelizationIndices',['../namespacedftfe_1_1dft_utils.html#a9b61065c8203ed68095edcf1ae5cfc09',1,'dftfe::dftUtils']]], + ['createbinobjectsforce_173',['createBinObjectsForce',['../classdftfe_1_1force_class.html#a9882fc5e615f5fccd03c7b43cd58291b',1,'dftfe::forceClass']]], + ['createboundingboxforsphere_174',['createBoundingBoxForSphere',['../namespacedftfe_1_1dft_utils.html#aa26c95fb5d563176b7f5deb897febaa9',1,'dftfe::dftUtils']]], + ['createboundingboxtrialocallyowned_175',['createBoundingBoxTriaLocallyOwned',['../namespacedftfe_1_1vector_tools.html#a94de11beb762513ccc8a67a135488399',1,'dftfe::vectorTools']]], + ['createdealiivector_176',['createDealiiVector',['../namespacedftfe_1_1vector_tools.html#a2ceeb70d960a91711970d88de99b0146',1,'dftfe::vectorTools']]], + ['createdeviceblashandle_177',['createDeviceBlasHandle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a638a635693630971775773c95b59b165',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['createglobaltolocalidmapsscalapackmat_178',['createGlobalToLocalIdMapsScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#afaed6d79685ef81cd4312ed4ac61c158',1,'dftfe::linearAlgebraOperations::internal']]], + ['createkpointparallelizationindices_179',['createKpointParallelizationIndices',['../namespacedftfe_1_1dft_utils.html#aa4eb730fa103524c924c0e0860ade0b8',1,'dftfe::dftUtils']]], + ['createmasterchargeidtoimageidmaps_180',['createMasterChargeIdToImageIdMaps',['../classdftfe_1_1dft_class.html#a26e05b3eb315edd74c5231062e6a4e1f',1,'dftfe::dftClass']]], + ['createmultivector_181',['createMultiVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ae023f5da01ac98ca8583b716e248e56f',1,'dftfe::basis::FEBasisOperationsBase']]], + ['createmultivectorfromdealiipartitioner_182',['createMultiVectorFromDealiiPartitioner',['../namespacedftfe_1_1linear_algebra.html#a80a955ddf22b83a2c100b958504010f2',1,'dftfe::linearAlgebra']]], + ['createparallelconstraintmatrixfromserial_183',['createParallelConstraintMatrixFromSerial',['../namespacedftfe_1_1vector_tools.html#a977b9d4c44854ce9555eaa4f57857c03',1,'dftfe::vectorTools']]], + ['createprefineddofhandler_184',['createpRefinedDofHandler',['../classdftfe_1_1dft_class.html#ab38a56a28c4df34e3ab3d1b5a901de6c',1,'dftfe::dftClass']]], + ['createprocessgridrectangularmatrix_185',['createProcessGridRectangularMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a6a31afb29381fc4e6b6fcefccaaedd17',1,'dftfe::linearAlgebraOperations::internal']]], + ['createprocessgridsquarematrix_186',['createProcessGridSquareMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a0bdaa7479769cdd6a30ab41d702f1fb9',1,'dftfe::linearAlgebraOperations::internal']]], + ['createscratchfolder_187',['createScratchFolder',['../classdftfe_1_1dftfe_wrapper.html#a810e943c0e3d9766360ad06e9b1d2d3a',1,'dftfe::dftfeWrapper']]], + ['createscratchmultivectors_188',['createScratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a3e7e770325b5a050c3cd025ac42bcb51',1,'dftfe::basis::FEBasisOperationsBase']]], + ['cross_5fproduct_189',['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_190',['crys2cart',['../classdftfe_1_1symmetry_class.html#ac91d23114e0cf4b960351bde7eb7e33e',1,'dftfe::symmetryClass']]], + ['csgerv2d_191',['Csgerv2d',['../namespacedftfe.html#a2dc58bb0b7f30e064c2fa44117c7d623',1,'dftfe']]], + ['csgesd2d_192',['Csgesd2d',['../namespacedftfe.html#a60f9d5cb0924f7a150d178001cb4e58b',1,'dftfe']]], + ['csys2blacs_5fhandle_193',['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..079637d70 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['data_0',['data',['../classdftfe_1_1utils_1_1_memory_storage.html#aae2837b289ac474e333828e48c9aa2d4',1,'dftfe::utils::MemoryStorage::data()'],['../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'],['../classdftfe_1_1utils_1_1_memory_storage.html#aac3f583e6cc54e0deaf65d8ef6a23c59',1,'dftfe::utils::MemoryStorage::data()']]], + ['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#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#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#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_base.html#a4d292401c658852ccec9289136cd4a61',1,'dftfe::dftBase::deformDomain()'],['../classdftfe_1_1dft_class.html#aa468ab79ddd4eabdc0029568bd02b7e0',1,'dftfe::dftClass::deformDomain()']]], + ['densityextrapolation_9',['DensityExtrapolation',['../classdftfe_1_1molecular_dynamics_class.html#a2dfec9cd88235861d9fed750220355b9',1,'dftfe::molecularDynamicsClass']]], + ['densitymatrixeigenbasisfirstorderresponse_10',['densityMatrixEigenBasisFirstOrderResponse',['../namespacedftfe_1_1linear_algebra_operations.html#a859845ea4dda7b323edc5fd98d5c5944',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']]], + ['destroydeviceblashandle_13',['destroyDeviceBlasHandle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9975f62a927516b070d81f50a1ab6a4c',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['determineorbitalfilling_14',['determineOrbitalFilling',['../classdftfe_1_1dft_class.html#a74e23d8a6a562f28b25c3b12eec95aa4',1,'dftfe::dftClass']]], + ['dftclass_15',['dftClass',['../classdftfe_1_1dft_class.html#a0303e8e40ac87743bd3cd5be5b0d0a3b',1,'dftfe::dftClass']]], + ['dftfewrapper_16',['dftfewrapper',['../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)'],['../classdftfe_1_1dftfe_wrapper.html#a46cc49ad20509c0eff5e1253c02b3521',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 isScfRestart=true)'],['../classdftfe_1_1dftfe_wrapper.html#af22ca470a5a6ba0c0cda782126dca90d',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)'],['../classdftfe_1_1dftfe_wrapper.html#a6f5e5a2f056a41b18ddffbd7de0a7483',1,'dftfe::dftfeWrapper::dftfeWrapper()']]], + ['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']]], + ['dipole_19',['dipole',['../classdftfe_1_1dft_class.html#abbcb7af1eb06bc8680892734626595f7',1,'dftfe::dftClass']]], + ['dispersioncorrection_20',['dispersionCorrection',['../classdftfe_1_1dispersion_correction.html#a7b944c8421d038ba9359ed675462518e',1,'dftfe::dispersionCorrection']]], + ['distribute_21',['distribute',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#aa8163dcab4764a016cc44fc2cecab0f5',1,'dftfe::dftUtils::constraintMatrixInfo::distribute()'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a74e9e6be3027c0ad47cf4c720c18b458',1,'dftfe::basis::FEBasisOperationsBase::distribute()'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a0ce7ded4f06cf85457ee1bb630421bf5',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#aae5b940241c022ac24e9c546a91f8cec',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUVec< double > &fieldVector) const']]], + ['distribute_5fslave_5fto_5fmaster_22',['distribute_slave_to_master',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a6c294cd6aaf1a88ff29f99939e7d3758',1,'dftfe::dftUtils::constraintMatrixInfo::distribute_slave_to_master(distributedCPUMultiVec< T > &fieldVector, const unsigned int blockSize) const'],['../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']]], + ['distributeforcecontributionfnlgammaatoms_23',['distributeForceContributionFnlGammaAtoms',['../classdftfe_1_1force_class.html#ae458689761b8191766911b05404213c2',1,'dftfe::forceClass']]], + ['distributeforcecontributionfpsplocalgammaatoms_24',['distributeForceContributionFPSPLocalGammaAtoms',['../classdftfe_1_1force_class.html#af2b9fdcab2458f674c06939adef640fb',1,'dftfe::forceClass']]], + ['distributex_25',['distributex',['../classdftfe_1_1kerker_solver_problem.html#a1265745147339654ba0b60b2247ba3cd',1,'dftfe::kerkerSolverProblem::distributeX()'],['../classdftfe_1_1dealii_linear_solver_problem.html#a55759d651b4bcadf7eb57b0b83d546a0',1,'dftfe::dealiiLinearSolverProblem::distributeX()'],['../classdftfe_1_1poisson_solver_problem.html#a298666149f5621be3454f5866e92cb54',1,'dftfe::poissonSolverProblem::distributeX()']]], + ['div_26',['div',['../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)'],['../namespacedftfe_1_1utils.html#aba5a41a6b9590be1de7f01addc594a3c',1,'dftfe::utils::div(float a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#add50b4aa742683c688bd2aa4a71cc83d',1,'dftfe::utils::div(cuDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#a58c915984c57daa85d959c27ac1493ae',1,'dftfe::utils::div(double a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a5805153eea93d364381bb618daed0675',1,'dftfe::utils::div(cuDoubleComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#afff417d04e7f7dc68b6a663e270f6d78',1,'dftfe::utils::div(cuFloatComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a8517d2be1bf5a5ed00e292cec4bfc038',1,'dftfe::utils::div(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#adee51576c4cec1272ee43678ccda2637',1,'dftfe::utils::div(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a5e6b0c385de12d535e094888f26c3b39',1,'dftfe::utils::div(float a, float b)'],['../namespacedftfe_1_1utils.html#a2279979c305e7d21536f97cdaba40025',1,'dftfe::utils::div(double a, double b)'],['../namespacedftfe_1_1utils.html#aaaa3834250738a4e827f814afe9d1ef6',1,'dftfe::utils::div(int a, int b)'],['../namespacedftfe_1_1utils.html#afbe3ab98871188f2072f0c8ae8ce0ea5',1,'dftfe::utils::div(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#a5e7b3752fb30f9f76173179dd8f50eaf',1,'dftfe::utils::div(unsigned int a, unsigned int b)']]], + ['dot_27',['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..f3cde9b9d --- /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_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a08b88c2ed3a84d181433e05e878dd673',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['extracttocellnodaldatakernel_19',['extractToCellNodalDataKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a7a63e5cc8e7a574997726282a9806674',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 000000000..739eb5987 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['febasisoperationsbase_0',['FEBasisOperationsBase',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#acafbadb0779d419c49b60948cef0306c',1,'dftfe::basis::FEBasisOperationsBase']]], + ['fieldgradl2norm_1',['fieldGradl2Norm',['../classdftfe_1_1dft_class.html#a4cc2a43e2a75931788260f57a5ba0ac2',1,'dftfe::dftClass']]], + ['fillglobalarrayfromcellwavefunctionmatrix_2',['fillglobalarrayfromcellwavefunctionmatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a1cde123e149b9e0356f67847a7f70c6f',1,'dftfe::kohnShamDFTOperatorClass::fillGlobalArrayFromCellWaveFunctionMatrix()'],['../classdftfe_1_1operator_d_f_t_class.html#a78e45707e96eabfb403dbecdec140dca',1,'dftfe::operatorDFTClass::fillGlobalArrayFromCellWaveFunctionMatrix()']]], + ['fillparalleloverlapmatrix_3',['fillParallelOverlapMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a7374662bbb8cb4f1f06934af68f1b9d8',1,'dftfe::linearAlgebraOperations::internal']]], + ['fillparalleloverlapmatrixmixedprec_4',['fillParallelOverlapMatrixMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a88f2d97c179cd7082c44efd4bfc8a7db',1,'dftfe::linearAlgebraOperations::internal']]], + ['finalizeincrementfield_5',['finalizeIncrementField',['../classdftfe_1_1mesh_movement_class.html#a601dbcee450a5780fc95fd0aa1b858c5',1,'dftfe::meshMovementClass']]], + ['finalizekohnshamdftoperator_6',['finalizeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#ab8cfd3898b70043985170cb5ba062cf2',1,'dftfe::dftClass']]], + ['find_5fend_5felement_7',['find_end_element',['../namespacedftfe_1_1pseudo_utils.html#aea95a855478d7602f39d823a6200bc2c',1,'dftfe::pseudoUtils']]], + ['find_5fstart_5felement_8',['find_start_element',['../namespacedftfe_1_1pseudo_utils.html#accdeff53b8867a0d028731353fbf00a8',1,'dftfe::pseudoUtils']]], + ['findclosestverticestodestinationpoints_9',['findClosestVerticesToDestinationPoints',['../classdftfe_1_1mesh_movement_class.html#a2e907489e90ae799d57c97b278da1207',1,'dftfe::meshMovementClass']]], + ['findmep_10',['findMEP',['../classdftfe_1_1nudged_elastic_band_class.html#a4a5bdb8cf2cfd7bed8705436f020f57d',1,'dftfe::nudgedElasticBandClass']]], + ['finish_11',['finish',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a8024f9fd7a865d33a1fed31e10555a84',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['fnlgammaatomselementalcontribution_12',['FnlGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a3995256051b927ff40895cec433f5a69',1,'dftfe::forceClass']]], + ['fnlgammaxelementalcontribution_13',['FnlGammaxElementalContribution',['../classdftfe_1_1force_class.html#a1f23c2456447d464d1eb74a477675e8f',1,'dftfe::forceClass']]], + ['fnonlinearcorecorrectiongammaatomselementalcontribution_14',['fnonlinearcorecorrectiongammaatomselementalcontribution',['../classdftfe_1_1force_class.html#a4024e05554fa872c5c7ff7ecc3721525',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#aa18d633bf73f4c289e29646ac504975b',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_15',['FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized',['../classdftfe_1_1force_class.html#a38044c3143fa48334ac90a951b4197b2',1,'dftfe::forceClass']]], + ['forceclass_16',['forceClass',['../classdftfe_1_1force_class.html#ab4112f24ebec1eaf0f9dd401589ae3c8',1,'dftfe::forceClass']]], + ['fphitotsmearedchargesgammaatomselementalcontribution_17',['FPhiTotSmearedChargesGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a516faea18c4628f4e5a186c90adfa1d0',1,'dftfe::forceClass']]], + ['fpsplocalgammaatomselementalcontribution_18',['FPSPLocalGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a22ced4b50a33ce13a7242be6fa51b34b',1,'dftfe::forceClass']]], + ['fshadowlocalgammaatomselementalcontributionelectronic_19',['FShadowLocalGammaAtomsElementalContributionElectronic',['../classdftfe_1_1force_class.html#a804fc0e9245a7b4e8d447fcb2b96e065',1,'dftfe::forceClass']]], + ['fshadowlocalgammaatomselementalcontributionelectrostatic_20',['FShadowLocalGammaAtomsElementalContributionElectrostatic',['../classdftfe_1_1force_class.html#a0ab61f6404c3407a9fcd5d52ebd1ed7a',1,'dftfe::forceClass']]], + ['fvselfsmearedchargesgammaatomselementalcontribution_21',['FVselfSmearedChargesGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#aef9136617fe5901d3fee1d3923fa8e69',1,'dftfe::forceClass']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 000000000..49ea0eb90 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,161 @@ +var searchData= +[ + ['gatherlocallyownedentriessendbuffertotargetprocs_0',['gatherLocallyOwnedEntriesSendBufferToTargetProcs',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#a747b56d0850c53f761282adc38b5e0ec',1,'dftfe::utils::MPICommunicatorP2PKernels']]], + ['generateautomaticmeshapriori_1',['generateAutomaticMeshApriori',['../classdftfe_1_1triangulation_manager.html#ab10d03406c7d1de772e58368f78d05ee',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#ab700c85595ff0cd706db6f025c5f89dd',1,'dftfe::dftClass']]], + ['generatemesh_5',['generateMesh',['../classdftfe_1_1triangulation_manager.html#aac5c20678a005e6df0b1a4b7f353ed1b',1,'dftfe::triangulationManager']]], + ['generatempgrid_6',['generateMPGrid',['../classdftfe_1_1dft_class.html#ad3ecabbf8ce608a0fafb00c6d7f8348a',1,'dftfe::dftClass']]], + ['generateresetmeshes_7',['generateResetMeshes',['../classdftfe_1_1triangulation_manager.html#a99c3bc45a3cb92a750d16787b4c3e2e1',1,'dftfe::triangulationManager']]], + ['generateserialunmovedandparallelmovedunmovedmesh_8',['generateSerialUnmovedAndParallelMovedUnmovedMesh',['../classdftfe_1_1triangulation_manager.html#a9bbfcf8587f59c0760816d21238f96cb',1,'dftfe::triangulationManager']]], + ['geometryoptimizationclass_9',['geometryOptimizationClass',['../classdftfe_1_1geometry_optimization_class.html#ad4edfab54637282ebb9f426114c06037',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_5fattr_12',['get_attr',['../namespacedftfe_1_1pseudo_utils.html#ac7c65518267a50c2ccdf7ee683681ab5',1,'dftfe::pseudoUtils']]], + ['get_5finterpool_5fcomm_13',['get_interpool_comm',['../classdftfe_1_1dft_utils_1_1_pool.html#a3c9a67abe1e1a8310cad03f46b4af4bd',1,'dftfe::dftUtils::Pool']]], + ['get_5fintrapool_5fcomm_14',['get_intrapool_comm',['../classdftfe_1_1dft_utils_1_1_pool.html#a16e43d70ad01abc5d84180e2d404da38',1,'dftfe::dftUtils::Pool']]], + ['get_5fprocess_5fgrid_5fcolumns_15',['get_process_grid_columns',['../classdftfe_1_1_process_grid.html#ac0f46f07c2de3b6564b8793d629e1bf3',1,'dftfe::ProcessGrid']]], + ['get_5fprocess_5fgrid_5frows_16',['get_process_grid_rows',['../classdftfe_1_1_process_grid.html#a070f58a1dd24772ba335fd6e0bf7116e',1,'dftfe::ProcessGrid']]], + ['get_5fproperty_17',['get_property',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6213590579de7473604c7b7fc7fb1dcc',1,'dftfe::ScaLAPACKMatrix']]], + ['get_5fstate_18',['get_state',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1b6277fcc0a927bb6bed309eaaef18cc',1,'dftfe::ScaLAPACKMatrix']]], + ['get_5fthis_5fprocess_5fcolumn_19',['get_this_process_column',['../classdftfe_1_1_process_grid.html#a7e3e0a60c5cdb5af1f705fc5574ef707',1,'dftfe::ProcessGrid']]], + ['get_5fthis_5fprocess_5frow_20',['get_this_process_row',['../classdftfe_1_1_process_grid.html#a0a402b73111bcf3639467bf70514143a',1,'dftfe::ProcessGrid']]], + ['getatomicnumbers_21',['getAtomicNumbers',['../classdftfe_1_1dftfe_wrapper.html#a4bb128c03ef09e1b4bd1a3dca2e9b8b2',1,'dftfe::dftfeWrapper']]], + ['getatomidbinidmaplocalallimages_22',['getAtomIdBinIdMapLocalAllImages',['../classdftfe_1_1vself_bins_manager.html#adb96700444c2a24e822808bb890ff509',1,'dftfe::vselfBinsManager']]], + ['getatomidsbins_23',['getAtomIdsBins',['../classdftfe_1_1vself_bins_manager.html#ad7dc16b81e6779100b6231e6cc918bec',1,'dftfe::vselfBinsManager']]], + ['getatomimageidsbins_24',['getAtomImageIdsBins',['../classdftfe_1_1vself_bins_manager.html#a84a105106f0c8bde2eff23107cc731b4',1,'dftfe::vselfBinsManager']]], + ['getatomlocationscart_25',['getatomlocationscart',['../classdftfe_1_1dft_class.html#a787449c903b11db13506f5f282bbd750',1,'dftfe::dftClass::getAtomLocationsCart()'],['../classdftfe_1_1dft_base.html#a7d88b379db559eaeb4bf4a91e66567c5',1,'dftfe::dftBase::getAtomLocationsCart()']]], + ['getatomlocationsfrac_26',['getatomlocationsfrac',['../classdftfe_1_1dft_class.html#a35b9dde7af4c2522ce1ede6c74766a13',1,'dftfe::dftClass::getAtomLocationsFrac()'],['../classdftfe_1_1dft_base.html#a4263546ddfcd61bbd9a0b02d2e731c57',1,'dftfe::dftBase::getAtomLocationsFrac()']]], + ['getatompositionscart_27',['getAtomPositionsCart',['../classdftfe_1_1dftfe_wrapper.html#ad8882d3dc76b1b34893500c44a7d9a70',1,'dftfe::dftfeWrapper']]], + ['getatompositionsfrac_28',['getAtomPositionsFrac',['../classdftfe_1_1dftfe_wrapper.html#a043df110bc86ac36e0a6dd6e3eb65f83',1,'dftfe::dftfeWrapper']]], + ['getatomsforces_29',['getAtomsForces',['../classdftfe_1_1force_class.html#a58c11a1ce52cfd0216419d9b7eeaa685',1,'dftfe::forceClass']]], + ['getatomtypes_30',['getatomtypes',['../classdftfe_1_1dft_class.html#aa6cd903f7e7dcc9e16f4ffaf8650ec3e',1,'dftfe::dftClass::getAtomTypes()'],['../classdftfe_1_1dft_base.html#a901acff26b3f2059540ae6a9a50331f7',1,'dftfe::dftBase::getAtomTypes()']]], + ['getblocksize_31',['getBlockSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#aa361225f97c01df823a0916696501878',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['getboundaryflagsbins_32',['getBoundaryFlagsBins',['../classdftfe_1_1vself_bins_manager.html#a4887d6b82123f485217d83d36adea58c',1,'dftfe::vselfBinsManager']]], + ['getboundaryflagsbinsonlychargeid_33',['getBoundaryFlagsBinsOnlyChargeId',['../classdftfe_1_1vself_bins_manager.html#a440a6efe552e14880fe777e052643f9d',1,'dftfe::vselfBinsManager']]], + ['getcell_34',['getcell',['../classdftfe_1_1dft_class.html#a8dc8f6c7ec6f8ab210f97491536291eb',1,'dftfe::dftClass::getCell()'],['../classdftfe_1_1dft_base.html#ae8894911ab9825182f4c062b5ad619e0',1,'dftfe::dftBase::getCell()'],['../classdftfe_1_1dftfe_wrapper.html#ad3f6b5d56090f30005da6b13951f1fa1',1,'dftfe::dftfeWrapper::getCell()']]], + ['getcellstress_35',['getcellstress',['../classdftfe_1_1dft_class.html#a191e8f54983e6dfde4e1beb957ad1e3b',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_36',['getcellvolume',['../classdftfe_1_1dft_class.html#a68ea5eab1b3308390603c27ac49fa1fe',1,'dftfe::dftClass::getCellVolume()'],['../classdftfe_1_1dft_base.html#a9be899150f9aef815cc7870d21d7dd0d',1,'dftfe::dftBase::getCellVolume()']]], + ['getcellwavefunctionmatrix_37',['getCellWaveFunctionMatrix',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1d761c22f7dfba6c80b81c211ab1afe8',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getchararray_38',['getchararray',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a1e2a2262c38e84d7315a8029e0d30bd8',1,'dftfe::dftUtils::QuadDataCompositeWrite::getCharArray()'],['../classdftfe_1_1dft_utils_1_1_composite_data.html#a1702165bc6bd0098bab2034e88cba916',1,'dftfe::dftUtils::CompositeData::getCharArray()']]], + ['getclosestatomidsbins_39',['getClosestAtomIdsBins',['../classdftfe_1_1vself_bins_manager.html#abd6af334d47707a3b9b1c665b29615e9',1,'dftfe::vselfBinsManager']]], + ['getclosestatomlocationsbins_40',['getClosestAtomLocationsBins',['../classdftfe_1_1vself_bins_manager.html#ae5c142f1d7129aaf3aeca200109d06c4',1,'dftfe::vselfBinsManager']]], + ['getcompositegeneratorval_41',['getCompositeGeneratorVal',['../namespacedftfe_1_1dft_utils.html#a41080f57d452717c89539d41150c991b',1,'dftfe::dftUtils']]], + ['getcosineangle_42',['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)']]], + ['getdebuglevel_43',['getDebugLevel',['../classdftfe_1_1non_linear_solver.html#ad03efe1123327c6f3fb0e6751bc389a1',1,'dftfe::nonLinearSolver']]], + ['getdensitybasedfamilytype_44',['getdensitybasedfamilytype',['../classdftfe_1_1exc_density_base_class.html#a9b5ca7a22a8dde0649ef0bceae56875c',1,'dftfe::excDensityBaseClass::getDensityBasedFamilyType()'],['../classdftfe_1_1exc_manager.html#a184b92ea85cc12067e65004de966c368',1,'dftfe::excManager::getDensityBasedFamilyType()']]], + ['getdeviceblashandle_45',['getDeviceBlasHandle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a8c3f46b403ee49d69f51ccffc959a0b2',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getdftfebaseptr_46',['getDftfeBasePtr',['../classdftfe_1_1dftfe_wrapper.html#a540e44c8269a2cd921817030c8e05c7f',1,'dftfe::dftfeWrapper']]], + ['getdftfreeenergy_47',['getDFTFreeEnergy',['../classdftfe_1_1dftfe_wrapper.html#ab963656ed167b1b3f2b2cfe934108beb',1,'dftfe::dftfeWrapper']]], + ['geteelectroeshelbytensor_48',['getEElectroEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#aa5eed0a1e4289ecfd22f664d3cd2ce95',1,'dftfe::eshelbyTensor']]], + ['getelectronicentropicenergy_49',['getElectronicEntropicEnergy',['../classdftfe_1_1dftfe_wrapper.html#ae7c9171fef582de5f07cb28fe58e5740',1,'dftfe::dftfeWrapper']]], + ['getelectrostaticsmeshdisp_50',['getElectrostaticsMeshDisp',['../classdftfe_1_1triangulation_manager.html#a4240a41aade7700f09774fc8536e88f3',1,'dftfe::triangulationManager']]], + ['getelectrostaticsmeshforce_51',['getElectrostaticsMeshForce',['../classdftfe_1_1triangulation_manager.html#a77de74393d39172d30e5c2c808d4be8a',1,'dftfe::triangulationManager']]], + ['getelectrostaticsmeshrho_52',['getElectrostaticsMeshRho',['../classdftfe_1_1triangulation_manager.html#a6885a129f2df782ccfa39261c25a1686',1,'dftfe::triangulationManager']]], + ['getelocpspeshelbytensor_53',['getELocPspEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#af556efee5e4f8140193f973cb6f47eff',1,'dftfe::eshelbyTensor']]], + ['getelocxceshelbytensor_54',['getelocxceshelbytensor',['../namespacedftfe_1_1eshelby_tensor_s_p.html#aca6760ff37ac8ce369016a1d4fed25b4',1,'dftfe::eshelbyTensorSP::getELocXcEshelbyTensor()'],['../namespacedftfe_1_1eshelby_tensor.html#af5829f7396d35efb69917e608caedf5d',1,'dftfe::eshelbyTensor::getELocXcEshelbyTensor()']]], + ['getelpaautotunehandle_55',['getElpaAutoTuneHandle',['../classdftfe_1_1elpa_scala_manager.html#a4f33402d6657c3fafce8ca660b0f63f5',1,'dftfe::elpaScalaManager']]], + ['getelpahandle_56',['getElpaHandle',['../classdftfe_1_1elpa_scala_manager.html#abfb7e48e8d49f605b12a05ad961da8f5',1,'dftfe::elpaScalaManager']]], + ['getelpahandlepartialeigenvec_57',['getElpaHandlePartialEigenVec',['../classdftfe_1_1elpa_scala_manager.html#aa2100b8b390adb1a69ad77cd483767f3',1,'dftfe::elpaScalaManager']]], + ['getenergycorrection_58',['getEnergyCorrection',['../classdftfe_1_1dispersion_correction.html#a27f0e12a156fdcee6ed5ae425bb9b9e2',1,'dftfe::dispersionCorrection']]], + ['getentropicenergy_59',['getentropicenergy',['../classdftfe_1_1dft_base.html#a9ac9d5a46e02de6f0ad10b2e430d563a',1,'dftfe::dftBase::getEntropicEnergy()'],['../classdftfe_1_1dft_class.html#a3071396a171930cd1b1d1ed762018437',1,'dftfe::dftClass::getEntropicEnergy()']]], + ['getexcdensityobj_60',['getexcdensityobj',['../classdftfe_1_1exc_manager.html#a800046c51d5e1c7e8dd5129cfc55d918',1,'dftfe::excManager::getExcDensityObj() const'],['../classdftfe_1_1exc_manager.html#a5816a49dfd654776d02fd6f086d7e92f',1,'dftfe::excManager::getExcDensityObj()']]], + ['getexcwavefunctionobj_61',['getexcwavefunctionobj',['../classdftfe_1_1exc_manager.html#a1c68b33e1927e8aaa7a75c3240f25298',1,'dftfe::excManager::getExcWavefunctionObj() const'],['../classdftfe_1_1exc_manager.html#aa285dc0dc1c88ee87d037827f4754836',1,'dftfe::excManager::getExcWavefunctionObj()']]], + ['getflattenedarraycelllocalprocindexidmap_62',['getflattenedarraycelllocalprocindexidmap',['../classdftfe_1_1operator_d_f_t_class.html#a9622bc9fd3ed84702b63c0c550974b20',1,'dftfe::operatorDFTClass::getFlattenedArrayCellLocalProcIndexIdMap()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ae27783b70930faf01f8020fa76b2728c',1,'dftfe::kohnShamDFTOperatorDeviceClass::getFlattenedArrayCellLocalProcIndexIdMap()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae8d40c12ccba48c587166f256a68db0f',1,'dftfe::kohnShamDFTOperatorClass::getFlattenedArrayCellLocalProcIndexIdMap()']]], + ['getfnonlinearcorecorrection_63',['getfnonlinearcorecorrection',['../namespacedftfe_1_1eshelby_tensor_s_p.html#af4ce2768abbdf57cad862817e9da5c98',1,'dftfe::eshelbyTensorSP::getFNonlinearCoreCorrection()'],['../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.html#a2bd9402ed74fe001f8c3bb6b7b9db768',1,'dftfe::eshelbyTensor::getFNonlinearCoreCorrection(const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore)']]], + ['getforcecorrection_64',['getForceCorrection',['../classdftfe_1_1dispersion_correction.html#a3f197f9d375f671a056108ef0f02fac7',1,'dftfe::dispersionCorrection']]], + ['getforceonatoms_65',['getforceonatoms',['../classdftfe_1_1dft_base.html#ab4c604becc53153486be44ef1eb17c24',1,'dftfe::dftBase::getForceonAtoms()'],['../classdftfe_1_1dft_class.html#a8e40961860e6a3527ac861faedc18758',1,'dftfe::dftClass::getForceonAtoms()']]], + ['getforcesatoms_66',['getForcesAtoms',['../classdftfe_1_1dftfe_wrapper.html#aba23244f85c7a6cd6371a473729e041b',1,'dftfe::dftfeWrapper']]], + ['getfpsplocal_67',['getFPSPLocal',['../namespacedftfe_1_1eshelby_tensor.html#acb8868b38c81bb95905042fcc488a132',1,'dftfe::eshelbyTensor']]], + ['getfractionalcoordinates_68',['getFractionalCoordinates',['../namespacedftfe_1_1dft_utils.html#aeac281264238a68abaf9dd7be44a6d3e',1,'dftfe::dftUtils']]], + ['getfreeenergy_69',['getfreeenergy',['../classdftfe_1_1dft_base.html#ac80b75566ece1b6ef1f1b3dc05407d4f',1,'dftfe::dftBase::getFreeEnergy()'],['../classdftfe_1_1dft_class.html#a1f16e5b7b7251733b05aa05263ec7ff2',1,'dftfe::dftClass::getFreeEnergy()']]], + ['getghostindices_70',['getGhostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#afc0d9e1d3a74ac5b4e47606c350d01f7',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostlocalindices_71',['getGhostLocalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#abcd7af0f089f1eb739da32f4f2550a2d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostlocalindicesranges_72',['getGhostLocalIndicesRanges',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a088145e75e35c68f77486d144f4e0d77',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostprocids_73',['getGhostProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4332a5faecf748b236d583c56feb5e54',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getinteriorsurfacenodesmapfromglobalarray_74',['getinteriorsurfacenodesmapfromglobalarray',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a8660dd74a620b122a6a1fd341a9cccb6',1,'dftfe::kohnShamDFTOperatorClass::getInteriorSurfaceNodesMapFromGlobalArray()'],['../classdftfe_1_1operator_d_f_t_class.html#a0b4293836761c040aee7bfad28637564',1,'dftfe::operatorDFTClass::getInteriorSurfaceNodesMapFromGlobalArray()']]], + ['getinternalenergy_75',['getinternalenergy',['../classdftfe_1_1dft_class.html#adb5fb938cd6e08378745ab086388f483',1,'dftfe::dftClass::getInternalEnergy()'],['../classdftfe_1_1dft_base.html#a01e8b55e51c7a8990185951e6341fa9d',1,'dftfe::dftBase::getInternalEnergy()']]], + ['getinversejacobiansnlp_76',['getinversejacobiansnlp',['../classdftfe_1_1operator_d_f_t_class.html#a63f6bb8f6c56ca228bb63e2bc4d65f69',1,'dftfe::operatorDFTClass::getInverseJacobiansNLP()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a7fa16e2f305aca908230d7a11d81d3eb',1,'dftfe::kohnShamDFTOperatorDeviceClass::getInverseJacobiansNLP()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a6491498d86e7817f9160c3f49691d3c9',1,'dftfe::kohnShamDFTOperatorClass::getInverseJacobiansNLP()']]], + ['getinvsqrtmassvec_77',['getInvSqrtMassVec',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a01435a76bdfb5ffb723e971d573776f5',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getinvsqrtmassvector_78',['getInvSqrtMassVector',['../classdftfe_1_1operator_d_f_t_class.html#abcbd0f9376869f32c32f753ad7dec466',1,'dftfe::operatorDFTClass']]], + ['getlocaldofindicesimag_79',['getLocalDofIndicesImag',['../classdftfe_1_1dft_class.html#af8e701e6f38ac19dd2ce342e0f08c05d',1,'dftfe::dftClass']]], + ['getlocaldofindicesreal_80',['getLocalDofIndicesReal',['../classdftfe_1_1dft_class.html#ad64c1b0026160eb27527d405f3f475c9',1,'dftfe::dftClass']]], + ['getlocallyownedprocboundarynodesvectordevice_81',['getLocallyOwnedProcBoundaryNodesVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a4f37d98b0f33dc841fdd1ff80e835220',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getlocallyownedrange_82',['getLocallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4352ee360a8f7be1ea03d0e4cbf629e8',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getlocalprocdofindicesimag_83',['getLocalProcDofIndicesImag',['../classdftfe_1_1dft_class.html#ab6ca13be37eb4c41d1f472d4bd6f04f5',1,'dftfe::dftClass']]], + ['getlocalprocdofindicesreal_84',['getLocalProcDofIndicesReal',['../classdftfe_1_1dft_class.html#a4e284b4ec185c41a036743b9da2820a5',1,'dftfe::dftClass']]], + ['getmatrixfreedata_85',['getmatrixfreedata',['../classdftfe_1_1operator_d_f_t_class.html#af7ff9091b007fb85ddb36033804f5e8e',1,'dftfe::operatorDFTClass::getMatrixFreeData()'],['../classdftfe_1_1dft_class.html#af012047e6e7354f1ba10c4456706341d',1,'dftfe::dftClass::getMatrixFreeData()']]], + ['getmaximumnumberiterations_86',['getMaximumNumberIterations',['../classdftfe_1_1non_linear_solver.html#a6bd53949604d87d3ebd24802155a0289',1,'dftfe::nonLinearSolver']]], + ['getmpicommunicator_87',['getmpicommunicator',['../classdftfe_1_1elpa_scala_manager.html#a9fc7ce986a761710aebd003aaf0e3715',1,'dftfe::elpaScalaManager::getMPICommunicator()'],['../classdftfe_1_1operator_d_f_t_class.html#af881abf0015db034848f7cadc724ddd3',1,'dftfe::operatorDFTClass::getMPICommunicator()'],['../classdftfe_1_1nudged_elastic_band_class.html#aa1a4ac64243daaead4171b23c874da6e',1,'dftfe::nudgedElasticBandClass::getMPICommunicator()'],['../classdftfe_1_1nonlinear_solver_problem.html#aa7975ffa832002cd2ae29185590775be',1,'dftfe::nonlinearSolverProblem::getMPICommunicator()'],['../classdftfe_1_1geo_opt_ion.html#a5f528a5c71d21eec9dcdf6466d42003e',1,'dftfe::geoOptIon::getMPICommunicator()'],['../classdftfe_1_1geo_opt_cell.html#aa92ad2dd7b55f1159002473d9419f8f1',1,'dftfe::geoOptCell::getMPICommunicator()']]], + ['getmpidatatype_88',['getmpidatatype',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a3b4dfe355e570925189815808c225a16',1,'dftfe::dftUtils::QuadDataCompositeWrite::getMPIDataType()'],['../classdftfe_1_1dft_utils_1_1_composite_data.html#ab637524ec4fa72ee7fd108069ac48f71',1,'dftfe::dftUtils::CompositeData::getMPIDataType()']]], + ['getmpipatternp2p_89',['getmpipatternp2p',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a33ce66548bbeb927bea3cfd1212d0a16',1,'dftfe::linearAlgebra::MultiVector::getMPIPatternP2P()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a14c223b2f88ed4a122fb9da5f762812a',1,'dftfe::utils::mpi::MPICommunicatorP2P::getMPIPatternP2P()']]], + ['getmultivector_90',['getMultiVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a837f713834bed44e4a449faa721600b8',1,'dftfe::basis::FEBasisOperationsBase']]], + ['getnumbercharspercompositedata_91',['getnumbercharspercompositedata',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#aedc374ba0b3d26525dd56aa28a99cacc',1,'dftfe::dftUtils::QuadDataCompositeWrite::getNumberCharsPerCompositeData()'],['../classdftfe_1_1dft_utils_1_1_composite_data.html#a9a498eb8ee84ea740302d8953d1103b0',1,'dftfe::dftUtils::CompositeData::getNumberCharsPerCompositeData()']]], + ['getnumberunknowns_92',['getnumberunknowns',['../classdftfe_1_1nudged_elastic_band_class.html#a4d3a72449fd22ec8186fa9cafdcdba78',1,'dftfe::nudgedElasticBandClass::getNumberUnknowns()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab1d9fe730067d7e7f920b26daf06f117',1,'dftfe::nonlinearSolverProblem::getNumberUnknowns()'],['../classdftfe_1_1geo_opt_ion.html#a83543f9a545ab663f5b080b4c2e7fb74',1,'dftfe::geoOptIon::getNumberUnknowns()'],['../classdftfe_1_1geo_opt_cell.html#ab7a19d891948b672f1549898ba1ab143',1,'dftfe::geoOptCell::getNumberUnknowns()']]], + ['getnumghostindicesinproc_93',['getNumGhostIndicesInProc',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a08afcd2b84f7250d8c9601b8187828ed',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumghostindicesinprocs_94',['getNumGhostIndicesInProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a98c66a9f2536eef72d7fdbfb08a1f3f2',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumownedindicesfortargetproc_95',['getNumOwnedIndicesForTargetProc',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a110721b1e6aea0e08dca76d8d959f0ae',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumownedindicesfortargetprocs_96',['getNumOwnedIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a6ee60981b6d41cd29394724e4c582af7',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getoverloadedconstraintmatrix_97',['getOverloadedConstraintMatrix',['../classdftfe_1_1operator_d_f_t_class.html#a72413851e9c4577377d3e75b78ff9983',1,'dftfe::operatorDFTClass']]], + ['getownedlocalindices_98',['getOwnedLocalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a52e89faee260fddee14fd8c6412d1056',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getownedlocalindicesfortargetprocs_99',['getOwnedLocalIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a300070950255d96542870b84dc94f194',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getparallelchebyblockvector2device_100',['getParallelChebyBlockVector2Device',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a46a0488d424246b37605ca7c26519354',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getparallelchebyblockvectordevice_101',['getParallelChebyBlockVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aa98bc87e4b7dbdfcb64eb0d1a65e13ce',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getparallelmeshmoved_102',['getParallelMeshMoved',['../classdftfe_1_1triangulation_manager.html#a0e8b0eff1f03b6da4e2bd43fdf97744f',1,'dftfe::triangulationManager']]], + ['getparallelmeshunmoved_103',['getParallelMeshUnmoved',['../classdftfe_1_1triangulation_manager.html#a5390458da1af98472f7aaaf579fa25e8',1,'dftfe::triangulationManager']]], + ['getparallelprojectorkettimesblockvector_104',['getparallelprojectorkettimesblockvector',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a27a024fb4444e4ee1f2e633479c78acc',1,'dftfe::kohnShamDFTOperatorClass::getParallelProjectorKetTimesBlockVector()'],['../classdftfe_1_1operator_d_f_t_class.html#a5ab626524eca98f94e948934b3188fa1',1,'dftfe::operatorDFTClass::getParallelProjectorKetTimesBlockVector()']]], + ['getparallelprojectorkettimesblockvectordevice_105',['getParallelProjectorKetTimesBlockVectorDevice',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a4aa14d5160cc27f5e8223d924ecdf7d6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getparallelvecsinglecomponent_106',['getParallelVecSingleComponent',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9681a37096cf03ed992a4e1a883c999b',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getparametersobject_107',['getparametersobject',['../classdftfe_1_1dft_base.html#a0c4905daf2f1014991196d1711a3c3d2',1,'dftfe::dftBase::getParametersObject()'],['../classdftfe_1_1dft_class.html#aff0e90b9fee358dff29c7413cec20089',1,'dftfe::dftClass::getParametersObject()']]], + ['getpartialoccupancy_108',['getPartialOccupancy',['../namespacedftfe_1_1dft_utils.html#a3b1d6099a85fe1168b8f7fd56b1a646d',1,'dftfe::dftUtils']]], + ['getpartialoccupancyder_109',['getPartialOccupancyDer',['../namespacedftfe_1_1dft_utils.html#aca959162fdbd949b5a6c8a24b5ff452f',1,'dftfe::dftUtils']]], + ['getpbc_110',['getPBC',['../classdftfe_1_1dftfe_wrapper.html#a57374f5f734264a67d2f3c9241f715ec',1,'dftfe::dftfeWrapper']]], + ['getperturbedvselffieldbins_111',['getPerturbedVselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#aa5d89fc0d05a58d01c4ec6957e4ede40',1,'dftfe::vselfBinsManager']]], + ['getphiexteshelbytensor_112',['getPhiExtEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#ae4943ba115afd83f3e7a0025780a2b3b',1,'dftfe::eshelbyTensor']]], + ['getposition_113',['getposition',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a34d8be4f57a3e57a161eaee9e78c8077',1,'dftfe::utils::OptimizedIndexSet::getPosition(const OptimizedIndexSet< T > &rhs) const'],['../classdftfe_1_1utils_1_1_optimized_index_set.html#accc081bd8fccbdfd2158dc0be623571e',1,'dftfe::utils::OptimizedIndexSet::getPosition(const T &index, size_type &pos, bool &found) const']]], + ['getprocessgriddftfescalawrapper_114',['getProcessGridDftfeScalaWrapper',['../classdftfe_1_1elpa_scala_manager.html#a03ef49385d301a5ca4080137f318f38c',1,'dftfe::elpaScalaManager']]], + ['getprojectorkettimesvectorsingle_115',['getProjectorKetTimesVectorSingle',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6f96fdacda4fd2b24fe77657fc75e982',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getradialfunctionval_116',['getRadialFunctionVal',['../namespacedftfe_1_1pseudo_utils.html#a92c8700497662dd7074f4ada5f245a3a',1,'dftfe::pseudoUtils']]], + ['getrequestingrankids_117',['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_118',['getrhonodalout',['../classdftfe_1_1dft_class.html#ad537f0ae13a30350e70c831233229684',1,'dftfe::dftClass::getRhoNodalOut()'],['../classdftfe_1_1dft_base.html#a4b49c03e2c305ce7319a1f2dda1483df',1,'dftfe::dftBase::getRhoNodalOut()']]], + ['getrhonodalsplitout_119',['getrhonodalsplitout',['../classdftfe_1_1dft_class.html#a4338b168e40fc4ec5fb346a2fdb7704a',1,'dftfe::dftClass::getRhoNodalSplitOut()'],['../classdftfe_1_1dft_base.html#a28c0349208b040d8e5401e9e70f4e653',1,'dftfe::dftBase::getRhoNodalSplitOut()']]], + ['getscalapackblocksize_120',['getScalapackBlockSize',['../classdftfe_1_1elpa_scala_manager.html#a8f5ddee28fdf6d685d3789bd54f51da2',1,'dftfe::elpaScalaManager']]], + ['getserialmeshelectrostatics_121',['getSerialMeshElectrostatics',['../classdftfe_1_1triangulation_manager.html#aaf857f746830b6a43a3184e03d56238f',1,'dftfe::triangulationManager']]], + ['getserialmeshunmoved_122',['getSerialMeshUnmoved',['../classdftfe_1_1triangulation_manager.html#ad9084fa7531268e66d8b14735e1dbd73',1,'dftfe::triangulationManager']]], + ['getshadowpotentialforcerhodiffxceshelbytensor_123',['getShadowPotentialForceRhoDiffXcEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#a0b4ba3f6ac49888b72b58e631f2fe9cb',1,'dftfe::eshelbyTensor']]], + ['getshapefunctiongradientintegral_124',['getShapeFunctionGradientIntegral',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a9d93b4dcfb278650d643fa6bbb7736a6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getshapefunctiongradientintegralelectro_125',['getShapeFunctionGradientIntegralElectro',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ad5f0fab6e146df07ef22c7ab31ba0d5f',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getshapefunctiongradientvaluesnlptransposed_126',['getshapefunctiongradientvaluesnlptransposed',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a1b11dab18fb77af4543fc94715addeef',1,'dftfe::kohnShamDFTOperatorDeviceClass::getShapeFunctionGradientValuesNLPTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ae1fc2c12c8bc94d1f7b30ea15b0e9f33',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionGradientValuesNLPTransposed()'],['../classdftfe_1_1operator_d_f_t_class.html#a2fb6c674783ec151819bd0ebbea719ab',1,'dftfe::operatorDFTClass::getShapeFunctionGradientValuesNLPTransposed()']]], + ['getshapefunctiongradvaluesdensitygaussquad_127',['getshapefunctiongradvaluesdensitygaussquad',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aa11498552acab58b6ddd4dc87ea70809',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionGradValuesDensityGaussQuad()'],['../classdftfe_1_1operator_d_f_t_class.html#a72d3808f8c21a2ab5174a16941bd2efd',1,'dftfe::operatorDFTClass::getShapeFunctionGradValuesDensityGaussQuad()']]], + ['getshapefunctionvalues_128',['getShapeFunctionValues',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a96feaa3a7f326b82a9e37aa189a3f954',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getshapefunctionvaluesdensitygausslobattoquad_129',['getshapefunctionvaluesdensitygausslobattoquad',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ab50ef5fc3b3f0026d0c19f39bce18cec',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionValuesDensityGaussLobattoQuad()'],['../classdftfe_1_1operator_d_f_t_class.html#aef9e6a15a5acaec6a6c4ae13b8d164ce',1,'dftfe::operatorDFTClass::getShapeFunctionValuesDensityGaussLobattoQuad()']]], + ['getshapefunctionvaluesdensitygaussquad_130',['getshapefunctionvaluesdensitygaussquad',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#ad59e50e6d499bc1c1c6bd581bea77fbf',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionValuesDensityGaussQuad()'],['../classdftfe_1_1operator_d_f_t_class.html#a9fe670a4509d01cb0358494959a10535',1,'dftfe::operatorDFTClass::getShapeFunctionValuesDensityGaussQuad() const =0']]], + ['getshapefunctionvaluesdensitytransposed_131',['getshapefunctionvaluesdensitytransposed',['../classdftfe_1_1operator_d_f_t_class.html#aa2f2331bc5ba133ca2f51f8101203ab7',1,'dftfe::operatorDFTClass::getShapeFunctionValuesDensityTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a88ec6f05d1738e7f958f3ab828cb6b44',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionValuesDensityTransposed()']]], + ['getshapefunctionvaluesnlptransposed_132',['getshapefunctionvaluesnlptransposed',['../classdftfe_1_1operator_d_f_t_class.html#a34c203527ccbbc63245a20fe7d829c42',1,'dftfe::operatorDFTClass::getShapeFunctionValuesNLPTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#aac83a4f4eb50e53121e5fab219cc9f5d',1,'dftfe::kohnShamDFTOperatorDeviceClass::getShapeFunctionValuesNLPTransposed()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a33021fc435ab0783b454f84e4954d08b',1,'dftfe::kohnShamDFTOperatorClass::getShapeFunctionValuesNLPTransposed()']]], + ['getshapefunctionvaluestransposed_133',['getShapeFunctionValuesTransposed',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a28620067a4c7569b787fec555910dfd6',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getsphericalharmonicval_134',['getSphericalHarmonicVal',['../namespacedftfe_1_1pseudo_utils.html#ab994c096d849a2c2ea597c48cd3120ad',1,'dftfe::pseudoUtils']]], + ['getsqrtmassvec_135',['getSqrtMassVec',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a770af3543b6ecc699a05e9621c116c7a',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['getstoredadaptiveballradius_136',['getStoredAdaptiveBallRadius',['../classdftfe_1_1vself_bins_manager.html#a597b20011ff3b55472cd08adbd275a4a',1,'dftfe::vselfBinsManager']]], + ['getstress_137',['getStress',['../classdftfe_1_1force_class.html#af0aa3f0ac898dd377c07f978ad5841f6',1,'dftfe::forceClass']]], + ['getstresscorrection_138',['getStressCorrection',['../classdftfe_1_1dispersion_correction.html#a29557331a7c21cacc72363349568546f',1,'dftfe::dispersionCorrection']]], + ['gettargetprocids_139',['getTargetProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a68fb7688f3dbfa750e5c40ef192a7464',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['gettolerance_140',['getTolerance',['../classdftfe_1_1non_linear_solver.html#a86a71cd616e82b4fc4a010447ae4cb0b',1,'dftfe::nonLinearSolver']]], + ['gettotalchargeforrhosplit_141',['gettotalchargeforrhosplit',['../classdftfe_1_1dft_class.html#aa1ee9f1dfbde478cb2b65a34aa958f67',1,'dftfe::dftClass::getTotalChargeforRhoSplit()'],['../classdftfe_1_1dft_base.html#ac755de640ef6723cdeb031e038b580b9',1,'dftfe::dftBase::getTotalChargeforRhoSplit()']]], + ['getunknowncountflag_142',['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_143',['getValenceElectronNumbers',['../classdftfe_1_1dftfe_wrapper.html#a73025873e24f3c62dc566dee33556d31',1,'dftfe::dftfeWrapper']]], + ['getvselfballeshelbytensor_144',['getvselfballeshelbytensor',['../namespacedftfe_1_1eshelby_tensor.html#a632760011a8dc6401a95e074ad6cddcc',1,'dftfe::eshelbyTensor::getVselfBallEshelbyTensor(const dealii::Tensor< 1, 3, double > &gradVself)'],['../namespacedftfe_1_1eshelby_tensor.html#a398a9349d9d31e7b17b86dbc80d25125',1,'dftfe::eshelbyTensor::getVselfBallEshelbyTensor(const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradVself)']]], + ['getvselffieldbins_145',['getVselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#acfcb9299ef59b63e4b3b350a30923e80',1,'dftfe::vselfBinsManager']]], + ['getvselffieldderrbins_146',['getVselfFieldDerRBins',['../classdftfe_1_1vself_bins_manager.html#a813f7b3e680b81d674c1454cf2d0fca0',1,'dftfe::vselfBinsManager']]], + ['getwavefunctionbasedfamilytype_147',['getwavefunctionbasedfamilytype',['../classdftfe_1_1exc_manager.html#a2c87a6c0f6fc4b892814c422ecdfac4a',1,'dftfe::excManager::getWavefunctionBasedFamilyType()'],['../classdftfe_1_1exc_wavefunction_base_class.html#a83fc31bce9a012e0466c8a282cbe7a1a',1,'dftfe::excWavefunctionBaseClass::getWavefunctionBasedFamilyType()']]], + ['getx_148',['getx',['../classdftfe_1_1poisson_solver_problem.html#a07e8773c4f5c9c0bbf58452fc817611b',1,'dftfe::poissonSolverProblem::getX()'],['../classdftfe_1_1dealii_linear_solver_problem.html#a7814f5c0a0aa3ce01057acd4d29f560c',1,'dftfe::dealiiLinearSolverProblem::getX()'],['../classdftfe_1_1kerker_solver_problem.html#a77a0aafdca2c7726a24288a4821a7acc',1,'dftfe::kerkerSolverProblem::getX()']]], + ['ghostsize_149',['ghostSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aac29fcb8f5ca940da0c86cda2497f43f',1,'dftfe::linearAlgebra::MultiVector']]], + ['global_5fcolumn_150',['global_column',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a11af4d9095e63de77c07fbcf1b34f367',1,'dftfe::ScaLAPACKMatrix']]], + ['global_5frow_151',['global_row',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab49c06fe686f8b2de01a1cec28a3afb2',1,'dftfe::ScaLAPACKMatrix']]], + ['globalhandlesfinalize_152',['globalHandlesFinalize',['../classdftfe_1_1dftfe_wrapper.html#a6edc85d8ba059cb72698758d952444c9',1,'dftfe::dftfeWrapper']]], + ['globalhandlesinitialize_153',['globalHandlesInitialize',['../classdftfe_1_1dftfe_wrapper.html#a2eb91eab3aca3e592ce3fb8e53d01ac0',1,'dftfe::dftfeWrapper']]], + ['globalsize_154',['globalSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a89c298a1b9a03a6728f6fd26f25667d5',1,'dftfe::linearAlgebra::MultiVector']]], + ['globaltolocal_155',['globalToLocal',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a01ee60d4c7ba6011513140d34adc4e4b',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['gradient_156',['gradient',['../classdftfe_1_1nudged_elastic_band_class.html#a70c9164a5d245c869a6c5c337210b9e7',1,'dftfe::nudgedElasticBandClass::gradient()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab4406839bedb92f39ac663738c699bf1',1,'dftfe::nonlinearSolverProblem::gradient()'],['../classdftfe_1_1geo_opt_ion.html#a4432b75f262f587ced47c2ec74289968',1,'dftfe::geoOptIon::gradient()'],['../classdftfe_1_1geo_opt_cell.html#aeb71bf02a24e6b2e20de6bcf591ac0cf',1,'dftfe::geoOptCell::gradient()']]], + ['gramschmidtorthogonalization_157',['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..a315cf960 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,7 @@ +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_1kohn_sham_d_f_t_operator_class.html#ae70bd92b273a1ba50a7aa80839fb5177',1,'dftfe::kohnShamDFTOperatorClass::HX(distributedCPUMultiVec< dataTypes::number > &src, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a4aaff916487a00fe5474e0d00d894451',1,'dftfe::kohnShamDFTOperatorClass::HX(distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberComponents, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a68889e93723a69af26d3e2b546842ea6',1,'dftfe::kohnShamDFTOperatorDeviceClass::HX(distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a05f09bcf0961075c5b07a96ad4da7827',1,'dftfe::kohnShamDFTOperatorDeviceClass::HX(distributedDeviceVec< dataTypes::number > &src, distributedDeviceVec< dataTypes::numberFP32 > &srcFloat, distributedDeviceVec< dataTypes::number > &projectorKetTimesVector, const unsigned int localVectorSize, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedDeviceVec< dataTypes::number > &dst, const bool doUnscalingX=true, const bool singlePrecCommun=false, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)'],['../classdftfe_1_1operator_d_f_t_class.html#a69976c59c41b7815904beb4603fa2487',1,'dftfe::operatorDFTClass::HX(distributedCPUMultiVec< dataTypes::number > &X, const unsigned int numberComponents, const bool scaleFlag, const double scalar, distributedCPUMultiVec< dataTypes::number > &Y, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0'],['../classdftfe_1_1operator_d_f_t_class.html#a40e26e1d155c81d7f2f3a914411ff167',1,'dftfe::operatorDFTClass::HX(distributedCPUMultiVec< dataTypes::number > &src, std::vector< dataTypes::number > &cellSrcWaveFunctionMatrix, const unsigned int numberWaveFunctions, const bool scaleFlag, const double scalar, const double scalarA, const double scalarB, distributedCPUMultiVec< dataTypes::number > &dst, std::vector< dataTypes::number > &cellDstWaveFunctionMatrix)=0']]], + ['hxcheby_3',['HXCheby',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a6e0349c170805e1d01e58e8eac9f7154',1,'dftfe::kohnShamDFTOperatorDeviceClass']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 000000000..1205f5d11 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,62 @@ +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_1dft_class.html#ac7d9a59be360d9894e1814c2202917c5',1,'dftfe::dftClass::init()'],['../classdftfe_1_1kerker_solver_problem.html#a8d0337ed862ba1e78d5f7857463491b0',1,'dftfe::kerkerSolverProblem::init()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a43dcf4d000275fbc4ec08890f2ee1b44',1,'dftfe::kohnShamDFTOperatorClass::init()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a0c5588c520dd62e8fec12b285b5c2c65',1,'dftfe::kohnShamDFTOperatorDeviceClass::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#a80fa7f3f45b09a506263704708b6635f',1,'dftfe::operatorDFTClass::init()'],['../classdftfe_1_1geo_opt_ion.html#ac0981793678f96961d982e3db9580b93',1,'dftfe::geoOptIon::init()'],['../classdftfe_1_1geo_opt_cell.html#aef69c41c505114e8d698b13afd3c1e19',1,'dftfe::geoOptCell::init()'],['../classdftfe_1_1geometry_optimization_class.html#a3bdef8d6aed2085ede33ba4fdd8f046d',1,'dftfe::geometryOptimizationClass::init()'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ad83a04ecb7994053d073e5163c2d0bbf',1,'dftfe::basis::FEBasisOperationsBase::init()'],['../classdftfe_1_1exc_manager.html#afe95bcfcdb880be57fe39cc65c74d4a3',1,'dftfe::excManager::init()'],['../classdftfe_1_1dft_base.html#a958ca745a65c58b46a4adc933494d354',1,'dftfe::dftBase::init()']]], + ['initatomicrho_8',['initAtomicRho',['../classdftfe_1_1dft_class.html#a694cdc03ceaf1320f91521b1db6df0c7',1,'dftfe::dftClass']]], + ['initboundaryconditions_9',['initBoundaryConditions',['../classdftfe_1_1dft_class.html#af86dd0c3470400d2828536ad13057eb9',1,'dftfe::dftClass']]], + ['initcellwavefunctionmatrix_10',['initcellwavefunctionmatrix',['../classdftfe_1_1operator_d_f_t_class.html#a88819dd3cdbf5c5f1375952111c50c36',1,'dftfe::operatorDFTClass::initCellWaveFunctionMatrix()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a9f2ffee058164425fa710bc54d85c22d',1,'dftfe::kohnShamDFTOperatorClass::initCellWaveFunctionMatrix()']]], + ['initcorerho_11',['initCoreRho',['../classdftfe_1_1dft_class.html#a05ceef5928109937df6ba0bb722e2316',1,'dftfe::dftClass']]], + ['initdispersioncorrection_12',['initDispersionCorrection',['../classdftfe_1_1dispersion_correction.html#ad90170234d82c2abccdccd7ed626c7f2',1,'dftfe::dispersionCorrection']]], + ['initelectronicfields_13',['initElectronicFields',['../classdftfe_1_1dft_class.html#a8c7516e63cd258b32a7b858ade2b7ee9',1,'dftfe::dftClass']]], + ['initialisefromrestartfile_14',['InitialiseFromRestartFile',['../classdftfe_1_1molecular_dynamics_class.html#a3be147b30d8a5074ca15595b9653034c',1,'dftfe::molecularDynamicsClass']]], + ['initialisefromrestartnhcfile_15',['InitialiseFromRestartNHCFile',['../classdftfe_1_1molecular_dynamics_class.html#a2fafc367a2bb14a75265111de3827d0a',1,'dftfe::molecularDynamicsClass']]], + ['initialize_16',['initialize',['../classdftfe_1_1dftfe_wrapper.html#a5411c937be76d912296bf78f8f01ffa3',1,'dftfe::dftfeWrapper::initialize()'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a9db89413f0cdaa5d656a498f001f2dff',1,'dftfe::dftUtils::constraintMatrixInfo::initialize()']]], + ['initializeconstraints_17',['initializeConstraints',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#abb9bb559b0d08ac9eca8e7547b99b135',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializedirection_18',['initializeDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a9b7d95a108a92a9f36ce976bf0d781f5',1,'dftfe::cgPRPNonLinearSolver']]], + ['initializeflattenedindexmaps_19',['initializeFlattenedIndexMaps',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a5e1dd3d777ecdbbf0d9475898f4a6a6f',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializehessian_20',['initializeHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a992f4a89d42c6b7f74ecf820fc1b335b',1,'dftfe::BFGSNonLinearSolver']]], + ['initializeindexmaps_21',['initializeIndexMaps',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aec60c24e4e86a72094735a4fc3441fa5',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializekohnshamdftoperator_22',['initializeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#a558bcd6354d8754c22166a44fc094239',1,'dftfe::dftClass']]], + ['initializempipattern_23',['initializeMPIPattern',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ae415b0960317d0f8914ac82e42f1c2ab',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializepreconditioner_24',['initializePreconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a3c41f3e300ce422a08a0d9ba26b1b716',1,'dftfe::LBFGSNonLinearSolver']]], + ['initializeshapefunctionandjacobianbasisdata_25',['initializeShapeFunctionAndJacobianBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#afe40beecff726dfc2444ab8364706105',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initializeshapefunctionandjacobiandata_26',['initializeShapeFunctionAndJacobianData',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a3c587804034c7883ebd5039252f8949a',1,'dftfe::basis::FEBasisOperationsBase']]], + ['initimagechargesupdatekpoints_27',['initImageChargesUpdateKPoints',['../classdftfe_1_1dft_class.html#af31a345ee59fdd47fcb0f17ae5ae1461',1,'dftfe::dftClass']]], + ['initincrementfield_28',['initIncrementField',['../classdftfe_1_1mesh_movement_class.html#a68ff885f785f2f2cae50f6771024c843',1,'dftfe::meshMovementClass']]], + ['initlocalpseudopotential_29',['initLocalPseudoPotential',['../classdftfe_1_1dft_class.html#a40d28a52e17782c4a190726fc670607c',1,'dftfe::dftClass']]], + ['initmoved_30',['initmoved',['../classdftfe_1_1mesh_movement_class.html#a1331833cc5f77c2ef8b4ae84a1e74f16',1,'dftfe::meshMovementClass::initMoved()'],['../classdftfe_1_1force_class.html#af7c239dc6ecd916e5b680d20fad0cbe6',1,'dftfe::forceClass::initMoved()']]], + ['initnonlocalpseudopotential_5fov_31',['initNonLocalPseudoPotential_OV',['../classdftfe_1_1dft_class.html#a99f4b3bbde78bfc58bef2c20725fe151',1,'dftfe::dftClass']]], + ['initnoremesh_32',['initNoRemesh',['../classdftfe_1_1dft_class.html#a040025c96838cf91d45081294068a92f',1,'dftfe::dftClass']]], + ['initnscf_33',['initnscf',['../classdftfe_1_1dft_class.html#a27192bc8d8f275f8bc2d02caa747bffb',1,'dftfe::dftClass']]], + ['initprefinedobjects_34',['initpRefinedObjects',['../classdftfe_1_1dft_class.html#ac192c60bc7c10cce3c20755a38fa289b',1,'dftfe::dftClass']]], + ['initpseudodata_35',['initPseudoData',['../classdftfe_1_1force_class.html#ab4bef4493100e99f2cf633df1ac38f0d',1,'dftfe::forceClass']]], + ['initpseudopotentialall_36',['initPseudoPotentialAll',['../classdftfe_1_1dft_class.html#aaa2a304a03a18fe6d1f09acd7d94c317',1,'dftfe::dftClass']]], + ['initrho_37',['initRho',['../classdftfe_1_1dft_class.html#a19d02db24be71dbbaef10d477e11991b',1,'dftfe::dftClass']]], + ['initsymmetry_38',['initSymmetry',['../classdftfe_1_1symmetry_class.html#a19477a75efe70eb4380f9a102e980b5d',1,'dftfe::symmetryClass']]], + ['initunmoved_39',['initUnmoved',['../classdftfe_1_1force_class.html#aa07a8c1dfd14038364aa2204a65eed01',1,'dftfe::forceClass']]], + ['initunmovedtriangulation_40',['initUnmovedTriangulation',['../classdftfe_1_1dft_class.html#a7cf5877125604b46ab2523d76b46c3f5',1,'dftfe::dftClass']]], + ['initwithscalar_41',['initwithscalar',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#abeb19e7bc4ea3b09dd829af74ae52aa2',1,'dftfe::kohnShamDFTOperatorClass::initWithScalar()'],['../classdftfe_1_1operator_d_f_t_class.html#a18cd3d2fac6fb79d2f2d7018f7adccf1',1,'dftfe::operatorDFTClass::initWithScalar()']]], + ['inlocallyownedrange_42',['inLocallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa5c2eb07ba77efe1c676c31677ecb5c6',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['integratewithbasis_43',['integrateWithBasis',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a8874c27110a152028207db585b7c85b8',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['integratewithbasiskernel_44',['integrateWithBasisKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a9ac151c90928e46eea5d8d3ce0ee5fcd',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['interpolate_45',['interpolate',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a21b35cee07e1ad9a91b64b4ad6a9f594',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >']]], + ['interpolateelectronodaldatatoquadraturedatageneral_46',['interpolateElectroNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#a4442d96f9b3e055c9da39e18c78f2f43',1,'dftfe::dftClass']]], + ['interpolatekernel_47',['interpolatekernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#ac8cb98519bcc395ec01dcd585efa75d9',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::interpolateKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, dftfe::utils::MemorySpace::HOST > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_3_01_value_type_basis_coeff_00_01_value_type_basis_a6d54428caba6f4ef403d0ce98c55ffa.html#a57898c3099623a8dfd861deb2cb6bed1',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, dftfe::utils::MemorySpace::HOST >::interpolateKernel(const ValueTypeBasisCoeff *nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const']]], + ['interpolaterhonodaldatatoquadraturedatageneral_48',['interpolateRhoNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#a325ec6bfe00281b07b2bd666279e129b',1,'dftfe::dftClass']]], + ['interpolaterhonodaldatatoquadraturedatalpsp_49',['interpolateRhoNodalDataToQuadratureDataLpsp',['../classdftfe_1_1dft_class.html#a3e99cc5e7ba9e3b2d7ca0b27243bcf45',1,'dftfe::dftClass']]], + ['interpolaterhospinnodaldatatoquadraturedatageneral_50',['interpolateRhoSpinNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#a5ac5ab100e53d92dcf11b91ff6daccd9',1,'dftfe::dftClass']]], + ['inverse_51',['inverse',['../namespacedftfe_1_1linear_algebra_operations.html#a23f3bab0880944554667262d1ce5b359',1,'dftfe::linearAlgebraOperations']]], + ['inversejacobians_52',['inverseJacobians',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#aa267e644c242380c675bd1e7f02e4b76',1,'dftfe::basis::FEBasisOperationsBase']]], + ['inversejacobiansbasisdata_53',['inversejacobiansbasisdata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a695495b84c3d4a2127e08e32f2bc9238',1,'dftfe::basis::FEBasisOperationsBase::inverseJacobiansBasisData() const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a695495b84c3d4a2127e08e32f2bc9238',1,'dftfe::basis::FEBasisOperationsBase::inverseJacobiansBasisData() const']]], + ['invert_54',['invert',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a86e064ead5d748e9bfab51124535c735',1,'dftfe::ScaLAPACKMatrix']]], + ['is_5fprocess_5factive_55',['is_process_active',['../classdftfe_1_1_process_grid.html#a291c7432cd6a8b215a9ff18d8721f693',1,'dftfe::ProcessGrid']]], + ['iscompatible_56',['iscompatible',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a2e1624b7163deb96a26d747b62e8b82b',1,'dftfe::linearAlgebra::MultiVector::isCompatible()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a773f40a3792564b4e57f1071e656a958',1,'dftfe::utils::mpi::MPIPatternP2P::isCompatible()']]], + ['isconverged_57',['isconverged',['../classdftfe_1_1nudged_elastic_band_class.html#a8e25700ef519442e7dffd4bd54967799',1,'dftfe::nudgedElasticBandClass::isConverged()'],['../classdftfe_1_1nonlinear_solver_problem.html#a4fe8570a516d3fc119c460c9530bb390',1,'dftfe::nonlinearSolverProblem::isConverged()'],['../classdftfe_1_1geo_opt_ion.html#a3a665f5b328cb5b01792664780bb2524',1,'dftfe::geoOptIon::isConverged()'],['../classdftfe_1_1geo_opt_cell.html#a88304029eedfadb7ba9f4c37f56e6932',1,'dftfe::geoOptCell::isConverged()']]], + ['isghostentry_58',['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..6a367dba8 --- /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_base.html#a3605e3bcc6b0b43f5d21e59e137f54e3',1,'dftfe::basis::FEBasisOperationsBase']]], + ['jxwbasisdata_1',['jxwbasisdata',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a6cef402c34f321fbed6b8c45be6e9f74',1,'dftfe::basis::FEBasisOperationsBase::JxWBasisData() const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a6cef402c34f321fbed6b8c45be6e9f74',1,'dftfe::basis::FEBasisOperationsBase::JxWBasisData() const']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 000000000..dcacb54aa --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['kerkersolverproblem_0',['kerkerSolverProblem',['../classdftfe_1_1kerker_solver_problem.html#a5ee1ec2f9a2950e4deeeb6edc118b348',1,'dftfe::kerkerSolverProblem']]], + ['kohnshamdftoperatorclass_1',['kohnShamDFTOperatorClass',['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#aed7d96d26e0e7887ba8f0a725d779cdb',1,'dftfe::kohnShamDFTOperatorClass']]], + ['kohnshamdftoperatordeviceclass_2',['kohnShamDFTOperatorDeviceClass',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#ae9da5cbace89e53fdda9c919fa2866bd',1,'dftfe::kohnShamDFTOperatorDeviceClass']]], + ['kohnshameigenspacecompute_3',['kohnShamEigenSpaceCompute',['../classdftfe_1_1dft_class.html#a4136dcb837619618ac059e6b68cf9113',1,'dftfe::dftClass']]], + ['kohnshameigenspacecomputenscf_4',['kohnShamEigenSpaceComputeNSCF',['../classdftfe_1_1dft_class.html#a72e7481f9c57dda62933ebed1686b325',1,'dftfe::dftClass']]], + ['kohnshameigenspacefirstorderdensitymatresponse_5',['kohnShamEigenSpaceFirstOrderDensityMatResponse',['../classdftfe_1_1dft_class.html#a6358969823490069fd258cd03f4599ee',1,'dftfe::dftClass']]] +]; diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 000000000..5f37293cf --- /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#a0cad95ff0dfc571b65c961f298e7bbc2',1,'dftfe::dftClass']]], + ['l2projectionquadtonodal_2',['l2ProjectionQuadToNodal',['../classdftfe_1_1dft_class.html#aa8db3c424484949453484d347d5dba02',1,'dftfe::dftClass']]], + ['lanczoslowerupperboundeigenspectrum_3',['lanczosLowerUpperBoundEigenSpectrum',['../namespacedftfe_1_1linear_algebra_operations.html#abaf4cb41c3474eced2619d5cab9f36ea',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#afdd097736b7eec47ff7781dae9441356',1,'dftfe::dftClass']]], + ['loadsupporttriangulations_11',['loadSupportTriangulations',['../classdftfe_1_1triangulation_manager.html#a6b6fe245e9ffd6a9f5e278e7e2436805',1,'dftfe::triangulationManager']]], + ['loadtriainfoandrhonodaldata_12',['loadTriaInfoAndRhoNodalData',['../classdftfe_1_1dft_class.html#a8cb56e0c0eba246c362e3d105744b109',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#acefa7c077932895aff31e12e3d3dd006',1,'dftfe::dftClass']]], + ['locateatomcorenodesforce_23',['locateAtomCoreNodesForce',['../classdftfe_1_1force_class.html#a216050d52190278152a7e6c04054f0f9',1,'dftfe::forceClass']]], + ['locateatomsinbins_24',['locateAtomsInBins',['../classdftfe_1_1vself_bins_manager.html#a872f830ddc0d284b8194ef221e8ec1f3',1,'dftfe::vselfBinsManager']]], + ['locateperiodicpinnednodes_25',['locatePeriodicPinnedNodes',['../classdftfe_1_1dft_class.html#a3431ce30f145b4a8a5ec7d7a68cc0a91',1,'dftfe::dftClass']]], + ['lowdenorthogonalization_26',['lowdenOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#a7fbcfc34fd019e4704b2a8ddf4b1bd94',1,'dftfe::linearAlgebraOperations']]], + ['lowrankapproxscfdielectricmatrixinv_27',['lowrankApproxScfDielectricMatrixInv',['../classdftfe_1_1dft_class.html#ad7e350625677650c014c3b1e1ff88cd1',1,'dftfe::dftClass']]], + ['lowrankapproxscfdielectricmatrixinvspinpolarized_28',['lowrankApproxScfDielectricMatrixInvSpinPolarized',['../classdftfe_1_1dft_class.html#add85a6598d48f0cfc0ddd3cdcb670c7e',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..a3b24423c --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,41 @@ +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#a7bcf7b985ffed5cbcacbaf2891fb3823',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< double > a)'],['../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#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']]], + ['mdnve_5',['mdNVE',['../classdftfe_1_1molecular_dynamics_class.html#aba514f7d8f632ae1870d1f5de6ec5386',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtnosehoverchainsthermostat_6',['mdNVTnosehoverchainsThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a35109ee98ca2960c784b13f56fa27bad',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtrescalethermostat_7',['mdNVTrescaleThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a8b7eafdd02eb5c99fc4674bcb9ed8c1d',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtsvrthermostat_8',['mdNVTsvrThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a4a9b377819e099986c44bf04c0d468a6',1,'dftfe::molecularDynamicsClass']]], + ['meanvalueconstraintdistribute_9',['meanValueConstraintDistribute',['../classdftfe_1_1poisson_solver_problem.html#a5bb985e12bbb1a453d10590799aa97e6',1,'dftfe::poissonSolverProblem']]], + ['meanvalueconstraintdistributeslavetomaster_10',['meanValueConstraintDistributeSlaveToMaster',['../classdftfe_1_1poisson_solver_problem.html#a35336e7f3879e35944e15d1b87908fb2',1,'dftfe::poissonSolverProblem']]], + ['meanvalueconstraintsetzero_11',['meanValueConstraintSetZero',['../classdftfe_1_1poisson_solver_problem.html#a38551ba64c40ea985b96df83ceb0a676',1,'dftfe::poissonSolverProblem']]], + ['memorystorage_12',['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_13',['memoryStorageFromSTL',['../namespacedftfe_1_1utils.html#ac07cb0a5493ca0895396e428081a1cfe',1,'dftfe::utils']]], + ['meshmovementaffinetransform_14',['meshMovementAffineTransform',['../classdftfe_1_1mesh_movement_affine_transform.html#aa82504dd00a1727527eb8487bee90d70',1,'dftfe::meshMovementAffineTransform']]], + ['meshmovementclass_15',['meshMovementClass',['../classdftfe_1_1mesh_movement_class.html#a11a93ca35ca3de8b60db373cf0cf2501',1,'dftfe::meshMovementClass']]], + ['meshmovementgaussianclass_16',['meshMovementGaussianClass',['../classdftfe_1_1mesh_movement_gaussian_class.html#ad87c0589fd2775b847d33f97bdb65914',1,'dftfe::meshMovementGaussianClass']]], + ['mixing_5fsimple_17',['mixing_simple',['../classdftfe_1_1dft_class.html#a9568d26e2bbf29ddaafafb3e0a6b4dd0',1,'dftfe::dftClass']]], + ['mixing_5fsimple_5fspinpolarized_18',['mixing_simple_spinPolarized',['../classdftfe_1_1dft_class.html#a3e3d4589a81c0d8f635081401c9f4ffb',1,'dftfe::dftClass']]], + ['mixingscheme_19',['MixingScheme',['../classdftfe_1_1_mixing_scheme.html#a2c7f13f60b0d644bdc97be968d305885',1,'dftfe::MixingScheme']]], + ['mixvariable_20',['mixVariable',['../classdftfe_1_1_mixing_scheme.html#a93ea787fb3975fc98f897d8677018474',1,'dftfe::MixingScheme']]], + ['mmult_21',['mmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab9cde52bed9faa050dce904c96eebce0',1,'dftfe::ScaLAPACKMatrix']]], + ['moleculardynamicsclass_22',['molecularDynamicsClass',['../classdftfe_1_1molecular_dynamics_class.html#a037b8204c80522759b27b6b5f2cbd302',1,'dftfe::molecularDynamicsClass']]], + ['movedmeshcheck_23',['movedMeshCheck',['../classdftfe_1_1mesh_movement_class.html#a3f6575159e4616a7cc1c9bfaf14d521d',1,'dftfe::meshMovementClass']]], + ['movefile_24',['moveFile',['../namespacedftfe_1_1dft_utils.html#ab276c85aa00451fe23367a4bda8b48c2',1,'dftfe::dftUtils']]], + ['movemesh_25',['movemesh',['../classdftfe_1_1mesh_movement_gaussian_class.html#a01f8043c0910aa892d4c003fea0b1fd8',1,'dftfe::meshMovementGaussianClass::moveMesh()'],['../classdftfe_1_1mesh_movement_affine_transform.html#af5389b0b653a2aa2204f32129f8b9bde',1,'dftfe::meshMovementAffineTransform::moveMesh()']]], + ['movemeshtoatoms_26',['moveMeshToAtoms',['../classdftfe_1_1dft_class.html#aecdce3755435db062345c3c7033ac9ad',1,'dftfe::dftClass']]], + ['movemeshtwolevelelectro_27',['moveMeshTwoLevelElectro',['../classdftfe_1_1mesh_movement_gaussian_class.html#a2457759f5a0c300cc4b25e025e2dc032',1,'dftfe::meshMovementGaussianClass']]], + ['movemeshtwostep_28',['moveMeshTwoStep',['../classdftfe_1_1mesh_movement_gaussian_class.html#a10a91c70be4057aeaf005574b273daaa',1,'dftfe::meshMovementGaussianClass']]], + ['movesubdividedmesh_29',['moveSubdividedMesh',['../classdftfe_1_1mesh_movement_class.html#a46ffb5b9220045f23513f1ef7d4e7d98',1,'dftfe::meshMovementClass']]], + ['mpi_5ftype_5fid_30',['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_31',['mpiCommunicator',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ab4d284d924bc3917ea71f52e40d8d44e',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['mpicommunicatorp2p_32',['MPICommunicatorP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#adc62184cc187b4167239df3feee5dc6f',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['mpipatternp2p_33',['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_34',['mpirequestersnbx',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a63da5b468e92b01eb7bd529b50fae7b4',1,'dftfe::utils::mpi::MPIRequestersNBX::MPIRequestersNBX()=default'],['../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)']]], + ['mtmult_35',['mTmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a707a28c545abba69394929b0ff934fdd',1,'dftfe::ScaLAPACKMatrix']]], + ['mult_36',['mult',['../namespacedftfe_1_1utils.html#a374ca5a1a4ffd39b8d515e7fd87f68f3',1,'dftfe::utils::mult(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a0ecbb7d7ee9ef5b7c940c2ca8c72fa6c',1,'dftfe::utils::mult(float a, float 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)'],['../namespacedftfe_1_1utils.html#a4dca74c83a4e7f6888558c68d68913d8',1,'dftfe::utils::mult(double a, float b)'],['../namespacedftfe_1_1utils.html#ae5c706e906bb78fa6967057ce9ee4486',1,'dftfe::utils::mult(float a, double b)'],['../namespacedftfe_1_1utils.html#aedb9ad40e707fe086a4e91668bafba3a',1,'dftfe::utils::mult(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#afb52371cacad3bbd6f7d7a1066cda349',1,'dftfe::utils::mult(double a, double b)'],['../namespacedftfe_1_1utils.html#a3026372ab6ab0625ee78b56505cd4520',1,'dftfe::utils::mult(int a, int b)'],['../namespacedftfe_1_1utils.html#adcda956285358e48e0c816e0724ce0e0',1,'dftfe::utils::mult(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#ad361e6bfe0d291045938225ecd3dd6ea',1,'dftfe::utils::mult(unsigned int a, unsigned int b)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a245caef57db69751ecdebc120ff4b456',1,'dftfe::ScaLAPACKMatrix::mult()']]], + ['multivector_37',['multivector',['../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#ae4ff9bc39e8df13bce72f6cde957a003',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const MultiVector &u)'],['../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#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#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#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#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#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#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#a9df1033e595ed9efe7ff76c17b486565',1,'dftfe::linearAlgebra::MultiVector::MultiVector()=default'],['../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..707878740 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,25 @@ +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_base.html#aaadadd35ef03548e393e0bb65073d087',1,'dftfe::basis::FEBasisOperationsBase']]], + ['ndofspercell_2',['nDofsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a8b1e0a4639d93c0196a7dd3daa764c4d',1,'dftfe::basis::FEBasisOperationsBase']]], + ['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']]], + ['nodaldensity_5fmixing_5fanderson_5fkerker_5',['nodalDensity_mixing_anderson_kerker',['../classdftfe_1_1dft_class.html#a2460a2cd36a19db3de9c8cd7285c98e6',1,'dftfe::dftClass']]], + ['nodaldensity_5fmixing_5fsimple_5fkerker_6',['nodalDensity_mixing_simple_kerker',['../classdftfe_1_1dft_class.html#a6fadf587b71febc91eec581d5653506f',1,'dftfe::dftClass']]], + ['nonlinearsolver_7',['nonLinearSolver',['../classdftfe_1_1non_linear_solver.html#acb2fee7d397c0f1fcca01edff29bc1dc',1,'dftfe::nonLinearSolver']]], + ['nonlinearsolverproblem_8',['nonlinearSolverProblem',['../classdftfe_1_1nonlinear_solver_problem.html#a6f468b90032ab9339b639b20109706f5',1,'dftfe::nonlinearSolverProblem']]], + ['noremeshrhodatainit_9',['noRemeshRhoDataInit',['../classdftfe_1_1dft_class.html#a73afd3485c2fa4fd14a72ffb23262254',1,'dftfe::dftClass']]], + ['normalizeatomicrhoquadvalues_10',['normalizeAtomicRhoQuadValues',['../classdftfe_1_1dft_class.html#a0cf6b0a3305d07fee904a09f029e9db4',1,'dftfe::dftClass']]], + ['normalizerhoinquadvalues_11',['normalizeRhoInQuadValues',['../classdftfe_1_1dft_class.html#af4e4df4bd1adcc6456ec1693d1f733f3',1,'dftfe::dftClass']]], + ['normalizerhooutquadvalues_12',['normalizeRhoOutQuadValues',['../classdftfe_1_1dft_class.html#a0813da3f722b14371619587f2cc4cd7f',1,'dftfe::dftClass']]], + ['nosehoverchains_13',['NoseHoverChains',['../classdftfe_1_1molecular_dynamics_class.html#ada336d8717658e87d6b7436443b9b252',1,'dftfe::molecularDynamicsClass']]], + ['nosehoverextendedlagrangian_14',['NoseHoverExtendedLagrangian',['../classdftfe_1_1molecular_dynamics_class.html#a8c5b0138a53a601f7e7e9c8998c7668d',1,'dftfe::molecularDynamicsClass']]], + ['nowneddofs_15',['nOwnedDofs',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a54d74f18a9672cc3b795ec54a62f9db2',1,'dftfe::basis::FEBasisOperationsBase']]], + ['nquadspercell_16',['nQuadsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#ac906748956f34c8424b5a9331e56a29c',1,'dftfe::basis::FEBasisOperationsBase']]], + ['nrelaventdofs_17',['nRelaventDofs',['../classdftfe_1_1basis_1_1_f_e_basis_operations_base.html#a9e10a7070c514d194f960749e559f28c',1,'dftfe::basis::FEBasisOperationsBase']]], + ['nscf_18',['nscf',['../classdftfe_1_1dft_class.html#a72d8da277a5096d741e3d95cd38e9357',1,'dftfe::dftClass']]], + ['nudgedelasticbandclass_19',['nudgedElasticBandClass',['../classdftfe_1_1nudged_elastic_band_class.html#af282ee272ef6074fcc6a9fbde9112af7',1,'dftfe::nudgedElasticBandClass']]], + ['numroc_5f_20',['numroc_',['../namespacedftfe.html#ab4551d8b31f0faf036189b071760a55e',1,'dftfe']]], + ['numvectors_21',['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..5f68dc4c3 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['operator_21_3d_0',['operator!=',['../classdftfe_1_1kerker_solver_problem.html#ab434f839021844216ceaa1bce2d84bf4',1,'dftfe::kerkerSolverProblem::operator!=()'],['../classdftfe_1_1poisson_solver_problem.html#aa4252fce0d7ccd44f2220aef7a217521',1,'dftfe::poissonSolverProblem::operator!=()'],['../classdftfe_1_1dealii_linear_solver_problem.html#ab505308c2a47b84efddc2298f5d0b141',1,'dftfe::dealiiLinearSolverProblem::operator!=()']]], + ['operator_26_1',['operator&',['../namespacedftfe_1_1basis.html#a968aecdead1f0467074cacbbedc3492c',1,'dftfe::basis']]], + ['operator_26_3d_2',['operator&=',['../namespacedftfe_1_1basis.html#aae43e26dc49262b93899c9a9edccc420',1,'dftfe::basis']]], + ['operator_3d_3',['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_4',['operator==',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a53dfa9d6fd66e0ca486d2d7158ccc2ef',1,'dftfe::utils::OptimizedIndexSet']]], + ['operator_5b_5d_5',['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_6',['operatordftclass',['../classdftfe_1_1operator_d_f_t_class.html#a98f799df477536a14ae62cf8fd1e4e95',1,'dftfe::operatorDFTClass::operatorDFTClass()'],['../classdftfe_1_1operator_d_f_t_class.html#a21c349c2ed44312e3f345ba6ee3ee6cb',1,'dftfe::operatorDFTClass::operatorDFTClass(const MPI_Comm &mpi_comm_replica, const dealii::MatrixFree< 3, double > &matrix_free_data, dftUtils::constraintMatrixInfo &constraintMatrixNone)']]], + ['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']]], + ['outputdata_10',['outputData',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#aa409fa0ff8d24bdb69e6cc248afccf19',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['outputdensity_11',['outputDensity',['../classdftfe_1_1dft_class.html#a7571c3a8d2766d49946e22b8e416fdc0',1,'dftfe::dftClass']]], + ['outputwfc_12',['outputWfc',['../classdftfe_1_1dft_class.html#a96e05a04b8d5dd0e624da876a91cc6e6',1,'dftfe::dftClass']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 000000000..521cbe4d3 --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,95 @@ +var searchData= +[ + ['parse_5fparameters_0',['parse_parameters',['../classdftfe_1_1run_parameters.html#a2e398eed3eafd1748e44dcc9b73c74e9',1,'dftfe::runParameters::parse_parameters()'],['../classdftfe_1_1dft_parameters.html#a973e7cebb8b8705fe8e8872081629ed2',1,'dftfe::dftParameters::parse_parameters()']]], + ['parsefile_1',['parseFile',['../classdftfe_1_1pseudo_utils_1_1xml_todftfe_parser.html#a9dea84e7b17a9b0c2211335e00d5fe6f',1,'dftfe::pseudoUtils::xmlTodftfeParser']]], + ['pdgeadd_5f_2',['pdgeadd_',['../namespacedftfe.html#a221815568916358c46a411f2eaf8a622',1,'dftfe']]], + ['pdgels_5f_3',['pdgels_',['../namespacedftfe.html#adaa498bcbb07c15a2d5be67a678b63a0',1,'dftfe']]], + ['pdgemm_5f_4',['pdgemm_',['../namespacedftfe.html#afcd4617f3c829f0e97e950caf20324af',1,'dftfe']]], + ['pdgemr2d_5f_5',['pdgemr2d_',['../namespacedftfe.html#ab6a7b32848fa87d641a74bac65272d2b',1,'dftfe']]], + ['pdgesv_5f_6',['pdgesv_',['../namespacedftfe.html#a24d2ddff1d3f167c76d65b35a5e5b6b8',1,'dftfe']]], + ['pdgesvd_5f_7',['pdgesvd_',['../namespacedftfe.html#a3828b64eb1e8fb649d3c25da1614e384',1,'dftfe']]], + ['pdgetrf_5f_8',['pdgetrf_',['../namespacedftfe.html#a2fc8e14dce993b4584b79ac2c3c3b71f',1,'dftfe']]], + ['pdgetri_5f_9',['pdgetri_',['../namespacedftfe.html#a002f688ca93979940594131a843fdfd4',1,'dftfe']]], + ['pdlacpy_5f_10',['pdlacpy_',['../namespacedftfe.html#af38708a1d214262c1cee343f229abb50',1,'dftfe']]], + ['pdlamch_5f_11',['pdlamch_',['../namespacedftfe.html#abe6d16eb94b0fae6f7a1d1451c14fc92',1,'dftfe']]], + ['pdlange_5f_12',['pdlange_',['../namespacedftfe.html#a129935f715565db171f51520d37c82c4',1,'dftfe']]], + ['pdlansy_5f_13',['pdlansy_',['../namespacedftfe.html#ab5a9ea1c809dbc2b0b8b432a1b87e27f',1,'dftfe']]], + ['pdpocon_5f_14',['pdpocon_',['../namespacedftfe.html#a8bf82b760bdb3444929c5af5d27dd6ac',1,'dftfe']]], + ['pdpotrf_5f_15',['pdpotrf_',['../namespacedftfe.html#ae253dc496641780227d5acaab9c8c0ce',1,'dftfe']]], + ['pdpotri_5f_16',['pdpotri_',['../namespacedftfe.html#a52e4e94cb6d6249b0f172d6154da1511',1,'dftfe']]], + ['pdsyev_5f_17',['pdsyev_',['../namespacedftfe.html#aa7486105b406d173f93a86a6cf1eca74',1,'dftfe']]], + ['pdsyevr_5f_18',['pdsyevr_',['../namespacedftfe.html#abe69a61918297c8a21e31f773208c864',1,'dftfe']]], + ['pdsyevx_5f_19',['pdsyevx_',['../namespacedftfe.html#a10d901b8632df151002719691be7cc6c',1,'dftfe']]], + ['pdtran_5f_20',['pdtran_',['../namespacedftfe.html#a03f4d6b17504d2d3a551f5d24ecc7f42',1,'dftfe']]], + ['pdtrtri_5f_21',['pdtrtri_',['../namespacedftfe.html#a7d5dca590290c8d280d24bec6dd2ab8a',1,'dftfe']]], + ['periodictable_22',['PeriodicTable',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a36d2c3f1a82480a1508892e68836246f',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['pgeadd_23',['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_24',['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_25',['pgemm',['../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#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#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_26',['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_27',['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_28',['pgesvd',['../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)'],['../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#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 *)']]], + ['pgetrf_29',['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_30',['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_31',['placpy',['../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)'],['../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)']]], + ['plamch_32',['plamch',['../namespacedftfe.html#a296ef8e4e175fcafc09da6c7290a9af2',1,'dftfe::plamch(const int *ictxt, const char *cmach, float &val)'],['../namespacedftfe.html#ab781cc657bbeef30b13a2d518b791d4c',1,'dftfe::plamch(const int *ictxt, const char *cmach, double &val)'],['../namespacedftfe.html#a55e6fd19ddc6233eb3ac483ba1070182',1,'dftfe::plamch(const int *, const char *, number &)']]], + ['plange_33',['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_34',['plansy',['../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)'],['../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)']]], + ['poissonsolverproblem_35',['poissonSolverProblem',['../classdftfe_1_1poisson_solver_problem.html#ad04efb96d4e69c663f8a13605a80ea5f',1,'dftfe::poissonSolverProblem']]], + ['pool_36',['Pool',['../classdftfe_1_1dft_utils_1_1_pool.html#ab25f9a7e1ce0aa8ca1a13601af0c5c16',1,'dftfe::dftUtils::Pool']]], + ['popoldhistory_37',['popOldHistory',['../classdftfe_1_1_mixing_scheme.html#a366b186ea5c549d5b7fa8b8f8d03a942',1,'dftfe::MixingScheme']]], + ['popoutrhoinrhooutvals_38',['popOutRhoInRhoOutVals',['../classdftfe_1_1dft_class.html#aceb3d7a87d6766025aad6bf307f3c2a6',1,'dftfe::dftClass']]], + ['pplacgv_39',['pplacgv',['../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)'],['../namespacedftfe.html#a8b096c1092d1287ee77384a89bf2f622',1,'dftfe::pplacgv(const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)']]], + ['ppocon_40',['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#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)'],['../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)']]], + ['ppotrf_41',['ppotrf',['../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)'],['../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#a82f094d35499ff5b5111b4e567f6fd2b',1,'dftfe::ppotrf(const char *, const int *, number *, const int *, const int *, const int *, int *)']]], + ['ppotri_42',['ppotri',['../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)'],['../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)']]], + ['precomputeshapefunctiongradientintegrals_43',['precomputeshapefunctiongradientintegrals',['../classdftfe_1_1kohn_sham_d_f_t_operator_device_class.html#a44df37e054cd57ff01e363b1ef2e6661',1,'dftfe::kohnShamDFTOperatorDeviceClass::preComputeShapeFunctionGradientIntegrals()'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a573e4abdc69ea11930d8f2af3a64d057',1,'dftfe::kohnShamDFTOperatorClass::preComputeShapeFunctionGradientIntegrals()']]], + ['precondition_44',['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_45',['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_46',['print_parameters',['../classdftfe_1_1run_parameters.html#a9cb638fb2ddc454b9719df55156de137',1,'dftfe::runParameters']]], + ['printatomsforces_47',['printAtomsForces',['../classdftfe_1_1force_class.html#aacae38b969c007a56f19e30ea977a01b',1,'dftfe::forceClass']]], + ['printcurrentmemoryusage_48',['printCurrentMemoryUsage',['../namespacedftfe_1_1dft_utils.html#aa50216d4c39752e65055aff5ec377421',1,'dftfe::dftUtils']]], + ['printstress_49',['printStress',['../classdftfe_1_1force_class.html#a02cd993da68f16943844d60476c6bfc4',1,'dftfe::forceClass']]], + ['probeandreceiveincomingmsg_50',['probeAndReceiveIncomingMsg',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#acfdf3a750a9e5d713eab717ad2247377',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['processgrid_51',['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_52',['processGridELPASetup',['../classdftfe_1_1elpa_scala_manager.html#a8e659cb2f7aab167c168269aadd9c25c',1,'dftfe::elpaScalaManager']]], + ['projectpreviousgroundstaterho_53',['projectPreviousGroundStateRho',['../classdftfe_1_1dft_class.html#a912df5206689e1d373768ae53a2f98c9',1,'dftfe::dftClass']]], + ['property_5fname_54',['property_name',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a4f0bba6ecbb502d68dbe13ec7b8e3852',1,'dftfe::LAPACKSupport']]], + ['pseudogramschmidtorthogonalization_55',['pseudoGramSchmidtOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#aece2d5de1c664b00010ff47f5633e6af',1,'dftfe::linearAlgebraOperations']]], + ['psgeadd_5f_56',['psgeadd_',['../namespacedftfe.html#a233629b7a5e4d911de61898d349c6832',1,'dftfe']]], + ['psgels_5f_57',['psgels_',['../namespacedftfe.html#afd819e4e2c97e5a87871f0b3ef4fbf31',1,'dftfe']]], + ['psgemm_5f_58',['psgemm_',['../namespacedftfe.html#a712e6c38908c491a443b52778df44966',1,'dftfe']]], + ['psgemr2d_5f_59',['psgemr2d_',['../namespacedftfe.html#a0f575fdd814ce60d6c1b281159982ff6',1,'dftfe']]], + ['psgesv_5f_60',['psgesv_',['../namespacedftfe.html#aef3583562b2a9bb4a4470be8bf13927e',1,'dftfe']]], + ['psgesvd_5f_61',['psgesvd_',['../namespacedftfe.html#a0e761ff7b7e2af56709a3810a9328c30',1,'dftfe']]], + ['psgetrf_5f_62',['psgetrf_',['../namespacedftfe.html#abde5ab01317e19ac8feeca5602339d51',1,'dftfe']]], + ['psgetri_5f_63',['psgetri_',['../namespacedftfe.html#a9e0a4b60e5d7a3a2d9c56d7bcca7b3a1',1,'dftfe']]], + ['pslacpy_5f_64',['pslacpy_',['../namespacedftfe.html#a341659efbe4ac80f340443830891e557',1,'dftfe']]], + ['pslamch_5f_65',['pslamch_',['../namespacedftfe.html#a7c61818e9eb2bdbcfb0d8ebdb1945c12',1,'dftfe']]], + ['pslange_5f_66',['pslange_',['../namespacedftfe.html#af4b521c6694c2682ef70694b20f8ec6d',1,'dftfe']]], + ['pslansy_5f_67',['pslansy_',['../namespacedftfe.html#a619f9a1e5a3dc5e2542db2542ea4159b',1,'dftfe']]], + ['pspocon_5f_68',['pspocon_',['../namespacedftfe.html#a9bd6a7d349646376a1d62ba9decf7212',1,'dftfe']]], + ['pspotrf_5f_69',['pspotrf_',['../namespacedftfe.html#a7b312f4ec912904f739e3884959ae74f',1,'dftfe']]], + ['pspotri_5f_70',['pspotri_',['../namespacedftfe.html#aff107ce3bc9296f14c90a2577146aa94',1,'dftfe']]], + ['pssyev_5f_71',['pssyev_',['../namespacedftfe.html#aafa91b6b369496e0a7507d591ee82705',1,'dftfe']]], + ['pssyevr_5f_72',['pssyevr_',['../namespacedftfe.html#accde1d8ea16247a5878e9e56e1fa3ad0',1,'dftfe']]], + ['pssyevx_5f_73',['pssyevx_',['../namespacedftfe.html#af7898cfd26024e906c28470ee08d0bd2',1,'dftfe']]], + ['pstran_5f_74',['pstran_',['../namespacedftfe.html#af852f56eb67805d3bda3a2eef708c5bf',1,'dftfe']]], + ['pstrtri_5f_75',['pstrtri_',['../namespacedftfe.html#a44af8d71d934a11b0d3606bf008f7b7b',1,'dftfe']]], + ['psyev_76',['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_77',['psyevr',['../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)'],['../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#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)']]], + ['psyevx_78',['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_79',['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_80',['ptrtri',['../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)'],['../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#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#ab4f556dfb6d365a893dd2f7f00e1ba62',1,'dftfe::ptrtri(const char *, const char *, const int *, number *, const int *, const int *, const int *, int *)']]], + ['pzgeadd_5f_81',['pzgeadd_',['../namespacedftfe.html#aaf96e3cb8da123837a2377856357f67e',1,'dftfe']]], + ['pzgemm_5f_82',['pzgemm_',['../namespacedftfe.html#ac983f66dcae225deff57ab9240317432',1,'dftfe']]], + ['pzgetrf_5f_83',['pzgetrf_',['../namespacedftfe.html#a7c568a3b74e953fcf5b3e42a9a88e5aa',1,'dftfe']]], + ['pzgetri_5f_84',['pzgetri_',['../namespacedftfe.html#a3c535a126efb2a7819e59c35d2f5ba43',1,'dftfe']]], + ['pzheev_5f_85',['pzheev_',['../namespacedftfe.html#a4c528a0b8b8e334819754e69c8481299',1,'dftfe']]], + ['pzheevr_5f_86',['pzheevr_',['../namespacedftfe.html#ae0e0243bcf842451ed42faba81fb2c4a',1,'dftfe']]], + ['pzheevx_5f_87',['pzheevx_',['../namespacedftfe.html#a53980a0e19402e09d15af41be52cd979',1,'dftfe']]], + ['pzlacgv_5f_88',['pzlacgv_',['../namespacedftfe.html#ac6a9217aa19c7367285078037d4f5583',1,'dftfe']]], + ['pzpotrf_5f_89',['pzpotrf_',['../namespacedftfe.html#a8c350b90b550b87a811af738e9dccb64',1,'dftfe']]], + ['pzpotri_5f_90',['pzpotri_',['../namespacedftfe.html#a3f7be7ce745104479b872684e5cd467c',1,'dftfe']]], + ['pztrtri_5f_91',['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..3c9d8475e --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['dftfe_0',['dftfe',['../namespacedftfe.html',1,'']]], + ['dftfe_3a_3abasis_1',['basis',['../namespacedftfe_1_1basis.html',1,'dftfe']]], + ['dftfe_3a_3adatatypes_2',['dataTypes',['../namespacedftfe_1_1data_types.html',1,'dftfe']]], + ['dftfe_3a_3adftutils_3',['dftUtils',['../namespacedftfe_1_1dft_utils.html',1,'dftfe']]], + ['dftfe_3a_3aeshelbytensor_4',['eshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html',1,'dftfe']]], + ['dftfe_3a_3aeshelbytensorsp_5',['eshelbyTensorSP',['../namespacedftfe_1_1eshelby_tensor_s_p.html',1,'dftfe']]], + ['dftfe_3a_3aforce_6',['force',['../namespacedftfe_1_1force.html',1,'dftfe']]], + ['dftfe_3a_3alapacksupport_7',['LAPACKSupport',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebra_8',['linearAlgebra',['../namespacedftfe_1_1linear_algebra.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebraoperations_9',['linearAlgebraOperations',['../namespacedftfe_1_1linear_algebra_operations.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebraoperations_3a_3ainternal_10',['internal',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html',1,'dftfe::linearAlgebraOperations']]], + ['dftfe_3a_3ameshgenutils_11',['meshGenUtils',['../namespacedftfe_1_1mesh_gen_utils.html',1,'dftfe']]], + ['dftfe_3a_3apseudoutils_12',['pseudoUtils',['../namespacedftfe_1_1pseudo_utils.html',1,'dftfe']]], + ['dftfe_3a_3atypes_13',['types',['../namespacedftfe_1_1types.html',1,'dftfe']]], + ['dftfe_3a_3autils_14',['utils',['../namespacedftfe_1_1utils.html',1,'dftfe']]], + ['dftfe_3a_3autils_3a_3ampi_15',['mpi',['../namespacedftfe_1_1utils_1_1mpi.html',1,'dftfe::utils']]], + ['dftfe_3a_3avectortools_16',['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..9649b9a4a --- /dev/null +++ b/search/related_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dftclass_3c_20feorder_2c_20feorderelectro_20_3e_0',['dftclass< feorder, feorderelectro >',['../classdftfe_1_1force_class.html#a4e5825a3c89e7e4c5295677947c36417',1,'dftfe::forceClass::dftClass< FEOrder, FEOrderElectro >'],['../classdftfe_1_1kohn_sham_d_f_t_operator_class.html#a4e5825a3c89e7e4c5295677947c36417',1,'dftfe::kohnShamDFTOperatorClass::dftClass< FEOrder, FEOrderElectro >'],['../classdftfe_1_1symmetry_class.html#a4e5825a3c89e7e4c5295677947c36417',1,'dftfe::symmetryClass::dftClass< FEOrder, FEOrderElectro >']]], + ['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..2c4ab6660 --- /dev/null +++ b/search/related_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['forceclass_3c_20feorder_2c_20feorderelectro_20_3e_0',['forceClass< FEOrder, FEOrderElectro >',['../classdftfe_1_1dft_class.html#a0986c3d8c89e92033aac2a75a8bc77d8',1,'dftfe::dftClass']]] +]; diff --git a/search/related_2.js b/search/related_2.js new file mode 100644 index 000000000..9b6ea4f84 --- /dev/null +++ b/search/related_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kohnshamdftoperatorclass_3c_20feorder_2c_20feorderelectro_20_3e_0',['kohnShamDFTOperatorClass< FEOrder, FEOrderElectro >',['../classdftfe_1_1dft_class.html#a51d87e1fd28f7908a7ffe3d0b26e6dde',1,'dftfe::dftClass']]] +]; diff --git a/search/related_3.js b/search/related_3.js new file mode 100644 index 000000000..b4d09b180 --- /dev/null +++ b/search/related_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['symmetryclass_3c_20feorder_2c_20feorderelectro_20_3e_0',['symmetryClass< FEOrder, FEOrderElectro >',['../classdftfe_1_1dft_class.html#ac29bbcd37405741a435b8ae786eeaa88',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..6fd40c677 --- /dev/null +++ b/search/search.js @@ -0,0 +1,840 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var 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 + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var 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'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var 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(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var 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) + { + var 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); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var 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) + { + var focusItem; + while (1) + { + var 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) + { + var focusItem; + while (1) + { + var 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) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // 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 + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var 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 + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var 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) + { + var 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) + { + var 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 + { + var newIndex = childIndex+1; + var 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 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); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e + + + + + + +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..a6f27ca13 --- /dev/null +++ b/solve_vself_in_bins_device_8h_source.html @@ -0,0 +1,177 @@ + + + + + + + +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 <operatorDevice.h>
    +
    25
    +
    26namespace dftfe
    +
    27{
    +
    28 namespace poissonDevice
    +
    29 {
    +
    30 void
    +
    31 solveVselfInBins(
    +
    32 operatorDFTDeviceClass & operatorMatrix,
    +
    33 const dealii::MatrixFree<3, double> & matrixFreeData,
    +
    34 const unsigned int mfDofHandlerIndex,
    +
    35 const dealii::AffineConstraints<double> &hangingPeriodicConstraintMatrix,
    +
    36 const double * rhsFlattenedH,
    +
    37 const double * diagonalAH,
    +
    38 const double * inhomoIdsColoredVecFlattenedH,
    +
    39 const unsigned int localSize,
    +
    40 const unsigned int ghostSize,
    +
    41 const unsigned int numberBins,
    +
    42 const MPI_Comm & mpiCommParent,
    +
    43 const MPI_Comm & mpiCommDomain,
    +
    44 double * xH,
    +
    45 const int verbosity,
    +
    46 const unsigned int maxLinearSolverIterations,
    +
    47 const double absLinearSolverTolerance,
    +
    48 const bool isElectroFEOrderDifferentFromFEOrder = false);
    +
    49
    +
    50 void
    +
    51 cgSolver(
    + +
    53 dftUtils::constraintMatrixInfoDevice &constraintsMatrixDataInfoDevice,
    +
    54 const double * bD,
    +
    55 const double * diagonalAD,
    +
    56 const dftfe::utils::MemoryStorage<double,
    + +
    58 &poissonCellStiffnessMatricesD,
    +
    59 const dftfe::utils::MemoryStorage<double,
    + +
    61 &inhomoIdsColoredVecFlattenedD,
    +
    62 const dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
    + +
    64 & cellLocalProcIndexIdMapD,
    +
    65 const unsigned int localSize,
    +
    66 const unsigned int ghostSize,
    +
    67 const unsigned int numberBins,
    +
    68 const unsigned int totalLocallyOwnedCells,
    +
    69 const unsigned int numberNodesPerElement,
    +
    70 const int debugLevel,
    +
    71 const unsigned int maxIter,
    +
    72 const double absTol,
    +
    73 const MPI_Comm & mpiCommParent,
    +
    74 const MPI_Comm & mpiCommDomain,
    +
    75 distributedDeviceVec<double> &x);
    +
    76 } // namespace poissonDevice
    +
    77} // namespace dftfe
    +
    78# endif
    +
    79#endif
    +
    Definition MemoryStorage.h:33
    + + + +
    cublasHandle_t deviceBlasHandle_t
    Definition DeviceTypeConfig.cu.h:36
    +
    Definition upfToxml.cc:37
    + +
    + + + + 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..6e5c21dcc --- /dev/null +++ b/structdftfe_1_1pseudo_utils_1_1_element-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::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..d5567211a --- /dev/null +++ b/structdftfe_1_1pseudo_utils_1_1_element.html @@ -0,0 +1,218 @@ + + + + + + + +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/symmetry_8h.html b/symmetry_8h.html new file mode 100644 index 000000000..aab14f1ba --- /dev/null +++ b/symmetry_8h.html @@ -0,0 +1,112 @@ + + + + + + + +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 >
     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..75a607db0 --- /dev/null +++ b/symmetry_8h_source.html @@ -0,0 +1,302 @@ + + + + + + + +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, unsigned int FEOrderElectro>
    +
    + +
    39 {
    +
    40 // template <unsigned int T1, unsigned int T2>
    +
    41 friend class dftClass<FEOrder, FEOrderElectro>;
    +
    42
    +
    43 public:
    +
    44 /**
    +
    45 * symmetryClass constructor
    +
    46 */
    + +
    48 const MPI_Comm & mpi_comm_parent,
    +
    49 const MPI_Comm & mpi_comm_domain,
    +
    50 const MPI_Comm & _interpoolcomm);
    +
    51 /**
    +
    52 * Main driver routine to generate and communicate mapping tables
    +
    53 */
    +
    54 void
    + +
    56 /**
    +
    57 * computes total density by summing over all the symmetry transformed
    +
    58 * points
    +
    59 */
    +
    60 void
    + +
    62 /**
    +
    63 * computes density at all the transformed points received from other
    +
    64 * processors and scatters the density back to the corresponding processors
    +
    65 */
    +
    66 void
    + +
    68 /**
    +
    69 * Wipes out mapping tables between relaxation steps
    +
    70 */
    +
    71 void
    + +
    73 /**
    +
    74 * quick snippet to go back and forth between crystal and cartesian
    +
    75 * coordinates
    +
    76 * @param [in] p point that is to be transformed
    +
    77 * @param [in] flag type of coordinate transformation, 1 takes crys. to cart. -1 takes cart. to crys.
    +
    78 */
    +
    79 dealii::Point<3> crys2cart(dealii::Point<3> p, int flag);
    +
    80
    +
    81
    +
    82 private:
    + +
    84 /**
    +
    85 * dealii based FE data structres
    +
    86 */
    +
    87 dealii::FE_Q<3> FE;
    +
    88 /**
    +
    89 * compute-time logger
    +
    90 */
    +
    91 dealii::TimerOutput computing_timer;
    +
    92 /**
    +
    93 * parallel objects
    +
    94 */
    + +
    96 const unsigned int n_mpi_processes;
    +
    97 const unsigned int this_mpi_process;
    +
    98 dealii::ConditionalOStream pcout;
    +
    99 /**
    +
    100 * Space group symmetry related data
    +
    101 */
    +
    102 std::vector<std::vector<std::vector<double>>> symmMat;
    +
    103 unsigned int numSymm;
    +
    104 double translation[500][3];
    +
    105 std::vector<std::vector<int>> symmUnderGroup;
    +
    106 std::vector<int> numSymmUnderGroup;
    +
    107 /**
    +
    108 * Data members required for storing mapping tables locally
    +
    109 */
    +
    110 std::map<dealii::CellId,
    +
    111 std::vector<std::tuple<int, std::vector<double>, int>>>
    + +
    113 std::vector<std::vector<std::vector<std::tuple<int, int, int>>>>
    + +
    115 std::map<int, typename dealii::DoFHandler<3>::active_cell_iterator>
    + +
    117 std::map<dealii::CellId, int> globalCellId;
    +
    118 std::vector<int> ownerProcGlobal;
    +
    119 /**
    +
    120 * Data members required for communicating mapping tables
    +
    121 */
    +
    122 std::vector<std::vector<std::vector<std::vector<int>>>> mappedGroupSend0;
    +
    123 std::vector<std::vector<std::vector<std::vector<int>>>> mappedGroupSend2;
    +
    124 std::vector<std::vector<std::vector<std::vector<std::vector<double>>>>>
    + +
    126 std::vector<std::vector<std::vector<int>>> mappedGroupRecvd0;
    +
    127 std::vector<std::vector<std::vector<int>>> mappedGroupRecvd2;
    +
    128 std::vector<std::vector<std::vector<std::vector<double>>>>
    + +
    130 std::vector<std::vector<std::vector<std::vector<int>>>> send_buf_size;
    +
    131 std::vector<std::vector<std::vector<std::vector<int>>>> recv_buf_size;
    +
    132 std::vector<std::vector<std::vector<std::vector<double>>>> rhoRecvd,
    + +
    134 std::vector<std::vector<std::vector<std::vector<int>>>> groupOffsets;
    +
    135 /**
    +
    136 * Data sizes and offsets required for MPI scattering and gathering of
    +
    137 * mapping tables and symmetrized density They have to be data members since
    +
    138 * the same sizes and offsets are used in both communication mapping tables
    +
    139 * and symmetrized density
    +
    140 */
    +
    141 unsigned int totPoints;
    + + + +
    145 std::vector<int> recvdData0, recvdData2, recvdData3;
    +
    146 std::vector<std::vector<double>> recvdData1;
    + +
    148 //
    +
    149 };
    +
    +
    150} // namespace dftfe
    +
    151#endif
    +
    This class is the primary interface location of all other parts of the DFT-FE code for all steps invo...
    Definition dft.h:108
    +
    density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculation...
    Definition symmetry.h:39
    +
    std::vector< int > mpi_offsets0
    Definition symmetry.h:144
    +
    dealii::FE_Q< 3 > FE
    Definition symmetry.h:87
    +
    unsigned int totPoints
    Definition symmetry.h:141
    +
    std::vector< std::vector< double > > recvdData1
    Definition symmetry.h:146
    +
    std::vector< int > mpi_scatterGrad_offset
    Definition symmetry.h:143
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > recv_buf_size
    Definition symmetry.h:131
    +
    std::vector< int > recv_size1
    Definition symmetry.h:147
    + +
    std::vector< int > mpi_offsets1
    Definition symmetry.h:144
    +
    std::map< dealii::CellId, int > globalCellId
    Definition symmetry.h:117
    +
    std::vector< std::vector< std::vector< std::vector< double > > > > mappedGroupRecvd1
    Definition symmetry.h:129
    +
    double translation[500][3]
    Definition symmetry.h:104
    +
    std::vector< std::vector< std::vector< std::vector< double > > > > rhoRecvd
    Definition symmetry.h:132
    + +
    const MPI_Comm mpi_communicator
    Definition symmetry.h:95
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > mappedGroupSend0
    Definition symmetry.h:122
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > groupOffsets
    Definition symmetry.h:134
    +
    std::vector< int > send_scatterGrad_size
    Definition symmetry.h:143
    +
    std::map< int, typename dealii::DoFHandler< 3 >::active_cell_iterator > dealIICellId
    Definition symmetry.h:116
    +
    std::vector< std::vector< int > > symmUnderGroup
    Definition symmetry.h:105
    +
    std::vector< std::vector< std::vector< std::tuple< int, int, int > > > > mappedGroup
    Definition symmetry.h:114
    +
    unsigned int numSymm
    Definition symmetry.h:103
    +
    void computeAndSymmetrize_rhoOut()
    +
    std::vector< int > mpiGrad_offsets1
    Definition symmetry.h:144
    +
    const MPI_Comm interpoolcomm
    Definition symmetry.h:95
    +
    std::vector< int > ownerProcGlobal
    Definition symmetry.h:118
    +
    const unsigned int n_mpi_processes
    Definition symmetry.h:96
    +
    const unsigned int this_mpi_process
    Definition symmetry.h:97
    +
    std::map< dealii::CellId, std::vector< std::tuple< int, std::vector< double >, int > > > cellMapTable
    Definition symmetry.h:112
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > send_buf_size
    Definition symmetry.h:130
    +
    std::vector< int > recv_size
    Definition symmetry.h:142
    +
    dealii::ConditionalOStream pcout
    Definition symmetry.h:98
    +
    symmetryClass(dftClass< FEOrder, FEOrderElectro > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &_interpoolcomm)
    +
    std::vector< int > numSymmUnderGroup
    Definition symmetry.h:106
    +
    std::vector< int > recv_size0
    Definition symmetry.h:147
    +
    std::vector< std::vector< std::vector< int > > > mappedGroupRecvd0
    Definition symmetry.h:126
    +
    std::vector< int > recvGrad_size1
    Definition symmetry.h:147
    +
    dealii::TimerOutput computing_timer
    Definition symmetry.h:91
    +
    std::vector< int > recvdData2
    Definition symmetry.h:145
    + +
    dealii::Point< 3 > crys2cart(dealii::Point< 3 > p, int flag)
    +
    std::vector< std::vector< std::vector< double > > > symmMat
    Definition symmetry.h:102
    +
    dftClass< FEOrder, FEOrderElectro > * dftPtr
    Definition symmetry.h:83
    +
    const MPI_Comm d_mpiCommParent
    Definition symmetry.h:95
    +
    std::vector< int > mpi_scatter_offset
    Definition symmetry.h:142
    +
    std::vector< int > recvdData3
    Definition symmetry.h:145
    +
    std::vector< int > recvdData0
    Definition symmetry.h:145
    +
    std::vector< int > send_scatter_size
    Definition symmetry.h:142
    +
    std::vector< std::vector< std::vector< std::vector< std::vector< double > > > > > mappedGroupSend1
    Definition symmetry.h:125
    +
    std::vector< std::vector< std::vector< int > > > mappedGroupRecvd2
    Definition symmetry.h:127
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > mappedGroupSend2
    Definition symmetry.h:123
    +
    std::vector< std::vector< std::vector< std::vector< double > > > > gradRhoRecvd
    Definition symmetry.h:133
    + + + +
    Definition upfToxml.cc:37
    +
    + + + + 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..71c8a4704 --- /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;color:var(--nav-menu-foreground-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: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..258256763 --- /dev/null +++ b/triangulation_manager_8h.html @@ -0,0 +1,105 @@ + + + + + + + +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..04ee19e87 --- /dev/null +++ b/triangulation_manager_8h_source.html @@ -0,0 +1,548 @@ + + + + + + + +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 */
    +
    51 triangulationManager(const MPI_Comm & mpi_comm_parent,
    +
    52 const MPI_Comm & mpi_comm_domain,
    +
    53 const MPI_Comm & interpoolcomm,
    +
    54 const MPI_Comm & interBandGroupComm,
    +
    55 const unsigned int FEOrder,
    +
    56 const dftParameters &dftParams);
    +
    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 * @param generateElectrostaticsTria bool to toggle to generate separate tria for electrostatics
    +
    74 */
    +
    75 void
    + +
    77 const std::vector<std::vector<double>> &atomLocations,
    +
    78 const std::vector<std::vector<double>> &imageAtomLocations,
    +
    79 const std::vector<int> & imageIds,
    +
    80 const std::vector<double> & nearestAtomDistances,
    +
    81 const std::vector<std::vector<double>> &domainBoundingVectors,
    +
    82 const bool generateSerialTria,
    +
    83 const bool generateElectrostaticsTria);
    +
    84
    +
    85
    +
    86
    +
    87 /** @brief generates the coarse meshes for restart.
    +
    88 *
    +
    89 * @param atomLocations vector containing cartesian coordinates at atoms with
    +
    90 * respect to origin (center of domain).
    +
    91 * @param imageAtomLocations vector containing cartesian coordinates of image
    +
    92 * atoms with respect to origin.
    +
    93 * @param domainBoundingVectors vector of domain bounding vectors (refer to
    +
    94 * description of input parameters.
    +
    95 * @param generateSerialMesh bool to toggle to generation of serial tria
    +
    96 */
    +
    97 void
    + +
    99 const std::vector<std::vector<double>> &atomLocations,
    +
    100 const std::vector<std::vector<double>> &imageAtomLocations,
    +
    101 const std::vector<int> & imageIds,
    +
    102 const std::vector<double> & nearestAtomDistances,
    +
    103 const std::vector<std::vector<double>> &domainBoundingVectors,
    +
    104 const bool generateSerialTria);
    +
    105
    +
    106
    +
    107 /**
    +
    108 * @brief returns generates A-posteriori refined mesh
    +
    109 *
    +
    110 * @param dofHandler corresponds to starting mesh which has to refined
    +
    111 * @param parallelTriangulation corresponds to starting triangulation
    +
    112 * @param eigenVectorsArrayIn solution vectors used to compute errors in each cell required for refinement
    +
    113 * @param FEOrder finite-element interpolating polynomial
    +
    114 * @param generateElectrostaticsTria required for generating electrostatics triangulation
    +
    115 */
    +
    116 void
    + +
    118 const dealii::DoFHandler<3> & dofHandler,
    +
    119 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation,
    +
    120 const std::vector<distributedCPUVec<double>> & eigenVectorsArrayIn,
    +
    121 const unsigned int FEOrder,
    +
    122 const bool generateElectrostaticsTria);
    +
    123
    +
    124
    +
    125 /**
    +
    126 * @brief returns constant reference to serial unmoved triangulation
    +
    127 *
    +
    128 */
    +
    129 dealii::parallel::distributed::Triangulation<3> &
    + +
    131
    +
    132 /**
    +
    133 * @brief returns constant reference to serial unmoved triangulation
    +
    134 *
    +
    135 */
    +
    136 dealii::parallel::distributed::Triangulation<3> &
    + +
    138
    +
    139 /**
    +
    140 * @brief returns reference to parallel moved triangulation
    +
    141 *
    +
    142 */
    +
    143 dealii::parallel::distributed::Triangulation<3> &
    + +
    145
    +
    146 /**
    +
    147 * @brief returns constant reference to parallel unmoved triangulation
    +
    148 *
    +
    149 */
    +
    150 dealii::parallel::distributed::Triangulation<3> &
    + +
    152
    +
    153
    +
    154 /**
    +
    155 * @brief returns constant reference to triangulation to compute electrostatics
    +
    156 *
    +
    157 */
    +
    158 dealii::parallel::distributed::Triangulation<3> &
    + +
    160
    +
    161
    +
    162 /**
    +
    163 * @brief returns constant reference to triangulation to compute electrostatics
    +
    164 *
    +
    165 */
    +
    166 dealii::parallel::distributed::Triangulation<3> &
    + +
    168
    +
    169
    +
    170 /**
    +
    171 * @brief returns constant reference to triangulation to compute electrostatics
    +
    172 *
    +
    173 */
    +
    174 dealii::parallel::distributed::Triangulation<3> &
    + +
    176
    +
    177 /**
    +
    178 * @brief resets the vertices of meshB moved to vertices of meshA.
    +
    179 *
    +
    180 */
    + +
    182 dealii::parallel::distributed::Triangulation<3> &parallelTriangulationA,
    +
    183 dealii::parallel::distributed::Triangulation<3> &parallelTriangulationB);
    +
    184
    +
    185 /**
    +
    186 * @brief generates reset meshes to the last mesh generated by auto mesh approach. This
    +
    187 * is used in Gaussian update of meshes during electrostatics
    +
    188 */
    +
    189 void
    + +
    191 const std::vector<std::vector<double>> &domainBoundingVectors,
    +
    192 const bool generateSerialTria,
    +
    193 const bool generateElectrostaticsTria);
    +
    194
    +
    195
    +
    196 /**
    +
    197 * @brief serialize the triangulations and the associated solution vectors
    +
    198 *
    +
    199 * @param [input]feOrder finite element polynomial order of the dofHandler on which solution
    +
    200 * vectors are based upon
    +
    201 * @param [input]nComponents number of components of the dofHandler on which solution
    +
    202 * vectors are based upon
    +
    203 * @param [input]solutionVectors vector of parallel distributed solution vectors to be serialized
    +
    204 * @param [input]interpoolComm This communicator is used to ensure serialization
    +
    205 * happens only in k point pool
    +
    206 * @param [input]interBandGroupComm This communicator to ensure serialization happens
    +
    207 * only in band group
    +
    208 */
    +
    209 void
    + +
    211 std::string path,
    +
    212 const unsigned int feOrder,
    +
    213 const unsigned int nComponents,
    +
    214 const std::vector<const distributedCPUVec<double> *> &solutionVectors,
    +
    215 const MPI_Comm & interpoolComm,
    +
    216 const MPI_Comm & interBandGroupComm);
    +
    217
    +
    218 /**
    +
    219 * @brief de-serialize the triangulations and the associated solution vectors
    +
    220 *
    +
    221 * @param [input]feOrder finite element polynomial order of the dofHandler on which solution
    +
    222 * vectors to be de-serialized are based upon
    +
    223 * @param [input]nComponents number of components of the dofHandler on which solution
    +
    224 * vectors to be de-serialized are based upon
    +
    225 * @param [output]solutionVectors vector of parallel distributed de-serialized solution vectors. The
    +
    226 * vector length must match the input vector length used in the call to
    +
    227 * saveTriangulationSolutionVectors
    +
    228 */
    +
    229 void
    + +
    231 std::string path,
    +
    232 const unsigned int feOrder,
    +
    233 const unsigned int nComponents,
    +
    234 std::vector<distributedCPUVec<double> *> &solutionVectors);
    +
    235
    +
    236 private:
    +
    237 /**
    +
    238 * @brief internal function which generates a parallel and serial mesh using a adaptive refinement strategy.
    +
    239 *
    +
    240 */
    + +
    242 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation,
    +
    243 dealii::parallel::distributed::Triangulation<3> &serialTriangulation,
    +
    244 dealii::parallel::distributed::Triangulation<3>
    +
    245 &serialTriangulationElectrostatics,
    +
    246 dealii::parallel::distributed::Triangulation<3>
    +
    247 &electrostaticsTriangulationRho,
    +
    248 dealii::parallel::distributed::Triangulation<3>
    +
    249 &electrostaticsTriangulationDisp,
    +
    250 dealii::parallel::distributed::Triangulation<3>
    +
    251 & electrostaticsTriangulationForce,
    +
    252 const bool generateElectrostaticsTria,
    +
    253 const bool generateSerialTria = false);
    +
    254
    +
    255
    +
    256 /**
    +
    257 * @brief internal function which generates a coarse mesh which is required for the load function call in
    +
    258 * restarts.
    +
    259 *
    +
    260 */
    + +
    262 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation);
    +
    263
    +
    264 /**
    +
    265 * @brief internal function which sets refinement flags based on a custom created algorithm
    +
    266 *
    +
    267 * @return bool boolean flag is any local cell has refinement flag set
    +
    268 */
    + +
    270 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation,
    +
    271 dealii::parallel::distributed::Triangulation<3>
    +
    272 &electrostaticsTriangulationRho,
    +
    273 dealii::parallel::distributed::Triangulation<3>
    +
    274 &electrostaticsTriangulationDisp,
    +
    275 dealii::parallel::distributed::Triangulation<3>
    +
    276 & electrostaticsTriangulationForce,
    +
    277 const bool generateElectrostaticsTria,
    +
    278 std::vector<unsigned int> & locallyOwnedCellsRefineFlags,
    +
    279 std::map<dealii::CellId, unsigned int> &cellIdToCellRefineFlagMapLocal,
    +
    280 const bool smoothenCellsOnPeriodicBoundary = false,
    +
    281 const double smootheningFactor = 2.0);
    +
    282
    +
    283 /**
    +
    284 * @brief internal function which sets refinement flags to have consistent refinement across periodic
    +
    285 * boundary
    +
    286 *
    +
    287 * @return bool boolean flag is any local cell has refinement flag set
    +
    288 */
    + +
    290 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation,
    +
    291 dealii::parallel::distributed::Triangulation<3>
    +
    292 &electrostaticsTriangulationRho,
    +
    293 dealii::parallel::distributed::Triangulation<3>
    +
    294 &electrostaticsTriangulationDisp,
    +
    295 dealii::parallel::distributed::Triangulation<3>
    +
    296 & electrostaticsTriangulationForce,
    +
    297 const bool generateElectrostaticsTria,
    +
    298 std::vector<unsigned int> & locallyOwnedCellsRefineFlags,
    +
    299 std::map<dealii::CellId, unsigned int> &cellIdToCellRefineFlagMapLocal);
    +
    300
    +
    301 /**
    +
    302 * @brief check that triangulation has consistent refinement across periodic boundary including
    +
    303 * for ghost cells
    +
    304 *
    +
    305 */
    + +
    307 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation);
    +
    308
    +
    309
    +
    310 /**
    +
    311 * @brief check that FEOrder=1 dofHandler using the triangulation has parallel consistent
    +
    312 * combined hanging node and periodic constraints
    +
    313 *
    +
    314 */
    + +
    316 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation);
    +
    317
    +
    318
    +
    319 /**
    +
    320 * @brief internal function which refines the serial mesh based on refinement flags from parallel mesh.
    +
    321 * This ensures that we get the same mesh in serial and parallel.
    +
    322 *
    +
    323 */
    +
    324 void
    + +
    326 const std::map<dealii::CellId, unsigned int>
    +
    327 & cellIdToCellRefineFlagMapLocal,
    +
    328 const MPI_Comm &mpi_comm,
    +
    329 dealii::parallel::distributed::Triangulation<3> &serialTriangulation,
    +
    330 const dealii::parallel::distributed::Triangulation<3>
    +
    331 & parallelTriangulation,
    +
    332 std::vector<bool> &serialTriaCurrentRefinement);
    +
    333
    +
    334 /**
    +
    335 * @brief internal function to serialize support triangulations. No solution data is attached to them
    +
    336 */
    +
    337 void
    +
    338 saveSupportTriangulations(std::string path);
    +
    339
    +
    340 /**
    +
    341 * @brief internal function to de-serialize support triangulations. No solution data is read from them
    +
    342 */
    +
    343 void
    +
    344 loadSupportTriangulations(std::string path);
    +
    345
    +
    346 //
    +
    347 // data members
    +
    348 //
    +
    349 dealii::parallel::distributed::Triangulation<3>
    + +
    351 dealii::parallel::distributed::Triangulation<3>
    + +
    353 dealii::parallel::distributed::Triangulation<3>
    + +
    355 dealii::parallel::distributed::Triangulation<3>
    + +
    357 dealii::parallel::distributed::Triangulation<3>
    + +
    359 dealii::parallel::distributed::Triangulation<3>
    + +
    361 dealii::parallel::distributed::Triangulation<3>
    + +
    363
    +
    364 std::vector<std::vector<bool>> d_parallelTriaCurrentRefinement;
    +
    365 std::vector<std::vector<bool>> d_serialTriaCurrentRefinement;
    +
    366
    +
    367
    +
    368 std::vector<std::vector<double>> d_atomPositions;
    +
    369 std::vector<std::vector<double>> d_imageAtomPositions;
    +
    370 std::vector<int> d_imageIds;
    +
    371 std::vector<double> d_nearestAtomDistances;
    +
    372 std::vector<std::vector<double>> d_domainBoundingVectors;
    +
    373 const unsigned int d_max_refinement_steps = 40;
    +
    374
    +
    375 /// FEOrder to be used for checking parallel consistency of periodic+hanging
    +
    376 /// node constraints
    +
    377 const unsigned int d_FEOrder;
    +
    378
    + +
    380
    +
    381 //
    +
    382 // parallel objects
    +
    383 //
    +
    384 const MPI_Comm d_mpiCommParent;
    +
    385 const MPI_Comm mpi_communicator;
    +
    386 const MPI_Comm interpoolcomm;
    +
    387 const MPI_Comm interBandGroupComm;
    +
    388 const unsigned int this_mpi_process;
    +
    389 const unsigned int n_mpi_processes;
    +
    390 dealii::ConditionalOStream pcout;
    +
    391
    +
    392 //
    +
    393 // compute-time logger
    +
    394 //
    +
    395 dealii::TimerOutput computing_timer;
    +
    396 };
    +
    +
    397
    +
    398} // namespace dftfe
    +
    399#endif
    +
    Namespace which declares the input parameters and the functions to parse them from the input paramete...
    Definition dftParameters.h:35
    +
    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
    +
    bool refinementAlgorithmA(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, 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
    +
    dealii::parallel::distributed::Triangulation< 3 > & getParallelMeshMoved()
    returns reference to parallel moved triangulation
    +
    std::vector< int > d_imageIds
    Definition triangulationManager.h:370
    +
    std::vector< std::vector< bool > > d_parallelTriaCurrentRefinement
    Definition triangulationManager.h:364
    +
    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:386
    +
    std::vector< std::vector< double > > d_domainBoundingVectors
    Definition triangulationManager.h:372
    +
    std::vector< std::vector< double > > d_atomPositions
    Definition triangulationManager.h:368
    +
    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
    +
    dealii::parallel::distributed::Triangulation< 3 > & getElectrostaticsMeshDisp()
    returns constant reference to triangulation to compute electrostatics
    +
    const dftParameters & d_dftParams
    Definition triangulationManager.h:379
    +
    const unsigned int d_FEOrder
    Definition triangulationManager.h:377
    +
    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:388
    +
    bool consistentPeriodicBoundaryRefinement(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, 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 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...
    +
    dealii::parallel::distributed::Triangulation< 3 > d_triangulationElectrostaticsForce
    Definition triangulationManager.h:358
    +
    dealii::parallel::distributed::Triangulation< 3 > & getElectrostaticsMeshRho()
    returns constant reference to triangulation to compute electrostatics
    +
    void loadSupportTriangulations(std::string path)
    internal function to de-serialize support triangulations. No solution data is read from them
    +
    dealii::ConditionalOStream pcout
    Definition triangulationManager.h:390
    +
    dealii::parallel::distributed::Triangulation< 3 > & getElectrostaticsMeshForce()
    returns constant reference to triangulation to compute electrostatics
    +
    const MPI_Comm interBandGroupComm
    Definition triangulationManager.h:387
    +
    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:350
    +
    dealii::parallel::distributed::Triangulation< 3 > d_serialTriangulationElectrostatics
    Definition triangulationManager.h:362
    +
    std::vector< std::vector< bool > > d_serialTriaCurrentRefinement
    Definition triangulationManager.h:365
    +
    void generateResetMeshes(const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria, const bool generateElectrostaticsTria)
    generates reset meshes to the last mesh generated by auto mesh approach. This is used in Gaussian upd...
    +
    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, const bool generateElectrostaticsTria)
    generates parallel moved and unmoved meshes, and serial unmoved mesh.
    +
    const unsigned int d_max_refinement_steps
    Definition triangulationManager.h:373
    +
    dealii::TimerOutput computing_timer
    Definition triangulationManager.h:395
    +
    void generateMesh(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulation, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulationElectrostatics, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationRho, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationDisp, dealii::parallel::distributed::Triangulation< 3 > &electrostaticsTriangulationForce, const bool generateElectrostaticsTria, const bool generateSerialTria=false)
    internal function which generates a parallel and serial mesh using a adaptive refinement strategy.
    +
    dealii::parallel::distributed::Triangulation< 3 > & getSerialMeshElectrostatics()
    returns constant reference to serial unmoved triangulation
    +
    void generateAutomaticMeshApriori(const dealii::DoFHandler< 3 > &dofHandler, dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, const std::vector< distributedCPUVec< double > > &eigenVectorsArrayIn, const unsigned int FEOrder, const bool generateElectrostaticsTria)
    returns generates A-posteriori refined mesh
    +
    dealii::parallel::distributed::Triangulation< 3 > d_serialTriangulationUnmoved
    Definition triangulationManager.h:360
    +
    const unsigned int n_mpi_processes
    Definition triangulationManager.h:389
    +
    dealii::parallel::distributed::Triangulation< 3 > d_triangulationElectrostaticsDisp
    Definition triangulationManager.h:356
    +
    const MPI_Comm mpi_communicator
    Definition triangulationManager.h:385
    +
    const MPI_Comm d_mpiCommParent
    Definition triangulationManager.h:384
    +
    dealii::parallel::distributed::Triangulation< 3 > d_triangulationElectrostaticsRho
    Definition triangulationManager.h:354
    +
    std::vector< std::vector< double > > d_imageAtomPositions
    Definition triangulationManager.h:369
    +
    dealii::parallel::distributed::Triangulation< 3 > & getSerialMeshUnmoved()
    returns constant reference to serial unmoved triangulation
    + +
    std::vector< double > d_nearestAtomDistances
    Definition triangulationManager.h:371
    +
    dealii::parallel::distributed::Triangulation< 3 > d_parallelTriangulationMoved
    Definition triangulationManager.h:352
    + + +
    Definition upfToxml.cc:37
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:99
    +
    + + + + diff --git a/upf_toxml_8cc.html b/upf_toxml_8cc.html new file mode 100644 index 000000000..4db35076d --- /dev/null +++ b/upf_toxml_8cc.html @@ -0,0 +1,125 @@ + + + + + + + +DFT-FE: workspace/pseudoConverters/upfToxml.cc File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    upfToxml.cc File Reference
    +
    +
    +
    #include "upfToxml.h"
    +#include <boost/algorithm/string/trim.hpp>
    +#include <PeriodicTable.h>
    +#include <cassert>
    +#include <cmath>
    +#include <cstdlib>
    +#include <fstream>
    +#include <iomanip>
    +#include <iostream>
    +#include <sstream>
    +#include <stdexcept>
    +#include <string>
    +#include <vector>
    +
    + + + + + + +

    +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::string dftfe::pseudoUtils::find_start_element (std::string name, std::ifstream &upfFile)
     
    void dftfe::pseudoUtils::find_end_element (std::string name, std::ifstream &upfFile)
     
    void dftfe::pseudoUtils::seek_str (std::string tag, std::ifstream &upfFile)
     
    std::string dftfe::pseudoUtils::get_attr (std::string buf, std::string attr)
     
    int dftfe::pseudoUtils::upfToxml (const std::string &inputFile, const std::string &outputFile, const int verbosity, unsigned int &nlccFlag)
     read a given upf pseudopotential file name in upf format and convert to xml format
     
    +
    + + + + diff --git a/upf_toxml_8h.html b/upf_toxml_8h.html new file mode 100644 index 000000000..2e76017a5 --- /dev/null +++ b/upf_toxml_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/pseudoConverters/upfToxml.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    upfToxml.h File Reference
    +
    +
    +
    #include <dftParameters.h>
    +#include <headers.h>
    +#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

    int dftfe::pseudoUtils::upfToxml (const std::string &inputFile, const std::string &outputFile, const int verbosity, unsigned int &nlccFlag)
     read a given upf pseudopotential file name in upf format and convert to xml format
     
    +
    + + + + diff --git a/upf_toxml_8h_source.html b/upf_toxml_8h_source.html new file mode 100644 index 000000000..4106d8097 --- /dev/null +++ b/upf_toxml_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +DFT-FE: workspace/pseudoConverters/upfToxml.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    upfToxml.h
    +
    +
    +Go to the documentation of this file.
    1// --------------------------------------------------------------------------------------
    +
    2//
    +
    3//
    +
    4// This header file is for upfToxml.cc adapted from upf2qso.C which is a part of
    +
    5// Qbox
    +
    6// (https://github.com/qboxcode/qbox-public/blob/master/util/upf2qso/src/upf2qso.C)
    +
    7//
    +
    8// Qbox is distributed under the terms of the GNU General Public License
    +
    9// as published by the Free Software Foundation, either version 2 of
    +
    10// the License, or (at your option) any later version.
    +
    11// See the file COPYING in the root directory of this distribution
    +
    12// or <http://www.gnu.org/licenses/>.
    +
    13//
    +
    14// This .h file is added by Phani Motamarri to integrate with DFT-FE code
    +
    15// -------------------------------------------------------------------------------------
    +
    16//
    +
    17//
    +
    18
    +
    19#ifndef upfToxml_h
    +
    20#define upfToxml_h
    +
    21#include <dftParameters.h>
    +
    22#include <headers.h>
    +
    23
    +
    24#include <string>
    +
    25
    +
    26#include "string.h"
    +
    27
    +
    28namespace dftfe
    +
    29{
    +
    30 //
    +
    31 // Declare pseudoUtils function
    +
    32 //
    +
    33
    +
    34 /** @file upfxml.h
    +
    35 * @brief converts pseudopotential file from upf to xml format
    +
    36 *
    +
    37 * The functionality reads the upfile and identifies appropriate tags and
    +
    38 * converts into xml file format
    +
    39 *
    +
    40 * @author Phani Motamarri
    +
    41 */
    +
    42 namespace pseudoUtils
    +
    43 {
    +
    44 /**
    +
    45 * @brief read a given upf pseudopotential file name in upf format and convert to xml format
    +
    46 *
    +
    47 * @param inputFile filePath location of the upf file
    +
    48 * @param outputFile filePath location of xml file
    +
    49 * @param nlccFlag flag indicating the nonlinear core-correction
    +
    50 *
    +
    51 * @return int errorCode indicating success or failure of conversion
    +
    52 */
    +
    53 int
    +
    54 upfToxml(const std::string &inputFile,
    +
    55 const std::string &outputFile,
    +
    56 const int verbosity,
    +
    57 unsigned int & nlccFlag);
    +
    58 } // namespace pseudoUtils
    +
    59} // namespace dftfe
    +
    60#endif
    + + +
    int upfToxml(const std::string &inputFileName, const std::string &outputFileName, const int verbosity, unsigned int &nlccFlag)
    read a given upf pseudopotential file name in upf format and convert to xml format
    Definition upfToxml.cc:152
    +
    Definition upfToxml.cc:37
    +
    + + + + diff --git a/vector_utilities_8h.html b/vector_utilities_8h.html new file mode 100644 index 000000000..bad6b2398 --- /dev/null +++ b/vector_utilities_8h.html @@ -0,0 +1,139 @@ + + + + + + + +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..52dd945c1 --- /dev/null +++ b/vector_utilities_8h_source.html @@ -0,0 +1,547 @@ + + + + + + + +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,
    +
    48 const MPI_Comm & mpi_comm_parent,
    +
    49 const MPI_Comm & mpi_comm_domain,
    +
    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>
    +
    71 & partitioner,
    +
    72 const unsigned int blockSize,
    +
    73 distributedCPUVec<T> &flattenedArray);
    +
    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<
    + +
    90 & partitioner,
    +
    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>>
    +
    95 &flattenedArrayMacroCellLocalProcIndexId,
    +
    96 std::vector<std::vector<dealii::types::global_dof_index>>
    +
    97 &flattenedArrayCellLocalProcIndexId);
    +
    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>
    +
    118 & flattenedArrayMacroCellLocalProcIndexId,
    +
    119 std::vector<unsigned int> &normalCellIdToMacroCellIdMap,
    +
    120 std::vector<unsigned int> &macroCellIdToNormalCellIdMap,
    +
    121 std::vector<dealii::types::global_dof_index>
    +
    122 &flattenedArrayCellLocalProcIndexId);
    +
    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>
    +
    142 &flattenedArrayCellLocalProcIndexId);
    +
    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>
    +
    177 &localProcDofIndicesReal,
    +
    178 const std::vector<dealii::types::global_dof_index>
    +
    179 & localProcDofIndicesImag,
    +
    180 std::vector<distributedCPUVec<double>> &componentVectors);
    +
    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
    +
    189 std::vector<distributedCPUVec<double>> &componentVectors);
    +
    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,
    +
    215 std::vector<distributedCPUVec<double>> & componentVectors);
    +
    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>
    +
    253 &localProcDofIndicesReal,
    +
    254 const std::vector<dealii::types::global_dof_index>
    +
    255 & localProcDofIndicesImag,
    +
    256 std::vector<distributedCPUVec<double>> &componentVectors,
    +
    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
    + +
    282 const distributedCPUVec<double> & flattenedArray,
    +
    283 const unsigned int totalNumberComponents,
    +
    284 const std::pair<unsigned int, unsigned int> componentIndexRange,
    +
    285 std::vector<distributedCPUVec<double>> & componentVectors,
    +
    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>
    +
    321 &localProcDofIndicesReal,
    +
    322 const std::vector<dealii::types::global_dof_index>
    +
    323 & localProcDofIndicesImag,
    +
    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
    + +
    346 distributedCPUVec<double> & flattenedArray,
    +
    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>
    +
    384 &localProcDofIndicesReal,
    +
    385 const std::vector<dealii::types::global_dof_index>
    +
    386 & localProcDofIndicesImag,
    +
    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
    +
    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 upfToxml.cc:37
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:99
    + +
    + + + + diff --git a/vself_bins_manager_8h.html b/vself_bins_manager_8h.html new file mode 100644 index 000000000..bb98717da --- /dev/null +++ b/vself_bins_manager_8h.html @@ -0,0 +1,127 @@ + + + + + + + +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"
    +
    +

    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
     
    + + + +

    +Macros

    #define vselfBinsManager_H_
     
    +

    Macro Definition Documentation

    + +

    ◆ vselfBinsManager_H_

    + +
    +
    + + + + +
    #define vselfBinsManager_H_
    +
    + +
    +
    +
    + + + + diff --git a/vself_bins_manager_8h_source.html b/vself_bins_manager_8h_source.html new file mode 100644 index 000000000..514148311 --- /dev/null +++ b/vself_bins_manager_8h_source.html @@ -0,0 +1,502 @@ + + + + + + + +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#if defined(DFTFE_WITH_DEVICE)
    +
    22# include <operatorDevice.h>
    +
    23#endif
    +
    24
    +
    25#ifndef vselfBinsManager_H_
    +
    26# define vselfBinsManager_H_
    +
    27
    +
    28namespace dftfe
    +
    29{
    +
    30 /**
    +
    31 * @brief Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential.
    +
    32 * template parameter FEOrderElectro is the finite element polynomial order.
    +
    33 *
    +
    34 * @author Sambit Das, Phani Motamarri
    +
    35 */
    +
    36 template <unsigned int FEOrder, unsigned int FEOrderElectro>
    +
    + +
    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 */
    +
    46 vselfBinsManager(const MPI_Comm & mpi_comm_parent,
    +
    47 const MPI_Comm & mpi_comm_domain,
    +
    48 const MPI_Comm & mpi_intercomm_kpts,
    +
    49 const dftParameters &dftParams);
    +
    50
    +
    51
    +
    52 /**
    +
    53 * @brief Categorize atoms into bins based on self-potential ball radius
    +
    54 * around each atom such that no two atoms in each bin has overlapping
    +
    55 * balls.
    +
    56 *
    +
    57 * @param[out] constraintsVector constraintsVector to which the vself bins
    +
    58 * solve constraint matrices will be pushed back
    +
    59 * @param[in] dofHandler DofHandler object
    +
    60 * @param[in] constraintMatrix dealii::AffineConstraints<double> which was
    +
    61 * used for the total electrostatics solve
    +
    62 * @param[in] atomLocations global atom locations and charge values data
    +
    63 * @param[in] imagePositions image atoms positions data
    +
    64 * @param[in] imageIds image atoms Ids data
    +
    65 * @param[in] imageCharges image atoms charge values data
    +
    66 * @param[in] radiusAtomBall self-potential ball radius
    +
    67 */
    +
    68 void
    + +
    70 std::vector<const dealii::AffineConstraints<double> *> &constraintsVector,
    +
    71 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
    +
    72 const dealii::DoFHandler<3> & dofHandler,
    +
    73 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    74 const std::vector<std::vector<double>> & atomLocations,
    +
    75 const std::vector<std::vector<double>> & imagePositions,
    +
    76 const std::vector<int> & imageIds,
    +
    77 const std::vector<double> & imageCharges,
    +
    78 const double radiusAtomBall);
    +
    79
    +
    80 /**
    +
    81 * @brief Categorize atoms into bins based on self-potential ball radius
    +
    82 * around each atom such that no two atoms in each bin has overlapping
    +
    83 * balls.
    +
    84 *
    +
    85 * @param[out] constraintsVector constraintsVector to which the vself bins
    +
    86 * solve constraint matrices will be pushed back
    +
    87 * @param[in] dofHandler DofHandler object
    +
    88 * @param[in] constraintMatrix dealii::AffineConstraints<double> which was
    +
    89 * used for the total electrostatics solve
    +
    90 * @param[in] atomLocations global atom locations and charge values data
    +
    91 * @param[in] imagePositions image atoms positions data
    +
    92 * @param[in] imageIds image atoms Ids data
    +
    93 * @param[in] imageCharges image atoms charge values data
    +
    94 */
    +
    95 void
    + +
    97 std::vector<const dealii::AffineConstraints<double> *> &constraintsVector,
    +
    98 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
    +
    99 const dealii::DoFHandler<3> & dofHandler,
    +
    100 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    101 const std::vector<std::vector<double>> & atomLocations,
    +
    102 const std::vector<std::vector<double>> & imagePositions,
    +
    103 const std::vector<int> & imageIds,
    +
    104 const std::vector<double> & imageCharges,
    +
    105 const bool vselfPerturbationUpdateForStress = false);
    +
    106
    +
    107
    +
    108 /**
    +
    109 * @brief Solve nuclear electrostatic self-potential of atoms in each bin one-by-one
    +
    110 *
    +
    111 * @param[in] matrix_free_data MatrixFree object
    +
    112 * @param[in] offset MatrixFree object starting offset for vself bins solve
    +
    113 * @param[out] phiExt sum of the self-potential fields of all atoms and
    +
    114 * image atoms
    +
    115 * @param[in] phiExtConstraintMatrix constraintMatrix corresponding to
    +
    116 * phiExt
    +
    117 * @param[in] imagePositions image atoms positions data
    +
    118 * @param[in] imageIds image atoms Ids data
    +
    119 * @param[in] imageCharges image atoms charge values data *
    +
    120 * @param[out] localVselfs peak self-potential values of atoms in the local
    +
    121 * processor
    +
    122 */
    +
    123 void
    + +
    125 const dealii::MatrixFree<3, double> & matrix_free_data,
    +
    126 const unsigned int offset,
    +
    127 const unsigned int matrixFreeQuadratureIdAX,
    +
    128 const dealii::AffineConstraints<double> &hangingPeriodicConstraintMatrix,
    +
    129 const std::vector<std::vector<double>> & imagePositions,
    +
    130 const std::vector<int> & imageIds,
    +
    131 const std::vector<double> & imageCharges,
    +
    132 std::vector<std::vector<double>> & localVselfs,
    +
    133 std::map<dealii::CellId, std::vector<double>> &bQuadValuesAllAtoms,
    +
    134 std::map<dealii::CellId, std::vector<int>> & bQuadAtomIdsAllAtoms,
    +
    135 std::map<dealii::CellId, std::vector<int>> & bQuadAtomIdsAllAtomsImages,
    +
    136 std::map<dealii::CellId, std::vector<unsigned int>>
    +
    137 &bCellNonTrivialAtomIds,
    +
    138 std::vector<std::map<dealii::CellId, std::vector<unsigned int>>>
    +
    139 &bCellNonTrivialAtomIdsBins,
    +
    140 std::map<dealii::CellId, std::vector<unsigned int>>
    +
    141 &bCellNonTrivialAtomImageIds,
    +
    142 std::vector<std::map<dealii::CellId, std::vector<unsigned int>>>
    +
    143 & bCellNonTrivialAtomImageIdsBins,
    +
    144 const std::vector<double> &smearingWidths,
    +
    145 std::vector<double> & smearedChargeScaling,
    +
    146 const unsigned int smearedChargeQuadratureId,
    +
    147 const bool useSmearedCharges = false,
    +
    148 const bool isVselfPerturbationSolve = false);
    +
    149
    +
    150# ifdef DFTFE_WITH_DEVICE
    +
    151 /**
    +
    152 * @brief Solve nuclear electrostatic self-potential of atoms in each bin one-by-one
    +
    153 *
    +
    154 * @param[in] matrix_free_data MatrixFree object
    +
    155 * @param[in] offset MatrixFree object starting offset for vself bins solve
    +
    156 * @param[out] phiExt sum of the self-potential fields of all atoms and
    +
    157 * image atoms
    +
    158 * @param[in] phiExtConstraintMatrix constraintMatrix corresponding to
    +
    159 * phiExt
    +
    160 * @param[in] imagePositions image atoms positions data
    +
    161 * @param[in] imageIds image atoms Ids data
    +
    162 * @param[in] imageCharges image atoms charge values data *
    +
    163 * @param[out] localVselfs peak self-potential values of atoms in the local
    +
    164 * processor
    +
    165 */
    +
    166 void
    +
    167 solveVselfInBinsDevice(
    +
    168 const dealii::MatrixFree<3, double> & matrix_free_data,
    +
    169 const unsigned int mfBaseDofHandlerIndex,
    +
    170 const unsigned int matrixFreeQuadratureIdAX,
    +
    171 const unsigned int offset,
    +
    172 operatorDFTDeviceClass & operatorMatrix,
    +
    173 const dealii::AffineConstraints<double> &hangingPeriodicConstraintMatrix,
    +
    174 const std::vector<std::vector<double>> & imagePositions,
    +
    175 const std::vector<int> & imageIds,
    +
    176 const std::vector<double> & imageCharges,
    +
    177 std::vector<std::vector<double>> & localVselfs,
    +
    178 std::map<dealii::CellId, std::vector<double>> &bQuadValuesAllAtoms,
    +
    179 std::map<dealii::CellId, std::vector<int>> & bQuadAtomIdsAllAtoms,
    +
    180 std::map<dealii::CellId, std::vector<int>> & bQuadAtomIdsAllAtomsImages,
    +
    181 std::map<dealii::CellId, std::vector<unsigned int>>
    +
    182 &bCellNonTrivialAtomIds,
    +
    183 std::vector<std::map<dealii::CellId, std::vector<unsigned int>>>
    +
    184 &bCellNonTrivialAtomIdsBins,
    +
    185 std::map<dealii::CellId, std::vector<unsigned int>>
    +
    186 &bCellNonTrivialAtomImageIds,
    +
    187 std::vector<std::map<dealii::CellId, std::vector<unsigned int>>>
    +
    188 & bCellNonTrivialAtomImageIdsBins,
    +
    189 const std::vector<double> &smearingWidths,
    +
    190 std::vector<double> & smearedChargeScaling,
    +
    191 const unsigned int smearedChargeQuadratureId,
    +
    192 const bool useSmearedCharges = false,
    +
    193 const bool isVselfPerturbationSolve = false);
    +
    194
    +
    195
    +
    196# endif
    +
    197
    +
    198 /**
    +
    199 * @brief Solve nuclear electrostatic self-potential of atoms in each bin in a perturbed domain (used for cell stress calculation)
    +
    200 *
    +
    201 */
    +
    202 void
    + +
    204 const dealii::MatrixFree<3, double> &matrix_free_data,
    +
    205 const unsigned int mfBaseDofHandlerIndex,
    +
    206 const unsigned int matrixFreeQuadratureIdAX,
    +
    207 const unsigned int offset,
    +
    208# ifdef DFTFE_WITH_DEVICE
    +
    209 operatorDFTDeviceClass &operatorMatrix,
    +
    210# endif
    +
    211 const dealii::AffineConstraints<double> &hangingPeriodicConstraintMatrix,
    +
    212 const std::vector<std::vector<double>> & imagePositions,
    +
    213 const std::vector<int> & imageIds,
    +
    214 const std::vector<double> & imageCharges,
    +
    215 const std::vector<double> & smearingWidths,
    +
    216 const unsigned int smearedChargeQuadratureId,
    +
    217 const bool useSmearedCharges = false);
    +
    218
    +
    219 /// get const reference map of binIds and atomIds
    +
    220 const std::map<int, std::set<int>> &
    + +
    222
    +
    223 /// get const reference map of binIds and atomIds
    +
    224 const std::map<int, std::set<int>> &
    + +
    226
    +
    227 /// get const reference to map of global dof index and vself solve boundary
    +
    228 /// flag in each bin
    +
    229 const std::vector<std::map<dealii::types::global_dof_index, int>> &
    + +
    231
    +
    232 /// get const reference to map of global dof index and vself solve boundary
    +
    233 /// flag in each bin
    +
    234 const std::vector<std::map<dealii::types::global_dof_index, int>> &
    + +
    236
    +
    237 /// get const reference to map of global dof index and vself field initial
    +
    238 /// value in each bin
    +
    239 const std::vector<std::map<dealii::types::global_dof_index, int>> &
    + +
    241
    +
    242 /// get const reference to map of global dof index and vself field initial
    +
    243 /// value in each bin
    +
    244 const std::vector<
    +
    245 std::map<dealii::types::global_dof_index, dealii::Point<3>>> &
    + +
    247
    +
    248 /// get const reference to solved vself fields
    +
    249 const std::vector<distributedCPUVec<double>> &
    + +
    251
    +
    252 /// get const reference to del{vself}/del{R_i} fields
    +
    253 const std::vector<distributedCPUVec<double>> &
    + +
    255
    +
    256 /// perturbation of vself solution field to be used to evaluate the
    +
    257 /// Gateaux derivative of vself field with respect to affine strain
    +
    258 /// components using central finite difference
    +
    259 const std::vector<distributedCPUVec<double>> &
    + +
    261
    +
    262 /// get const reference to d_atomIdBinIdMapLocalAllImages
    +
    263 const std::map<unsigned int, unsigned int> &
    + +
    265
    +
    266 /// get stored adaptive ball radius
    +
    267 double
    + +
    269
    +
    270
    +
    271 private:
    +
    272 /**
    +
    273 * @brief locate underlying fem nodes for atoms in bins.
    +
    274 *
    +
    275 */
    +
    276 void
    +
    277 locateAtomsInBins(const dealii::DoFHandler<3> &dofHandler);
    +
    278
    +
    279 /**
    +
    280 * @brief sanity check for Dirichlet boundary conditions on the vself balls in each bin
    +
    281 *
    +
    282 */
    +
    283 void
    + +
    285 const dealii::DoFHandler<3> & dofHandler,
    +
    286 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints);
    +
    287
    +
    288 /// storage for input atomLocations argument in createAtomBins function
    +
    289 std::vector<std::vector<double>> d_atomLocations;
    +
    290
    +
    291 /// storage for optimized constraints handling object
    + +
    293
    +
    294 /// vector of constraint matrices for vself bins
    +
    295 std::vector<dealii::AffineConstraints<double>> d_vselfBinConstraintMatrices;
    +
    296
    +
    297 /// map of binIds and atomIds
    +
    298 std::map<int, std::set<int>> d_bins;
    +
    299
    +
    300 /// map of binIds and atomIds and imageIds
    +
    301 std::map<int, std::set<int>> d_binsImages;
    +
    302
    +
    303 /// map of global dof index and vself solve boundary flag (chargeId or
    +
    304 // imageId+numberGlobalCharges) in each bin
    +
    305 std::vector<std::map<dealii::types::global_dof_index, int>> d_boundaryFlag;
    +
    306
    +
    307 /// map of global dof index and vself solve boundary flag (only chargeId)in
    +
    308 /// each bin
    +
    309 std::vector<std::map<dealii::types::global_dof_index, int>>
    + +
    311
    +
    312 /// map of global dof index to location of closest charge
    +
    313 std::vector<std::map<dealii::types::global_dof_index, dealii::Point<3>>>
    + +
    315
    +
    316 /// map of global dof index and vself field initial value in each bin
    +
    317 std::vector<std::map<dealii::types::global_dof_index, double>>
    + +
    319
    +
    320 /// map of global dof index and vself field initial value in each bin
    +
    321 std::vector<std::map<dealii::types::global_dof_index, int>>
    + +
    323
    +
    324 /// Internal data: stores the map of atom Id (only in the local processor)
    +
    325 /// to the vself bin Id. Populated in solve vself in Bins
    +
    326 std::map<unsigned int, unsigned int> d_atomIdBinIdMapLocalAllImages;
    +
    327
    +
    328 /// solved vself solution field for each bin
    +
    329 std::vector<distributedCPUVec<double>> d_vselfFieldBins;
    +
    330
    +
    331 /// solved del{vself}/del{R_i} solution field for each bin
    +
    332 std::vector<distributedCPUVec<double>> d_vselfFieldDerRBins;
    +
    333
    +
    334 /// perturbation of vself solution field to be used to evaluate the
    +
    335 /// Gateaux derivative of vself field with respect to affine strain
    +
    336 /// components using central finite difference
    +
    337 std::vector<distributedCPUVec<double>> d_vselfFieldPerturbedBins;
    +
    338
    +
    339 // std::vector<double> d_inhomoIdsColoredVecFlattened;
    +
    340
    +
    341 /// Map of locally relevant global dof index and the atomic charge in each
    +
    342 /// bin
    +
    343 std::vector<std::map<dealii::types::global_dof_index, double>> d_atomsInBin;
    +
    344
    +
    345 /// Vself ball radius. This is stored after the first call to createAtomBins
    +
    346 /// and reused for subsequent calls
    + +
    348
    + +
    350
    +
    351 const MPI_Comm d_mpiCommParent;
    +
    352 const MPI_Comm mpi_communicator;
    +
    353 const MPI_Comm d_mpiInterCommKpts;
    +
    354 const unsigned int n_mpi_processes;
    +
    355 const unsigned int this_mpi_process;
    +
    356 dealii::ConditionalOStream pcout;
    +
    357 };
    +
    +
    358
    +
    359} // namespace dftfe
    +
    360#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
    +
    Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential....
    Definition vselfBinsManager.h:38
    +
    const MPI_Comm d_mpiInterCommKpts
    Definition vselfBinsManager.h:353
    +
    std::vector< std::map< dealii::types::global_dof_index, int > > d_boundaryFlagOnlyChargeId
    Definition vselfBinsManager.h:310
    +
    void solveVselfInBinsPerturbedDomain(const dealii::MatrixFree< 3, double > &matrix_free_data, 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 ...
    +
    std::vector< dealii::AffineConstraints< double > > d_vselfBinConstraintMatrices
    vector of constraint matrices for vself bins
    Definition vselfBinsManager.h:295
    +
    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:343
    +
    const std::vector< std::map< dealii::types::global_dof_index, int > > & getBoundaryFlagsBinsOnlyChargeId() const
    +
    void solveVselfInBins(const dealii::MatrixFree< 3, double > &matrix_free_data, 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.
    +
    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:301
    +
    double getStoredAdaptiveBallRadius() const
    get stored adaptive ball radius
    +
    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:318
    +
    std::vector< distributedCPUVec< double > > d_vselfFieldPerturbedBins
    Definition vselfBinsManager.h:337
    +
    std::map< int, std::set< int > > d_bins
    map of binIds and atomIds
    Definition vselfBinsManager.h:298
    +
    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:305
    +
    dealii::ConditionalOStream pcout
    Definition vselfBinsManager.h:356
    +
    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:322
    +
    const MPI_Comm d_mpiCommParent
    Definition vselfBinsManager.h:351
    +
    const std::vector< distributedCPUVec< double > > & getPerturbedVselfFieldBins() const
    +
    const unsigned int n_mpi_processes
    Definition vselfBinsManager.h:354
    +
    const dftParameters & d_dftParams
    Definition vselfBinsManager.h:349
    +
    std::vector< distributedCPUVec< double > > d_vselfFieldDerRBins
    solved del{vself}/del{R_i} solution field for each bin
    Definition vselfBinsManager.h:332
    +
    double d_storedAdaptiveBallRadius
    Definition vselfBinsManager.h:347
    +
    const std::vector< std::map< dealii::types::global_dof_index, int > > & getClosestAtomIdsBins() const
    +
    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:329
    +
    std::vector< std::vector< double > > d_atomLocations
    storage for input atomLocations argument in createAtomBins function
    Definition vselfBinsManager.h:289
    +
    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:326
    +
    const MPI_Comm mpi_communicator
    Definition vselfBinsManager.h:352
    +
    const std::vector< std::map< dealii::types::global_dof_index, dealii::Point< 3 > > > & getClosestAtomLocationsBins() const
    +
    const unsigned int this_mpi_process
    Definition vselfBinsManager.h:355
    +
    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:314
    +
    dftUtils::constraintMatrixInfo d_constraintsOnlyHangingInfo
    storage for optimized constraints handling object
    Definition vselfBinsManager.h:292
    + + + +
    Definition upfToxml.cc:37
    + +
    + + + + diff --git a/xml_todftfe_parser_8h.html b/xml_todftfe_parser_8h.html new file mode 100644 index 000000000..b8eabcd1c --- /dev/null +++ b/xml_todftfe_parser_8h.html @@ -0,0 +1,118 @@ + + + + + + + +DFT-FE: workspace/include/xmlTodftfeParser.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    xmlTodftfeParser.h File Reference
    +
    +
    +
    #include <libxml/parser.h>
    +#include <libxml/tree.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <cstring>
    +#include <fstream>
    +#include <iostream>
    +#include <sstream>
    +#include <stack>
    +#include <string>
    +#include <tuple>
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::pseudoUtils::xmlTodftfeParser
     converts pseudopotential file from xml format to dftfe format More...
     
    + + + + + + +

    +Namespaces

    namespace  dftfe
     
    namespace  dftfe::pseudoUtils
     wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction flag
     
    +
    + + + + diff --git a/xml_todftfe_parser_8h_source.html b/xml_todftfe_parser_8h_source.html new file mode 100644 index 000000000..eb38b8640 --- /dev/null +++ b/xml_todftfe_parser_8h_source.html @@ -0,0 +1,227 @@ + + + + + + + +DFT-FE: workspace/include/xmlTodftfeParser.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    xmlTodftfeParser.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 <libxml/parser.h>
    +
    20#include <libxml/tree.h>
    +
    21#include <stdio.h>
    +
    22#include <string.h>
    +
    23
    +
    24#include <cstring>
    +
    25#include <fstream>
    +
    26#include <iostream>
    +
    27#include <sstream>
    +
    28#include <stack>
    +
    29#include <string>
    +
    30#include <tuple>
    +
    31#include <vector>
    +
    32
    +
    33#ifndef xmlTodftfeParser_h
    +
    34# define xmlTodftfeParser_h
    +
    35
    +
    36namespace dftfe
    +
    37{
    +
    38 //
    +
    39 // Declare pseudoUtils function
    +
    40 //
    +
    41
    +
    42
    +
    43 namespace pseudoUtils
    +
    44 {
    +
    45 /**
    +
    46 * @brief converts pseudopotential file from xml format to dftfe format
    +
    47 *
    +
    48 * This class parses the xmlfile and identifies appropriate tags and
    +
    49 * converts into file formats which can be read by dftfe code
    +
    50 *
    +
    51 * @author Shukan Parekh, Phani Motamarri
    +
    52 */
    +
    + +
    54 {
    +
    55 private:
    +
    56 xmlDoc * doc;
    +
    57 xmlNode * root;
    + +
    59 std::vector<std::string> local_potential;
    +
    60 std::vector<std::string> density;
    +
    61 std::vector<std::string> coreDensity;
    +
    62 std::vector<std::string> mesh;
    +
    63 std::vector<std::tuple<size_t, size_t, std::vector<std::string>>>
    + +
    65 std::vector<std::tuple<size_t, std::string, std::vector<std::string>>>
    + +
    67
    +
    68 std::vector<std::tuple<size_t, size_t, size_t, double>> d_ij;
    +
    69
    +
    70 std::ofstream loc_pot;
    +
    71 std::ofstream dense;
    +
    72 std::ofstream denom;
    +
    73 std::ofstream l1;
    +
    74 std::ofstream l2;
    +
    75 std::ofstream l3;
    +
    76 std::ofstream ad_file;
    +
    77 std::ofstream pseudo;
    +
    78
    +
    79 public:
    +
    80 /**
    +
    81 * class constructor
    +
    82 */
    + +
    84
    +
    85 /**
    +
    86 * class destructor
    +
    87 */
    + +
    89
    +
    90 /**
    +
    91 * @brief parse a given xml pseudopotential file
    +
    92 *
    +
    93 * @param filePath location of the xml file
    +
    94 */
    +
    95 bool
    +
    96 parseFile(const std::string &filePath);
    +
    97
    +
    98 /**
    +
    99 * @brief output the parsed xml pseudopotential file into dat files required by dftfe code
    +
    100 *
    +
    101 * @param filePath location to write the data
    +
    102 */
    +
    103 bool
    +
    104 outputData(const std::string &filePath);
    +
    105 };
    +
    +
    106
    +
    107 } // namespace pseudoUtils
    +
    108
    +
    109} // namespace dftfe
    +
    110#endif /* parser_h */
    +
    converts pseudopotential file from xml format to dftfe format
    Definition xmlTodftfeParser.h:54
    +
    double mesh_spacing
    Definition xmlTodftfeParser.h:58
    +
    std::vector< std::string > local_potential
    Definition xmlTodftfeParser.h:59
    +
    std::vector< std::tuple< size_t, size_t, std::vector< std::string > > > projectors
    Definition xmlTodftfeParser.h:64
    +
    std::ofstream l2
    Definition xmlTodftfeParser.h:74
    +
    std::vector< std::string > density
    Definition xmlTodftfeParser.h:60
    + +
    std::vector< std::string > mesh
    Definition xmlTodftfeParser.h:62
    +
    xmlDoc * doc
    Definition xmlTodftfeParser.h:56
    +
    std::ofstream loc_pot
    Definition xmlTodftfeParser.h:70
    +
    std::ofstream denom
    Definition xmlTodftfeParser.h:72
    +
    std::ofstream l1
    Definition xmlTodftfeParser.h:73
    +
    std::ofstream pseudo
    Definition xmlTodftfeParser.h:77
    +
    std::vector< std::string > coreDensity
    Definition xmlTodftfeParser.h:61
    +
    std::ofstream l3
    Definition xmlTodftfeParser.h:75
    +
    std::vector< std::tuple< size_t, std::string, std::vector< std::string > > > PSwfc
    Definition xmlTodftfeParser.h:66
    +
    xmlNode * root
    Definition xmlTodftfeParser.h:57
    +
    bool parseFile(const std::string &filePath)
    parse a given xml pseudopotential file
    +
    bool outputData(const std::string &filePath)
    output the parsed xml pseudopotential file into dat files required by dftfe code
    + +
    std::ofstream dense
    Definition xmlTodftfeParser.h:71
    +
    std::ofstream ad_file
    Definition xmlTodftfeParser.h:76
    +
    std::vector< std::tuple< size_t, size_t, size_t, double > > d_ij
    Definition xmlTodftfeParser.h:68
    +
    Definition upfToxml.cc:37
    +
    + + + +