DFT-FE 1.3.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
configurationalForceKernels.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 configurationalForceKernels_H_
19#define configurationalForceKernels_H_
20#if defined(DFTFE_WITH_DEVICE)
21
22# include <BLASWrapper.h>
23# include <DataTypeOverloads.h>
24# include <DeviceAPICalls.h>
26# include <DeviceTypeConfig.h>
28# include <memory>
29# include <MemoryStorage.h>
30namespace dftfe
31{
32 void
34 std::shared_ptr<
35 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::DEVICE>>
36 &BLASWrapperPtr,
37 const std::pair<dftfe::uInt, dftfe::uInt> cellRange,
38 const std::pair<dftfe::uInt, dftfe::uInt> vecRange,
39 const dftfe::uInt nQuadsPerCell,
40 const double kcoordx,
41 const double kcoordy,
42 const double kcoordz,
43 double *partialOccupVec,
44 double *eigenValuesVec,
45 dataTypes::number *wfcQuadPointData,
46 dataTypes::number *gradWfcQuadPointData,
47 double *eshelbyContributions,
48 double *eshelbyTensor,
49 const bool floatingNuclearCharges,
50 const bool isTauMGGA,
51 double *pdexTauLocallyOwnedCellsBlock,
52 double *pdecTauLocallyOwnedCellsBlock,
53 const bool computeForce,
54 const bool computeStress);
55
56 void
58 std::shared_ptr<
59 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::DEVICE>>
60 &BLASWrapperPtr,
61 const dftfe::uInt wfcBlockSize,
62 const dftfe::uInt blockSizeNlp,
63 const dftfe::uInt numQuadsNLP,
64 const dftfe::uInt startingIdNlp,
65 const dataTypes::number *projectorKetTimesVectorPar,
66 const dataTypes::number *gradPsiOrPsiQuadValuesNLP,
67 const dftfe::uInt *nonTrivialIdToElemIdMap,
68 const dftfe::uInt *projecterKetTimesFlattenedVectorLocalIds,
69 dataTypes::number *nlpContractionContribution);
70} // namespace dftfe
71#endif
72#endif
double number
Definition dftfeDataTypes.h:41
The functions in this namespace contain the expressions for the various terms of the configurational ...
Definition eshelbyTensor.h:65
Definition pseudoPotentialToDftfeConverter.cc:34
std::uint32_t uInt
Definition TypeConfig.h:10
void computeWavefuncEshelbyContributionLocal(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, const double kcoordx, const double kcoordy, const double kcoordz, double *partialOccupVec, double *eigenValuesVec, dataTypes::number *wfcQuadPointData, dataTypes::number *gradWfcQuadPointData, double *eshelbyContributions, double *eshelbyTensor, const bool floatingNuclearCharges, const bool isTauMGGA, double *pdexTauLocallyOwnedCellsBlock, double *pdecTauLocallyOwnedCellsBlock, const bool computeForce, const bool computeStress)
void nlpWfcContractionContribution(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const dftfe::uInt wfcBlockSize, const dftfe::uInt blockSizeNlp, const dftfe::uInt numQuadsNLP, const dftfe::uInt startingIdNlp, const dataTypes::number *projectorKetTimesVectorPar, const dataTypes::number *gradPsiOrPsiQuadValuesNLP, const dftfe::uInt *nonTrivialIdToElemIdMap, const dftfe::uInt *projecterKetTimesFlattenedVectorLocalIds, dataTypes::number *nlpContractionContribution)