43 const Crystal& crystal_structure,
49 const std::string& nonlocal_stress_derivative_method =
"analytical")
50 : crystal_structure_(crystal_structure)
51 , planewave_basis_(planewave_basis)
52 , kpoint_grid_(kpoint_grid)
53 , scf_state_(scf_state)
54 , projector_overlap_coefficients_(projector_overlap_coefficients)
56 , nonlocal_stress_derivative_method_(nonlocal_stress_derivative_method) {}
59 auto timer_0 = std::chrono::high_resolution_clock::now();
67 log::warn(
" Stress omits the DFT+U contribution for unsupported Hubbard "
68 "projector type '{}'. Reported stress and any cell relaxation built on "
69 "it are NOT trustworthy for this system. Energies are unaffected.",
80 exchange_correlation_calculator.
compute();
81 auto timer_1 = std::chrono::high_resolution_clock::now();
91 auto timer_2 = std::chrono::high_resolution_clock::now();
100 core_correction_calculator.
compute();
101 auto timer_3 = std::chrono::high_resolution_clock::now();
110 nonlocal_stress_derivative_method_);
112 auto timer_4 = std::chrono::high_resolution_clock::now();
115 auto [potential_by_spin, coefficients_by_spin] = spin_resolved_augmentation_inputs();
121 coefficients_by_spin,
123 augmentation_calculator.
compute();
124 auto timer_5 = std::chrono::high_resolution_clock::now();
133 crystal_structure_, planewave_basis_, kpoint_grid_, scf_state_, result_);
135 auto timer_6 = std::chrono::high_resolution_clock::now();
139 std::chrono::duration<double, std::milli>(timer_1 - timer_0).count());
141 std::chrono::duration<double, std::milli>(timer_2 - timer_1).count());
143 std::chrono::duration<double, std::milli>(timer_3 - timer_2).count());
145 std::chrono::duration<double, std::milli>(timer_4 - timer_3).count());
147 std::chrono::duration<double, std::milli>(timer_5 - timer_4).count());
149 std::chrono::duration<double, std::milli>(timer_6 - timer_5).count());