61 const MPI_Comm &mpi_comm_parent,
62 const MPI_Comm &mpi_comm_domain,
83 const dealii::Triangulation<3, 3> &serialTriangulation,
84 const std::vector<std::vector<double>> &domainBoundingVectors,
85 const bool isElectrostaticsMesh);
100 std::vector<
const dealii::DoFHandler<3> *> &dofHandlerVectorMatrixFree,
101 std::vector<
const dealii::AffineConstraints<double> *>
102 &constraintsVectorMatrixFree,
103 const bool isElectrostaticsMesh);
130 const dealii::MatrixFree<3, double> &matrixFreeData,
131 const std::shared_ptr<groupSymmetryClass> &groupSymmetryPtr,
136 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
146 &rhoTotalOutValuesLpsp,
148 &gradRhoTotalOutValuesLpsp,
149 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
150 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
151 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
152 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
154 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
155 &hessianRhoCoreAtoms,
156 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
157 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
158 &pseudoVLocAtomsElectro,
159 const dealii::AffineConstraints<double> &hangingPlusPBCConstraintsElectro,
170 std::vector<double> &
196 const dealii::MatrixFree<3, double> &matrixFreeData,
197 const std::shared_ptr<groupSymmetryClass> &groupSymmetryPtr,
202 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
212 &rhoTotalOutValuesLpsp,
214 &gradRhoTotalOutValuesLpsp,
215 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
216 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
217 &pseudoVLocAtomsElectro,
218 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
219 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
220 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
221 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
223 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
224 &hessianRhoCoreAtoms,
225 const dealii::AffineConstraints<double> &hangingPlusPBCConstraintsElectro,
241 dealii::Tensor<2, 3, double> &
258 const dealii::IndexSet &locally_owned_dofsForce,
259 std::map<std::pair<dftfe::uInt, dftfe::uInt>,
264 const dealii::DoFHandler<3> &dofHandler,
265 const dealii::DoFHandler<3> &dofHandlerForce,
266 const dealii::AffineConstraints<double> &hangingPlusPBCConstraints,
268 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
269 &cellsVselfBallsDofHandler,
270 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
271 &cellsVselfBallsDofHandlerForce,
272 std::vector<std::map<dealii::CellId, dftfe::uInt>>
273 &cellsVselfBallsClosestAtomIdDofHandler,
274 std::map<dftfe::uInt, dftfe::uInt> &AtomIdBinIdLocalDofHandler,
275 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
276 std::vector<dftfe::uInt>>>
277 &cellFacesVselfBallSurfacesDofHandler,
278 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
279 std::vector<dftfe::uInt>>>
280 &cellFacesVselfBallSurfacesDofHandlerForce);
284 const dealii::MatrixFree<3, double> &matrixFreeData,
285 const dealii::MatrixFree<3, double> &matrixFreeDataElectro);
292 const dealii::MatrixFree<3, double> &matrixFreeData,
296 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
306 &rhoTotalOutValuesLpsp,
308 &gradRhoTotalOutValuesLpsp,
309 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
310 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
311 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
312 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
314 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
315 &hessianRhoCoreAtoms,
316 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
317 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
318 &pseudoVLocAtomsElectro,
323 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
331 &rhoTotalOutValuesLpsp,
333 &gradRhoTotalOutValues,
335 &gradRhoTotalOutValuesLpsp,
336 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
337 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
338 &pseudoVLocAtomsElectro,
346 const dealii::DoFHandler<3> &dofHandlerElectro,
348 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
356 const dealii::MatrixFree<3, double> &matrixFreeData,
360 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
370 &rhoTotalOutValuesLpsp,
372 &gradRhoTotalOutValuesLpsp,
373 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
374 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
375 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
376 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
378 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
379 &hessianRhoCoreAtoms,
380 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
381 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
382 &pseudoVLocAtomsElectro,
388 &forceContributionFPSPLocalGammaAtoms,
389 dealii::FEValues<3> &feValues,
390 dealii::FEFaceValues<3> &feFaceValues,
392 const dealii::MatrixFree<3, double> &matrixFreeData,
395 const dealii::AlignedVector<dealii::VectorizedArray<double>> &rhoQuads,
396 const dealii::AlignedVector<
397 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradRhoQuads,
398 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
401 const std::vector<std::map<dealii::CellId, dftfe::uInt>>
402 &cellsVselfBallsClosestAtomIdDofHandler);
407 &forceContributionSmearedChargesGammaAtoms,
409 const dealii::MatrixFree<3, double> &matrixFreeData,
411 const dealii::AlignedVector<
412 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradPhiTotQuads,
413 const std::vector<dftfe::uInt> &nonTrivialAtomIdsMacroCell,
414 const std::map<dealii::CellId, std::vector<dftfe::Int>>
415 &bQuadAtomIdsAllAtoms,
416 const dealii::AlignedVector<dealii::VectorizedArray<double>>
422 &forceContributionSmearedChargesGammaAtoms,
424 const dealii::MatrixFree<3, double> &matrixFreeData,
426 const dealii::AlignedVector<
427 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
429 const std::vector<dftfe::uInt> &nonTrivialAtomIdsMacroCell,
430 const std::map<dealii::CellId, std::vector<dftfe::Int>>
431 &bQuadAtomIdsAllAtoms,
432 const dealii::AlignedVector<dealii::VectorizedArray<double>>
438 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
440 const dealii::MatrixFree<3, double> &matrixFreeData,
442 const dealii::AlignedVector<dealii::VectorizedArray<double>> &vxcQuads,
443 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
450 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
452 const dealii::MatrixFree<3, double> &matrixFreeData,
454 const dealii::AlignedVector<
455 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &derExcGradRho,
456 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
457 &hessianRhoCoreAtoms);
462 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
464 const dealii::MatrixFree<3, double> &matrixFreeData,
466 const dealii::AlignedVector<dealii::VectorizedArray<double>>
468 const dealii::AlignedVector<dealii::VectorizedArray<double>>
470 const dealii::AlignedVector<
471 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
473 const dealii::AlignedVector<
474 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
476 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
478 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
479 &hessianRhoCoreAtoms,
480 const bool isXCGGA =
false);
485 &forceContributionFPSPLocalGammaAtoms,
486 const std::map<std::pair<dftfe::uInt, dftfe::uInt>,
dftfe::uInt>
488 const dealii::AffineConstraints<double> &constraintsNoneForce,
494 &forceContributionLocalGammaAtoms,
495 std::vector<double> &accumForcesVector);
501 &forceContributionFnlGammaAtoms,
502 const dealii::MatrixFree<3, double> &matrixFreeData,
504 const std::shared_ptr<
508 const std::vector<dftfe::Int> &globalChargeIdNonLocalAtoms,
509 const std::vector<dftfe::uInt> &numberPseudoWaveFunctionsPerAtom,
511 const std::map<dealii::CellId, dftfe::uInt> &cellIdToCellNumberMap,
513 const std::vector<dataTypes::number>
514 &projectorKetTimesPsiTimesVTimesPartOccContractionPsiQuadsFlattened,
516 const std::vector<dataTypes::number> &zetaDeltaVQuadsFlattened,
517 const std::vector<dataTypes::number> &
518 projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened);
523 dealii::AlignedVector<
524 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &FVectQuads,
525 const dealii::MatrixFree<3, double> &matrixFreeData,
527 const std::shared_ptr<
531 const std::vector<dftfe::Int> &globalChargeIdNonLocalAtoms,
532 const std::vector<dftfe::uInt> &numberPseudoWaveFunctionsPerAtom,
534 const std::map<dealii::CellId, dftfe::uInt> &cellIdToCellNumberMap,
535 const std::vector<dataTypes::number> &zetaDeltaVQuadsFlattened,
536 const std::vector<dataTypes::number> &
537 projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened);
542 &forceContributionFnlGammaAtoms);
546 dealii::Tensor<2, 3, double> &stressContribution,
547 const dealii::MatrixFree<3, double> &matrixFreeData,
549 const std::vector<double> &jxwQuadsSubCells,
552 const std::shared_ptr<
555 const std::vector<dftfe::uInt> &numberPseudoWaveFunctionsPerAtom,
556 const std::map<dealii::CellId, dftfe::uInt> &cellIdToCellNumberMap,
557 const std::vector<dataTypes::number> &zetalmDeltaVlProductDistImageAtoms,
559 const std::vector<dataTypes::number>
560 &projectorKetTimesPsiTimesVTimesPartOccContractionPsiQuadsFlattened,
562 const std::vector<dataTypes::number>
563 &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened,
564 const bool isSpinPolarized);
568 bool allowGaussianOverlapOnAtoms =
false);
575 const dealii::DoFHandler<3> &dofHandlerElectro,
577 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
582 const dealii::MatrixFree<3, double> &matrixFreeData,
586 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
596 &rhoTotalOutValuesLpsp,
598 &gradRhoTotalOutValuesLpsp,
599 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
600 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
601 &pseudoVLocAtomsElectro,
602 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
603 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
604 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
605 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
607 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
608 &hessianRhoCoreAtoms,
613 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
621 &rhoTotalOutValuesLpsp,
623 &gradRhoTotalOutValuesElectro,
625 &gradRhoTotalOutValuesElectroLpsp,
626 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
627 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
628 &pseudoVLocAtomsElectro,
633 dealii::FEValues<3> &feValues,
634 dealii::FEFaceValues<3> &feFaceValues,
636 const dealii::MatrixFree<3, double> &matrixFreeData,
639 const dealii::AlignedVector<dealii::VectorizedArray<double>> &rhoQuads,
640 const dealii::AlignedVector<
641 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradRhoQuads,
642 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
645 const std::vector<std::map<dealii::CellId, dftfe::uInt>>
646 &cellsVselfBallsClosestAtomIdDofHandler);
651 const dealii::MatrixFree<3, double> &matrixFreeData,
653 const dealii::AlignedVector<dealii::VectorizedArray<double>> &vxcQuads,
654 const dealii::AlignedVector<
655 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &derExcGradRho,
656 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
658 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
659 &hessianRhoCoreAtoms);
664 const dealii::MatrixFree<3, double> &matrixFreeData,
666 const dealii::AlignedVector<dealii::VectorizedArray<double>>
668 const dealii::AlignedVector<dealii::VectorizedArray<double>>
670 const dealii::AlignedVector<
671 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
673 const dealii::AlignedVector<
674 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
676 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
678 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
679 &hessianRhoCoreAtoms,
680 const bool isXCGGA =
false);
685 const dealii::MatrixFree<3, double> &matrixFreeData,
687 const dealii::AlignedVector<
688 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradPhiTotQuads,
689 const std::vector<dftfe::uInt> &nonTrivialAtomImageIdsMacroCell,
690 const std::map<dealii::CellId, std::vector<dftfe::Int>>
691 &bQuadAtomIdsAllAtomsImages,
692 const dealii::AlignedVector<dealii::VectorizedArray<double>>
698 const dealii::MatrixFree<3, double> &matrixFreeData,
700 const dealii::AlignedVector<
701 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradVselfQuads,
702 const std::vector<dftfe::uInt> &nonTrivialAtomImageIdsMacroCell,
703 const std::map<dealii::CellId, std::vector<dftfe::Int>>
704 &bQuadAtomIdsAllAtomsImages,
705 const dealii::AlignedVector<dealii::VectorizedArray<double>>
739 std::vector<double> d_forceAtomsFloatingKPoints;
831 std::map<std::pair<dftfe::uInt, dftfe::uInt>,
dftfe::uInt>
837 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
842 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
847 std::vector<std::map<dealii::CellId, dftfe::uInt>>
860 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
861 std::vector<dftfe::uInt>>>
870 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
871 std::vector<dftfe::uInt>>>
877 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
882 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
887 std::vector<std::map<dealii::CellId, dftfe::uInt>>
900 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
901 std::vector<dftfe::uInt>>>
910 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
911 std::vector<dftfe::uInt>>>
914 std::map<dealii::CellId, dealii::DoFHandler<3>::active_cell_iterator>