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-2025 The Regents of the University of Michigan and DFT-FE
4// authors.
5//
6// This file is part of the DFT-FE code.
7//
8// The DFT-FE code is free software; you can use it, redistribute
9// it, and/or modify it under the terms of the GNU Lesser General
10// Public License as published by the Free Software Foundation; either
11// version 2.1 of the License, or (at your option) any later version.
12// The full text of the license can be found in the file LICENSE at
13// the top level of the DFT-FE distribution.
14//
15// ---------------------------------------------------------------------
16//
17
18#ifndef densityCalculator_H_
19#define densityCalculator_H_
20
21#include <headers.h>
22#include "dftParameters.h"
23#include "FEBasisOperations.h"
25namespace dftfe
26{
27 template <typename NumberType, dftfe::utils::MemorySpace memorySpace>
28 void
31 const dftfe::uInt totalNumWaveFunctions,
32 const std::vector<std::vector<double>> &partialOccupancies,
33 std::shared_ptr<
35 &basisOperationsPtr,
37 &BLASWrapperPtr,
38 const dftfe::uInt matrixFreeDofhandlerIndex,
39 const dftfe::uInt quadratureIndex,
40 const std::vector<double> &kPointCoords,
41 const std::vector<double> &kPointWeights,
42 std::vector<
44 &densityValues,
45 std::vector<
47 &gradDensityValues,
48 std::vector<
50 &tauValues,
51 const bool isEvaluateGradRho,
52 const bool isEvaluateTau,
53 const MPI_Comm &mpiCommParent,
54 const MPI_Comm &interpoolcomm,
55 const MPI_Comm &interBandGroupComm,
56 const dftParameters &dftParams);
57
58
59 template <typename NumberType>
60 void
62 std::shared_ptr<
64 &BLASWrapperPtr,
65 const std::pair<dftfe::uInt, dftfe::uInt> cellRange,
66 const std::pair<dftfe::uInt, dftfe::uInt> vecRange,
67 const dftfe::uInt nQuadsPerCell,
68 double *partialOccupVec,
69 NumberType *wfcQuadPointData,
70 NumberType *gradWfcQuadPointData,
71 double *rhoCellsWfcContributions,
72 double *gradRhoCellsWfcContributions,
73 double *rho,
74 double *gradRho,
75 const bool isEvaluateGradRho);
76
77 template <typename NumberType>
78 void
80 std::shared_ptr<
82 &BLASWrapperPtr,
83 const std::pair<dftfe::uInt, dftfe::uInt> cellRange,
84 const std::pair<dftfe::uInt, dftfe::uInt> vecRange,
85 const dftfe::uInt nQuadsPerCell,
86 double *partialOccupVec,
87 double *kCoord,
88 NumberType *wfcQuadPointData,
89 NumberType *gradWfcQuadPointData,
90 double *kineticEnergyDensityCellsWfcContributions,
91 double *tau);
92} // namespace dftfe
93#endif
Definition FEBasisOperations.h:85
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:36
Definition BLASWrapper.h:35
Definition MemoryStorage.h:33
Definition pseudoPotentialToDftfeConverter.cc:34
@ tau
Definition mixingClass.h:38
@ gradRho
Definition mixingClass.h:34
@ rho
Definition mixingClass.h:33
void computeRhoGradRhoFromInterpolatedValues(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const std::pair< dftfe::uInt, dftfe::uInt > cellRange, const std::pair< dftfe::uInt, dftfe::uInt > vecRange, const dftfe::uInt nQuadsPerCell, double *partialOccupVec, NumberType *wfcQuadPointData, NumberType *gradWfcQuadPointData, double *rhoCellsWfcContributions, double *gradRhoCellsWfcContributions, double *rho, double *gradRho, const bool isEvaluateGradRho)
std::uint32_t uInt
Definition TypeConfig.h:10
void computeRhoFromPSI(const dftfe::utils::MemoryStorage< NumberType, memorySpace > *X, const dftfe::uInt totalNumWaveFunctions, const std::vector< std::vector< double > > &partialOccupancies, std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const dftfe::uInt matrixFreeDofhandlerIndex, const dftfe::uInt quadratureIndex, const std::vector< double > &kPointCoords, const std::vector< double > &kPointWeights, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityValues, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityValues, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &tauValues, const bool isEvaluateGradRho, const bool isEvaluateTau, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
void computeTauFromInterpolatedValues(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const std::pair< dftfe::uInt, dftfe::uInt > cellRange, const std::pair< dftfe::uInt, dftfe::uInt > vecRange, const dftfe::uInt nQuadsPerCell, double *partialOccupVec, double *kCoord, NumberType *wfcQuadPointData, NumberType *gradWfcQuadPointData, double *kineticEnergyDensityCellsWfcContributions, double *tau)