34 template <dftfe::uInt T1, dftfe::uInt T2, dftfe::utils::MemorySpace memory>
53 friend class dftClass<FEOrder, FEOrderElectro, memorySpace>;
63 const MPI_Comm &mpi_comm_parent,
64 const MPI_Comm &mpi_comm_domain,
85 const dealii::Triangulation<3, 3> &serialTriangulation,
86 const std::vector<std::vector<double>> &domainBoundingVectors,
87 const bool isElectrostaticsMesh);
102 std::vector<
const dealii::DoFHandler<3> *> &dofHandlerVectorMatrixFree,
103 std::vector<
const dealii::AffineConstraints<double> *>
104 &constraintsVectorMatrixFree,
105 const bool isElectrostaticsMesh);
132 const dealii::MatrixFree<3, double> &matrixFreeData,
137 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
147 &rhoTotalOutValuesLpsp,
149 &gradRhoTotalOutValuesLpsp,
150 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
151 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
152 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
153 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
155 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
156 &hessianRhoCoreAtoms,
157 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
158 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
159 &pseudoVLocAtomsElectro,
160 const dealii::AffineConstraints<double> &hangingPlusPBCConstraintsElectro,
171 std::vector<double> &
197 const dealii::MatrixFree<3, double> &matrixFreeData,
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,
391 dealii::FEEvaluation<3,
395 const dealii::MatrixFree<3, double> &matrixFreeData,
398 const dealii::AlignedVector<dealii::VectorizedArray<double>> &rhoQuads,
399 const dealii::AlignedVector<
400 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradRhoQuads,
401 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
404 const std::vector<std::map<dealii::CellId, dftfe::uInt>>
405 &cellsVselfBallsClosestAtomIdDofHandler);
410 &forceContributionSmearedChargesGammaAtoms,
411 dealii::FEEvaluation<3, -1, 1, 3> &forceEval,
412 const dealii::MatrixFree<3, double> &matrixFreeData,
414 const dealii::AlignedVector<
415 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradPhiTotQuads,
416 const std::vector<dftfe::uInt> &nonTrivialAtomIdsMacroCell,
417 const std::map<dealii::CellId, std::vector<dftfe::Int>>
418 &bQuadAtomIdsAllAtoms,
419 const dealii::AlignedVector<dealii::VectorizedArray<double>>
425 &forceContributionSmearedChargesGammaAtoms,
426 dealii::FEEvaluation<3, -1, 1, 3> &forceEval,
427 const dealii::MatrixFree<3, double> &matrixFreeData,
429 const dealii::AlignedVector<
430 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
432 const std::vector<dftfe::uInt> &nonTrivialAtomIdsMacroCell,
433 const std::map<dealii::CellId, std::vector<dftfe::Int>>
434 &bQuadAtomIdsAllAtoms,
435 const dealii::AlignedVector<dealii::VectorizedArray<double>>
441 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
442 dealii::FEEvaluation<
447 const dealii::MatrixFree<3, double> &matrixFreeData,
449 const dealii::AlignedVector<dealii::VectorizedArray<double>> &vxcQuads,
450 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
457 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
458 dealii::FEEvaluation<
463 const dealii::MatrixFree<3, double> &matrixFreeData,
465 const dealii::AlignedVector<
466 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &derExcGradRho,
467 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
468 &hessianRhoCoreAtoms);
473 &forceContributionFNonlinearCoreCorrectionGammaAtoms,
474 dealii::FEEvaluation<
479 const dealii::MatrixFree<3, double> &matrixFreeData,
481 const dealii::AlignedVector<dealii::VectorizedArray<double>>
483 const dealii::AlignedVector<dealii::VectorizedArray<double>>
485 const dealii::AlignedVector<
486 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
488 const dealii::AlignedVector<
489 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
491 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
493 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
494 &hessianRhoCoreAtoms,
495 const bool isXCGGA =
false);
500 &forceContributionFPSPLocalGammaAtoms,
501 const std::map<std::pair<dftfe::uInt, dftfe::uInt>,
dftfe::uInt>
503 const dealii::AffineConstraints<double> &constraintsNoneForce,
509 &forceContributionLocalGammaAtoms,
510 std::vector<double> &accumForcesVector);
516 &forceContributionFnlGammaAtoms,
517 const dealii::MatrixFree<3, double> &matrixFreeData,
518 dealii::FEEvaluation<3,
523 const std::shared_ptr<
527 const std::vector<dftfe::Int> &globalChargeIdNonLocalAtoms,
528 const std::vector<dftfe::uInt> &numberPseudoWaveFunctionsPerAtom,
530 const std::map<dealii::CellId, dftfe::uInt> &cellIdToCellNumberMap,
532 const std::vector<dataTypes::number>
533 &projectorKetTimesPsiTimesVTimesPartOccContractionPsiQuadsFlattened,
535 const std::vector<dataTypes::number> &zetaDeltaVQuadsFlattened,
536 const std::vector<dataTypes::number> &
537 projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened);
542 dealii::AlignedVector<
543 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &FVectQuads,
544 const dealii::MatrixFree<3, double> &matrixFreeData,
546 const std::shared_ptr<
550 const std::vector<dftfe::Int> &globalChargeIdNonLocalAtoms,
551 const std::vector<dftfe::uInt> &numberPseudoWaveFunctionsPerAtom,
553 const std::map<dealii::CellId, dftfe::uInt> &cellIdToCellNumberMap,
554 const std::vector<dataTypes::number> &zetaDeltaVQuadsFlattened,
555 const std::vector<dataTypes::number> &
556 projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened);
561 &forceContributionFnlGammaAtoms);
565 dealii::Tensor<2, 3, double> &stressContribution,
566 const dealii::MatrixFree<3, double> &matrixFreeData,
568 const std::vector<double> &jxwQuadsSubCells,
571 const std::shared_ptr<
574 const std::vector<dftfe::uInt> &numberPseudoWaveFunctionsPerAtom,
575 const std::map<dealii::CellId, dftfe::uInt> &cellIdToCellNumberMap,
576 const std::vector<dataTypes::number> &zetalmDeltaVlProductDistImageAtoms,
578 const std::vector<dataTypes::number>
579 &projectorKetTimesPsiTimesVTimesPartOccContractionPsiQuadsFlattened,
581 const std::vector<dataTypes::number>
582 &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened,
583 const bool isSpinPolarized);
587 bool allowGaussianOverlapOnAtoms =
false);
594 const dealii::DoFHandler<3> &dofHandlerElectro,
596 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
601 const dealii::MatrixFree<3, double> &matrixFreeData,
605 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
615 &rhoTotalOutValuesLpsp,
617 &gradRhoTotalOutValuesLpsp,
618 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
619 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
620 &pseudoVLocAtomsElectro,
621 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
622 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
623 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
624 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
626 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
627 &hessianRhoCoreAtoms,
632 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
640 &rhoTotalOutValuesLpsp,
642 &gradRhoTotalOutValuesElectro,
644 &gradRhoTotalOutValuesElectroLpsp,
645 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
646 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
647 &pseudoVLocAtomsElectro,
652 dealii::FEValues<3> &feValues,
653 dealii::FEFaceValues<3> &feFaceValues,
654 dealii::FEEvaluation<3,
658 const dealii::MatrixFree<3, double> &matrixFreeData,
661 const dealii::AlignedVector<dealii::VectorizedArray<double>> &rhoQuads,
662 const dealii::AlignedVector<
663 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradRhoQuads,
664 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
667 const std::vector<std::map<dealii::CellId, dftfe::uInt>>
668 &cellsVselfBallsClosestAtomIdDofHandler);
672 dealii::FEEvaluation<
677 const dealii::MatrixFree<3, double> &matrixFreeData,
679 const dealii::AlignedVector<dealii::VectorizedArray<double>> &vxcQuads,
680 const dealii::AlignedVector<
681 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &derExcGradRho,
682 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
684 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
685 &hessianRhoCoreAtoms);
689 dealii::FEEvaluation<
694 const dealii::MatrixFree<3, double> &matrixFreeData,
696 const dealii::AlignedVector<dealii::VectorizedArray<double>>
698 const dealii::AlignedVector<dealii::VectorizedArray<double>>
700 const dealii::AlignedVector<
701 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
703 const dealii::AlignedVector<
704 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
706 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
708 const std::map<
dftfe::uInt, std::map<dealii::CellId, std::vector<double>>>
709 &hessianRhoCoreAtoms,
710 const bool isXCGGA =
false);
714 dealii::FEEvaluation<3, -1, 1, 3> &forceEval,
715 const dealii::MatrixFree<3, double> &matrixFreeData,
717 const dealii::AlignedVector<
718 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradPhiTotQuads,
719 const std::vector<dftfe::uInt> &nonTrivialAtomImageIdsMacroCell,
720 const std::map<dealii::CellId, std::vector<dftfe::Int>>
721 &bQuadAtomIdsAllAtomsImages,
722 const dealii::AlignedVector<dealii::VectorizedArray<double>>
727 dealii::FEEvaluation<3, -1, 1, 3> &forceEval,
728 const dealii::MatrixFree<3, double> &matrixFreeData,
730 const dealii::AlignedVector<
731 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradVselfQuads,
732 const std::vector<dftfe::uInt> &nonTrivialAtomImageIdsMacroCell,
733 const std::map<dealii::CellId, std::vector<dftfe::Int>>
734 &bQuadAtomIdsAllAtomsImages,
735 const dealii::AlignedVector<dealii::VectorizedArray<double>>
769 std::vector<double> d_forceAtomsFloatingKPoints;
861 std::map<std::pair<dftfe::uInt, dftfe::uInt>,
dftfe::uInt>
867 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
872 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
877 std::vector<std::map<dealii::CellId, dftfe::uInt>>
890 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
891 std::vector<dftfe::uInt>>>
900 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
901 std::vector<dftfe::uInt>>>
907 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
912 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
917 std::vector<std::map<dealii::CellId, dftfe::uInt>>
930 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
931 std::vector<dftfe::uInt>>>
940 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
941 std::vector<dftfe::uInt>>>
944 std::map<dealii::CellId, dealii::DoFHandler<3>::active_cell_iterator>
Definition AtomicCenteredNonLocalOperator.h:58
This class is the primary interface location of all other parts of the DFT-FE code for all steps invo...
Definition dft.h:116
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:36
Calculates dispersion correction to energy, force and stress.
Definition dftd.h:37
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, dftfe::uInt > > &cellsVselfBallsClosestAtomIdDofHandler, std::map< dftfe::uInt, dftfe::uInt > &AtomIdBinIdLocalDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > &cellFacesVselfBallSurfacesDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > &cellFacesVselfBallSurfacesDofHandlerForce)
std::map< std::pair< dftfe::uInt, dftfe::uInt >, dftfe::uInt > d_atomsForceDofsElectro
Definition force.h:862
const dftfe::uInt n_mpi_processes
number of mpi processes in the current pool
Definition force.h:960
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > d_cellFacesVselfBallSurfacesDofHandlerElectro
Definition force.h:932
std::map< std::pair< dftfe::uInt, dftfe::uInt >, dftfe::uInt > d_atomsForceDofs
Definition force.h:857
void computeAtomsForcesGaussianGenerator(bool allowGaussianOverlapOnAtoms=false)
dealii::DoFHandler< 3 > d_dofHandlerForceElectro
Definition force.h:821
std::vector< std::map< dealii::CellId, dftfe::uInt > > d_cellsVselfBallsClosestAtomIdDofHandlerElectro
Definition force.h:918
forceClass(dftClass< FEOrder, FEOrderElectro, memorySpace > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
Constructor.
std::map< dftfe::uInt, dftfe::uInt > d_AtomIdBinIdLocalDofHandler
Definition force.h:882
const dftParameters & d_dftParams
Definition force.h:957
dealii::Tensor< 2, 3, double > & getStress()
returns a copy of the current stress tensor value.
std::vector< double > d_globalAtomsForces
Storage for configurational force on all global atoms.
Definition force.h:781
void FPSPLocalGammaAtomsElementalContribution(std::map< dftfe::uInt, 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 dftfe::uInt phiTotDofHandlerIndexElectro, const dftfe::uInt cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &rhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradRhoQuads, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, const std::vector< std::map< dealii::CellId, dftfe::uInt > > &cellsVselfBallsClosestAtomIdDofHandler)
dftfe::uInt d_forceDofHandlerIndexElectro
Definition force.h:829
dealii::Tensor< 2, 3, double > d_stress
Storage for configurational stress tensor.
Definition force.h:784
std::vector< double > & getAtomsForces()
returns a copy of the configurational force on all global atoms.
void configForceLinFEInit(const dealii::MatrixFree< 3, double > &matrixFreeData, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro)
void computeAtomsForces(const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const dftfe::uInt eigenDofHandlerIndex, const dftfe::uInt smearedChargeQuadratureId, const dftfe::uInt lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
computes the configurational force on all atoms corresponding to a Gaussian generator,...
const bool d_allowGaussianOverlapOnAtoms
Definition force.h:797
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 accumulateForceContributionGammaAtomsFloating(const std::map< dftfe::uInt, std::vector< double > > &forceContributionLocalGammaAtoms, std::vector< double > &accumForcesVector)
void FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< dftfe::uInt, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)
dftfe::uInt d_forceDofHandlerIndex
Definition force.h:825
dealii::ConditionalOStream pcout
Definition force.h:967
void addENonlinearCoreCorrectionStressContributionSpinPolarized(dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt 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< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool isXCGGA=false)
void computeStressEEshelbyEPSPEnlEk(const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt eigenDofHandlerIndex, const dftfe::uInt smearedChargeQuadratureId, const dftfe::uInt lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< dftfe::uInt, 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< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
dealii::AffineConstraints< double > d_constraintsNoneForceElectro
Definition force.h:853
void printStress()
prints the currently stored configurational stress tensor.
void computeConfigurationalForceTotalLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt eigenDofHandlerIndex, const dftfe::uInt smearedChargeQuadratureId, const dftfe::uInt lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
void computeConfigurationalForceEselfNoSurfaceLinFE()
void computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt eigenDofHandlerIndex, const dftfe::uInt smearedChargeQuadratureId, const dftfe::uInt lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
const MPI_Comm mpi_communicator
domain decomposition mpi_communicator
Definition force.h:955
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > d_cellFacesVselfBallSurfacesDofHandlerForceElectro
Definition force.h:942
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > d_cellFacesVselfBallSurfacesDofHandler
Definition force.h:892
void FnlGammaxElementalContribution(dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &FVectQuads, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt numQuadPoints, const std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > nonLocalOp, const dftfe::uInt numNonLocalAtomsCurrentProcess, const std::vector< dftfe::Int > &globalChargeIdNonLocalAtoms, const std::vector< dftfe::uInt > &numberPseudoWaveFunctionsPerAtom, const dftfe::uInt cell, const std::map< dealii::CellId, dftfe::uInt > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetaDeltaVQuadsFlattened, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened)
void computeConfigurationalForceEselfLinFE(const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt smearedChargeQuadratureId)
void addEVselfSmearedStressContribution(dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradVselfQuads, const std::vector< dftfe::uInt > &nonTrivialAtomImageIdsMacroCell, const std::map< dealii::CellId, std::vector< dftfe::Int > > &bQuadAtomIdsAllAtomsImages, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
void FVselfSmearedChargesGammaAtomsElementalContribution(std::map< dftfe::uInt, std::vector< double > > &forceContributionSmearedChargesGammaAtoms, dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradVselfBinQuads, const std::vector< dftfe::uInt > &nonTrivialAtomIdsMacroCell, const std::map< dealii::CellId, std::vector< dftfe::Int > > &bQuadAtomIdsAllAtoms, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
std::map< dealii::CellId, dealii::DoFHandler< 3 >::active_cell_iterator > d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro
Definition force.h:945
const dftfe::uInt this_mpi_process
current mpi process id in the current pool
Definition force.h:963
distributedCPUVec< double > d_configForceVectorLinFEElectro
Definition force.h:754
const MPI_Comm d_mpiCommParent
domain decomposition mpi_communicator
Definition force.h:952
std::map< dftfe::uInt, dftfe::uInt > d_AtomIdBinIdLocalDofHandlerElectro
Definition force.h:922
void computeFloatingAtomsForces()
dealii::AffineConstraints< double > d_constraintsNoneForce
Definition force.h:849
std::vector< double > d_forceAtomsFloating
Definition force.h:766
dealii::FESystem< 3 > FEForce
Definition force.h:804
void distributeForceContributionFnlGammaAtoms(const std::map< dftfe::uInt, std::vector< double > > &forceContributionFnlGammaAtoms)
void FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< dftfe::uInt, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms)
void stressEnlElementalContribution(dealii::Tensor< 2, 3, double > &stressContribution, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt numQuadPoints, const std::vector< double > &jxwQuadsSubCells, const dftfe::uInt cell, const dftfe::uInt numNonLocalAtomsCurrentProcess, const std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > nonLocalOp, const std::vector< dftfe::uInt > &numberPseudoWaveFunctionsPerAtom, const std::map< dealii::CellId, dftfe::uInt > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetalmDeltaVlProductDistImageAtoms, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened, const bool isSpinPolarized)
void computeStress(const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const dftfe::uInt eigenDofHandlerIndex, const dftfe::uInt smearedChargeQuadratureId, const dftfe::uInt lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< dftfe::uInt, 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< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
Update force generator Gaussian constant.
dealii::IndexSet d_locally_owned_dofsForceElectro
Definition force.h:837
void FnlGammaAtomsElementalContribution(std::map< dftfe::uInt, std::vector< double > > &forceContributionFnlGammaAtoms, const dealii::MatrixFree< 3, double > &matrixFreeData, dealii::FEEvaluation< 3, 1, C_num1DQuadNLPSP< FEOrder >() *C_numCopies1DQuadNLPSP(), 3 > &forceEvalNLP, const std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > nonLocalOp, dftfe::uInt numNonLocalAtomsCurrentProcess, const std::vector< dftfe::Int > &globalChargeIdNonLocalAtoms, const std::vector< dftfe::uInt > &numberPseudoWaveFunctionsPerAtom, const dftfe::uInt cell, const std::map< dealii::CellId, dftfe::uInt > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetaDeltaVQuadsFlattened, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened)
void FPhiTotSmearedChargesGammaAtomsElementalContribution(std::map< dftfe::uInt, std::vector< double > > &forceContributionSmearedChargesGammaAtoms, dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradPhiTotQuads, const std::vector< dftfe::uInt > &nonTrivialAtomIdsMacroCell, const std::map< dealii::CellId, std::vector< dftfe::Int > > &bQuadAtomIdsAllAtoms, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
void computeConfigurationalForceEEshelbyEElectroPhiTot(const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt phiTotDofHandlerIndexElectro, const dftfe::uInt smearedChargeQuadratureId, const dftfe::uInt lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
dealii::DoFHandler< 3 > d_dofHandlerForce
Definition force.h:812
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 dftfe::uInt phiTotDofHandlerIndexElectro, const dftfe::uInt cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &rhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradRhoQuads, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, const std::vector< std::map< dealii::CellId, dftfe::uInt > > &cellsVselfBallsClosestAtomIdDofHandler)
dealii::IndexSet d_locally_owned_dofsForce
Definition force.h:833
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForceElectro
Definition force.h:913
void computeElementalNonLocalPseudoOVDataForce()
void FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized(std::map< dftfe::uInt, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt 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< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool isXCGGA=false)
void computeConfigurationalForcePhiExtLinFE()
std::vector< std::map< dealii::CellId, dftfe::uInt > > d_cellsVselfBallsClosestAtomIdDofHandler
Definition force.h:878
void distributeForceContributionFPSPLocalGammaAtoms(const std::map< dftfe::uInt, std::vector< double > > &forceContributionFPSPLocalGammaAtoms, const std::map< std::pair< dftfe::uInt, dftfe::uInt >, dftfe::uInt > &atomsForceDofs, const dealii::AffineConstraints< double > &constraintsNoneForce, distributedCPUVec< double > &configForceVectorLinFE)
std::vector< distributedCPUVec< double > > d_gaussianWeightsVecAtoms
Definition force.h:947
dftClass< FEOrder, FEOrderElectro, memorySpace > * dftPtr
pointer to dft class
Definition force.h:800
void addEPhiTotSmearedStressContribution(dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradPhiTotQuads, const std::vector< dftfe::uInt > &nonTrivialAtomImageIdsMacroCell, const std::map< dealii::CellId, std::vector< dftfe::Int > > &bQuadAtomIdsAllAtomsImages, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
void locateAtomCoreNodesForce(const dealii::DoFHandler< 3 > &dofHandlerForce, const dealii::IndexSet &locally_owned_dofsForce, std::map< std::pair< dftfe::uInt, dftfe::uInt >, dftfe::uInt > &atomsForceDofs)
get the value of Gaussian generator parameter (d_gaussianConstant). Gaussian generator: Gamma(r)= exp...
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandler
Definition force.h:868
dealii::IndexSet d_locally_relevant_dofsForceElectro
Definition force.h:845
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 computeStressEself(const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt smearedChargeQuadratureId)
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< dftfe::uInt > > > d_cellFacesVselfBallSurfacesDofHandlerForce
Definition force.h:902
void initPseudoData()
initializes and precomputes pseudopotential related data structuers required for configurational forc...
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerElectro
Definition force.h:908
dealii::IndexSet d_locally_relevant_dofsForce
Definition force.h:841
void addENonlinearCoreCorrectionStressContribution(dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)
void computeStressEEshelbyEElectroPhiTot(const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const dftfe::uInt phiTotDofHandlerIndexElectro, const dftfe::uInt smearedChargeQuadratureId, const dftfe::uInt lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< dftfe::uInt, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
distributedCPUVec< double > d_configForceVectorLinFE
Definition force.h:747
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForce
Definition force.h:873
dealii::Tensor< 2, 3, double > d_stressKPoints
Definition force.h:792
void configForceLinFEFinalize()
void printAtomsForces()
prints the currently stored configurational forces on atoms and the Gaussian generator constant used ...
Definition MemoryStorage.h:33
Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential....
Definition vselfBinsManager.h:36
MemorySpace
Definition MemorySpaceType.h:33
Definition pseudoPotentialToDftfeConverter.cc:34
constexpr dftfe::uInt C_num1DQuad()
1d quadrature rule order
Definition constants.h:41
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:92
std::uint32_t uInt
Definition TypeConfig.h:10
constexpr dftfe::uInt C_numCopies1DQuadNLPSP()
number of copies 1d quad rule non-local PSP
Definition constants.h:149
constexpr dftfe::uInt C_numCopies1DQuadLPSP()
number of copies 1d quad rule local PSP
Definition constants.h:164
constexpr dftfe::uInt C_num1DQuadLPSP()
1d quadrature rule order for local part of pseudopotential
Definition constants.h:157
constexpr dftfe::uInt C_rhoNodalPolyOrder()
rho nodal polynomial order
Definition constants.h:134
constexpr dftfe::uInt C_num1DQuadNLPSP()
1d quadrature rule order for non-local part of pseudopotential
Definition constants.h:142