17 { 1. / 2, 1. / 2, -1. / 2, -1. / 2 },
18 { 1. / 2, -1. / 2, 1. / 2, -1. / 2 },
19 { 1. / 2, -1. / 2, -1. / 2, 1. / 2 } };
21 { 1. / 2, -1. / 2, 1. / 2, 1. / 2 },
22 { 1. / 2, 1. / 2, -1. / 2, 1. / 2 },
23 { 1. / 2, 1. / 2, 1. / 2, -1. / 2 } };
42 pVector->
SetAt(i++, lpParameter->
fEsc, 0);
43 pVector->
SetAt(i++, lpParameter->
fEpc, 0);
44 pVector->
SetAt(i++, lpParameter->
fEpc, 0);
45 pVector->
SetAt(i++, lpParameter->
fEpc, 0);
47 pVector->
SetAt(i++, lpParameter->
fEdc, 0);
48 pVector->
SetAt(i++, lpParameter->
fEdc, 0);
49 pVector->
SetAt(i++, lpParameter->
fEdc, 0);
50 pVector->
SetAt(i++, lpParameter->
fEdc, 0);
51 pVector->
SetAt(i++, lpParameter->
fEdc, 0);
61 pVector->
SetAt(i++, lpParameter->
fEsa, 0);
62 pVector->
SetAt(i++, lpParameter->
fEpa, 0);
63 pVector->
SetAt(i++, lpParameter->
fEpa, 0);
64 pVector->
SetAt(i++, lpParameter->
fEpa, 0);
66 pVector->
SetAt(i++, lpParameter->
fEda, 0);
67 pVector->
SetAt(i++, lpParameter->
fEda, 0);
68 pVector->
SetAt(i++, lpParameter->
fEda, 0);
69 pVector->
SetAt(i++, lpParameter->
fEda, 0);
70 pVector->
SetAt(i++, lpParameter->
fEda, 0);
84 pMatrixHonsiteAnion->
SetDiagonal(vectorDiagonalTemp);
86 pMatrixHonsiteCation->
SetDiagonal(vectorDiagonalTemp);
103 double fNormValue, fValueArray[10][10];
107 int mapKey = materialFrom | materialDest;
116 for (i = 0; i < 4; ++i)
122 parameterNeighbor = materialParam.
BuildMaterialParam(materialFrom, materialDest, bRtn);
127 for (i = 0; i < 4; i++)
130 fNormValue = vectorNbr.
GetNorm();
136 fValueArray[0][0] = parameterNeighbor.
fVsasc; fValueArray[0][1] = parameterNeighbor.
fVsapxc; fValueArray[0][2] = parameterNeighbor.
fVsapyc; fValueArray[0][3] = parameterNeighbor.
fVsapzc; fValueArray[0][4] = parameterNeighbor.
fVsastc; fValueArray[0][5] = parameterNeighbor.
fVsad1c; fValueArray[0][6] = parameterNeighbor.
fVsad2c; fValueArray[0][7] = parameterNeighbor.
fVsad3c; fValueArray[0][8] = parameterNeighbor.
fVsad4c; fValueArray[0][9] = parameterNeighbor.
fVsad5c;
137 fValueArray[1][0] = parameterNeighbor.
fVpxasc; fValueArray[1][1] = parameterNeighbor.
fVpxapxc; fValueArray[1][2] = parameterNeighbor.
fVpxapyc; fValueArray[1][3] = parameterNeighbor.
fVpxapzc; fValueArray[1][4] = parameterNeighbor.
fVpxastc; fValueArray[1][5] = parameterNeighbor.
fVpxad1c; fValueArray[1][6] = parameterNeighbor.
fVpxad2c; fValueArray[1][7] = parameterNeighbor.
fVpxad3c; fValueArray[1][8] = parameterNeighbor.
fVpxad4c; fValueArray[1][9] = parameterNeighbor.
fVpxad5c;
138 fValueArray[2][0] = parameterNeighbor.
fVpyasc; fValueArray[2][1] = parameterNeighbor.
fVpyapxc; fValueArray[2][2] = parameterNeighbor.
fVpyapyc; fValueArray[2][3] = parameterNeighbor.
fVpyapzc; fValueArray[2][4] = parameterNeighbor.
fVpyastc; fValueArray[2][5] = parameterNeighbor.
fVpyad1c; fValueArray[2][6] = parameterNeighbor.
fVpyad2c; fValueArray[2][7] = parameterNeighbor.
fVpyad3c; fValueArray[2][8] = parameterNeighbor.
fVpyad4c; fValueArray[2][9] = parameterNeighbor.
fVpyad5c;
139 fValueArray[3][0] = parameterNeighbor.
fVpzasc; fValueArray[3][1] = parameterNeighbor.
fVpzapxc; fValueArray[3][2] = parameterNeighbor.
fVpzapyc; fValueArray[3][3] = parameterNeighbor.
fVpzapzc; fValueArray[3][4] = parameterNeighbor.
fVpzastc; fValueArray[3][5] = parameterNeighbor.
fVpzad1c; fValueArray[3][6] = parameterNeighbor.
fVpzad2c; fValueArray[3][7] = parameterNeighbor.
fVpzad3c; fValueArray[3][8] = parameterNeighbor.
fVpzad4c; fValueArray[3][9] = parameterNeighbor.
fVpzad5c;
140 fValueArray[4][0] = parameterNeighbor.
fVstasc; fValueArray[4][1] = parameterNeighbor.
fVstapxc; fValueArray[4][2] = parameterNeighbor.
fVstapyc; fValueArray[4][3] = parameterNeighbor.
fVstapzc; fValueArray[4][4] = parameterNeighbor.
fVstastc; fValueArray[4][5] = parameterNeighbor.
fVstad1c; fValueArray[4][6] = parameterNeighbor.
fVstad2c; fValueArray[4][7] = parameterNeighbor.
fVstad3c; fValueArray[4][8] = parameterNeighbor.
fVstad4c; fValueArray[4][9] = parameterNeighbor.
fVstad5c;
141 fValueArray[5][0] = parameterNeighbor.
fVd1asc; fValueArray[5][1] = parameterNeighbor.
fVd1apxc; fValueArray[5][2] = parameterNeighbor.
fVd1apyc; fValueArray[5][3] = parameterNeighbor.
fVd1apzc; fValueArray[5][4] = parameterNeighbor.
fVd1astc; fValueArray[5][5] = parameterNeighbor.
fVd1ad1c; fValueArray[5][6] = parameterNeighbor.
fVd1ad2c; fValueArray[5][7] = parameterNeighbor.
fVd1ad3c; fValueArray[5][8] = parameterNeighbor.
fVd1ad4c; fValueArray[5][9] = parameterNeighbor.
fVd1ad5c;
142 fValueArray[6][0] = parameterNeighbor.
fVd2asc; fValueArray[6][1] = parameterNeighbor.
fVd2apxc; fValueArray[6][2] = parameterNeighbor.
fVd2apyc; fValueArray[6][3] = parameterNeighbor.
fVd2apzc; fValueArray[6][4] = parameterNeighbor.
fVd2astc; fValueArray[6][5] = parameterNeighbor.
fVd2ad1c; fValueArray[6][6] = parameterNeighbor.
fVd2ad2c; fValueArray[6][7] = parameterNeighbor.
fVd2ad3c; fValueArray[6][8] = parameterNeighbor.
fVd2ad4c; fValueArray[6][9] = parameterNeighbor.
fVd2ad5c;
143 fValueArray[7][0] = parameterNeighbor.
fVd3asc; fValueArray[7][1] = parameterNeighbor.
fVd3apxc; fValueArray[7][2] = parameterNeighbor.
fVd3apyc; fValueArray[7][3] = parameterNeighbor.
fVd3apzc; fValueArray[7][4] = parameterNeighbor.
fVd3astc; fValueArray[7][5] = parameterNeighbor.
fVd3ad1c; fValueArray[7][6] = parameterNeighbor.
fVd3ad2c; fValueArray[7][7] = parameterNeighbor.
fVd3ad3c; fValueArray[7][8] = parameterNeighbor.
fVd3ad4c; fValueArray[7][9] = parameterNeighbor.
fVd3ad5c;
144 fValueArray[8][0] = parameterNeighbor.
fVd4asc; fValueArray[8][1] = parameterNeighbor.
fVd4apxc; fValueArray[8][2] = parameterNeighbor.
fVd4apyc; fValueArray[8][3] = parameterNeighbor.
fVd4apzc; fValueArray[8][4] = parameterNeighbor.
fVd4astc; fValueArray[8][5] = parameterNeighbor.
fVd4ad1c; fValueArray[8][6] = parameterNeighbor.
fVd4ad2c; fValueArray[8][7] = parameterNeighbor.
fVd4ad3c; fValueArray[8][8] = parameterNeighbor.
fVd4ad4c; fValueArray[8][9] = parameterNeighbor.
fVd4ad5c;
145 fValueArray[9][0] = parameterNeighbor.
fVd5asc; fValueArray[9][1] = parameterNeighbor.
fVd5apxc; fValueArray[9][2] = parameterNeighbor.
fVd5apyc; fValueArray[9][3] = parameterNeighbor.
fVd5apzc; fValueArray[9][4] = parameterNeighbor.
fVd5astc; fValueArray[9][5] = parameterNeighbor.
fVd5ad1c; fValueArray[9][6] = parameterNeighbor.
fVd5ad2c; fValueArray[9][7] = parameterNeighbor.
fVd5ad3c; fValueArray[9][8] = parameterNeighbor.
fVd5ad4c; fValueArray[9][9] = parameterNeighbor.
fVd5ad5c;
147 for (j = 0; j < 10; j++)
148 for (k = 0; k < 10; k++)
149 pMatrixNbr[i]->SetElement(j, k, fValueArray[j][k], 0);
154 for (i = 0; i < 4; i++)
157 fNormValue = vectorNbr.
GetNorm();
163 fValueArray[0][0] = parameterNeighbor.
fVscsa; fValueArray[0][1] = parameterNeighbor.
fVscpxa; fValueArray[0][2] = parameterNeighbor.
fVscpya; fValueArray[0][3] = parameterNeighbor.
fVscpza; fValueArray[0][4] = parameterNeighbor.
fVscsta; fValueArray[0][5] = parameterNeighbor.
fVscd1a; fValueArray[0][6] = parameterNeighbor.
fVscd2a; fValueArray[0][7] = parameterNeighbor.
fVscd3a; fValueArray[0][8] = parameterNeighbor.
fVscd4a; fValueArray[0][9] = parameterNeighbor.
fVscd5a;
164 fValueArray[1][0] = parameterNeighbor.
fVpxcsa; fValueArray[1][1] = parameterNeighbor.
fVpxcpxa; fValueArray[1][2] = parameterNeighbor.
fVpxcpya; fValueArray[1][3] = parameterNeighbor.
fVpxcpza; fValueArray[1][4] = parameterNeighbor.
fVpxcsta; fValueArray[1][5] = parameterNeighbor.
fVpxcd1a; fValueArray[1][6] = parameterNeighbor.
fVpxcd2a; fValueArray[1][7] = parameterNeighbor.
fVpxcd3a; fValueArray[1][8] = parameterNeighbor.
fVpxcd4a; fValueArray[1][9] = parameterNeighbor.
fVpxcd5a;
165 fValueArray[2][0] = parameterNeighbor.
fVpycsa; fValueArray[2][1] = parameterNeighbor.
fVpycpxa; fValueArray[2][2] = parameterNeighbor.
fVpycpya; fValueArray[2][3] = parameterNeighbor.
fVpycpza; fValueArray[2][4] = parameterNeighbor.
fVpycsta; fValueArray[2][5] = parameterNeighbor.
fVpycd1a; fValueArray[2][6] = parameterNeighbor.
fVpycd2a; fValueArray[2][7] = parameterNeighbor.
fVpycd3a; fValueArray[2][8] = parameterNeighbor.
fVpycd4a; fValueArray[2][9] = parameterNeighbor.
fVpycd5a;
166 fValueArray[3][0] = parameterNeighbor.
fVpzcsa; fValueArray[3][1] = parameterNeighbor.
fVpzcpxa; fValueArray[3][2] = parameterNeighbor.
fVpzcpya; fValueArray[3][3] = parameterNeighbor.
fVpzcpza; fValueArray[3][4] = parameterNeighbor.
fVpzcsta; fValueArray[3][5] = parameterNeighbor.
fVpzcd1a; fValueArray[3][6] = parameterNeighbor.
fVpzcd2a; fValueArray[3][7] = parameterNeighbor.
fVpzcd3a; fValueArray[3][8] = parameterNeighbor.
fVpzcd4a; fValueArray[3][9] = parameterNeighbor.
fVpzcd5a;
167 fValueArray[4][0] = parameterNeighbor.
fVstcsa; fValueArray[4][1] = parameterNeighbor.
fVstcpxa; fValueArray[4][2] = parameterNeighbor.
fVstcpya; fValueArray[4][3] = parameterNeighbor.
fVstcpza; fValueArray[4][4] = parameterNeighbor.
fVstcsta; fValueArray[4][5] = parameterNeighbor.
fVstcd1a; fValueArray[4][6] = parameterNeighbor.
fVstcd2a; fValueArray[4][7] = parameterNeighbor.
fVstcd3a; fValueArray[4][8] = parameterNeighbor.
fVstcd4a; fValueArray[4][9] = parameterNeighbor.
fVstcd5a;
168 fValueArray[5][0] = parameterNeighbor.
fVd1csa; fValueArray[5][1] = parameterNeighbor.
fVd1cpxa; fValueArray[5][2] = parameterNeighbor.
fVd1cpya; fValueArray[5][3] = parameterNeighbor.
fVd1cpza; fValueArray[5][4] = parameterNeighbor.
fVd1csta; fValueArray[5][5] = parameterNeighbor.
fVd1cd1a; fValueArray[5][6] = parameterNeighbor.
fVd1cd2a; fValueArray[5][7] = parameterNeighbor.
fVd1cd3a; fValueArray[5][8] = parameterNeighbor.
fVd1cd4a; fValueArray[5][9] = parameterNeighbor.
fVd1cd5a;
169 fValueArray[6][0] = parameterNeighbor.
fVd2csa; fValueArray[6][1] = parameterNeighbor.
fVd2cpxa; fValueArray[6][2] = parameterNeighbor.
fVd2cpya; fValueArray[6][3] = parameterNeighbor.
fVd2cpza; fValueArray[6][4] = parameterNeighbor.
fVd2csta; fValueArray[6][5] = parameterNeighbor.
fVd2cd1a; fValueArray[6][6] = parameterNeighbor.
fVd2cd2a; fValueArray[6][7] = parameterNeighbor.
fVd2cd3a; fValueArray[6][8] = parameterNeighbor.
fVd2cd4a; fValueArray[6][9] = parameterNeighbor.
fVd2cd5a;
170 fValueArray[7][0] = parameterNeighbor.
fVd3csa; fValueArray[7][1] = parameterNeighbor.
fVd3cpxa; fValueArray[7][2] = parameterNeighbor.
fVd3cpya; fValueArray[7][3] = parameterNeighbor.
fVd3cpza; fValueArray[7][4] = parameterNeighbor.
fVd3csta; fValueArray[7][5] = parameterNeighbor.
fVd3cd1a; fValueArray[7][6] = parameterNeighbor.
fVd3cd2a; fValueArray[7][7] = parameterNeighbor.
fVd3cd3a; fValueArray[7][8] = parameterNeighbor.
fVd3cd4a; fValueArray[7][9] = parameterNeighbor.
fVd3cd5a;
171 fValueArray[8][0] = parameterNeighbor.
fVd4csa; fValueArray[8][1] = parameterNeighbor.
fVd4cpxa; fValueArray[8][2] = parameterNeighbor.
fVd4cpya; fValueArray[8][3] = parameterNeighbor.
fVd4cpza; fValueArray[8][4] = parameterNeighbor.
fVd4csta; fValueArray[8][5] = parameterNeighbor.
fVd4cd1a; fValueArray[8][6] = parameterNeighbor.
fVd4cd2a; fValueArray[8][7] = parameterNeighbor.
fVd4cd3a; fValueArray[8][8] = parameterNeighbor.
fVd4cd4a; fValueArray[8][9] = parameterNeighbor.
fVd4cd5a;
172 fValueArray[9][0] = parameterNeighbor.
fVd5csa; fValueArray[9][1] = parameterNeighbor.
fVd5cpxa; fValueArray[9][2] = parameterNeighbor.
fVd5cpya; fValueArray[9][3] = parameterNeighbor.
fVd5cpza; fValueArray[9][4] = parameterNeighbor.
fVd5csta; fValueArray[9][5] = parameterNeighbor.
fVd5cd1a; fValueArray[9][6] = parameterNeighbor.
fVd5cd2a; fValueArray[9][7] = parameterNeighbor.
fVd5cd3a; fValueArray[9][8] = parameterNeighbor.
fVd5cd4a; fValueArray[9][9] = parameterNeighbor.
fVd5cd5a;
174 for (j = 0; j < 10; j++)
175 for (k = 0; k < 10; k++)
176 pMatrixNbr[i]->SetElement(j, k, fValueArray[j][k], 0);
183 for (i = 0; i < 4; ++i)
199 double ac_nbr_100[4][3] = { { 0.25, 0.25, 0.25 },
200 { 0.25, -0.25, -0.25 },
201 { -0.25, 0.25, -0.25 },
202 { -0.25, -0.25, 0.25 } };
204 double ca_nbr_100[4][3] = { { -0.25, -0.25, -0.25 },
205 { -0.25, 0.25, 0.25 },
206 { 0.25, -0.25, 0.25 },
207 { 0.25, 0.25, -0.25 } };
211 for (i = 0; i < 4; i++)
213 for (j = 0; j < 3; j++)
215 matrixACNbr.
SetElement(i, j, ac_nbr_100[i][j], 0);
216 matrixCANbr.
SetElement(i, j, ca_nbr_100[i][j], 0);
232 *pMatrixACNbr = matrixACNbr;
233 *pMatrixCANbr = matrixCANbr;
248 double nTotalAtomSize = 0;
278 unsigned int i, j, nInsertColumn;
279 const double fBondingE = 30.;
298 InitMatirxsFor10BandFillMatrix(&matrixTransAnion, &matrixTransAnionTranspos, &matrixTransCation, &matrixTransCationTranspos, &matrixTempSpinUp, &matrixTempSpinUpResult, &matrixHonsiteAnion, &matrixHonsiteCation);
305 double fNeighborIndex[4];
306 int nMatrixIndex = 0;
316 for (j = 0; j < 4; ++j)
317 fNeighborIndex[j] = lpMapInfo->
pfNeighbor[j][i];
321 pMatrixHonsite = &matrixHonsiteAnion;
322 matrixTrans = &matrixTransAnion;
323 matrixTransTranspos = &matrixTransAnionTranspos;
327 pMatrixHonsite = &matrixHonsiteCation;
328 matrixTrans = &matrixTransCation;
329 matrixTransTranspos = &matrixTransCationTranspos;
331 matrixHonsitePassivated = pMatrixHonsite;
332 pMatrixHonsite = &matrixHonsitePassivated;
334 for (j = 0; j < 4; j++)
345 tempNumber = matrixTempSpinUpResult.
GetElement(j, j);
347 matrixTempSpinUpResult.
SetElement(j, j, tempNumber);
353 matrixSymetic = matrixTempSpinUpResult;
355 matrixSymetic += matrixTempSpinUpResult;
358 pMatrixHonsite->
SetElement(0, 0, 0, 0, 4, 4, matrixSymetic);
361 elementData[j + 1].
pMatrix = NULL;
379 elementData[j + 1].
nColumnIndex = (int)fNeighborIndex[j];
383 #ifdef DISABLE_MPI_ROUTINE
385 #else //DISABLE_MPI_ROUTINE
387 #endif //DISABLE_MPI_ROUTINE
389 elementData[0].
pMatrix = pMatrixHonsite;
404 double fNeighborIndex[4];
410 int nMatrixIndex = 0;
412 for (j = 0; j < 4; ++j)
414 fNeighborIndex[j] = lpMapInfo->
pfNeighbor[j][i];
418 for (j = 0; j < 4; j++)
441 for (i = 0; i < 4; ++i)
443 for (j = 0; j < 3; ++j)
448 for (j = 0; j < 3; ++j)
452 for (i = 0; i < 4; ++i)
454 for (j = 0; j < 3; ++j)
459 for (j = 0; j < 3; ++j)
534 for (i = 0; i < 4; i++)
536 for (j = 0; j < 4; j++)
bool SetDiagonal(CKNVector vector)
Set diagonal elements.
void SetSize(unsigned int nSize)
Set Vector elements size.
static unsigned int m_fAtomIDStartIndex
Start index of atom in shape, using in MPI running enviroment.
bool InsertMatrix(unsigned int nRow, unsigned int nColumn, unsigned int nRowStart, unsigned int nColumnStart, unsigned int nRowCount, unsigned int nColumnCount, CKNMatrixOperation::CKNDMatrix *pMatrix, bool bCopyZero)
Set element by reference matrix.
static bool BuildHamiltonian(CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam, LPNEIGHBOR_MAP_INFO lpMapInfo, CKNMatrixOperation::CKNCSR *pCSRResult, unsigned int fAtomStartID)
Build Hamiltonian matrxi from mapinfo data.
bool * pbPeriodicCondition[MAX_NEIGHBOR]
An array of Neighbor no 1 bondary condition.
static unsigned int m_nBandSize
Band size 5, 10, 20.
static void InitMatirxsFor10BandFillMatrix(CKNMatrixOperation::CKNDMatrix *pMatrixTransAnion, CKNMatrixOperation::CKNDMatrix *pMatrixTransAnionTranspos, CKNMatrixOperation::CKNDMatrix *pMatrixTransCation, CKNMatrixOperation::CKNDMatrix *pMatrixTransCationTranspos, CKNMatrixOperation::CKNDMatrix *pMatrixTempSpinUp, CKNMatrixOperation::CKNDMatrix *pMatrixTempSpinUpResult, CKNMatrixOperation::CKNDMatrix *pMatrixHonsiteAnion, CKNMatrixOperation::CKNDMatrix *pMatrixHonsiteCation)
Initializing matrix for 10 band basis Hamiltonian.
static void BuildHaaDiagonalFor10Band(CKNMatrixOperation::CKNVector *pVector, LPGEO_PARAMETER lpParameter)
Build aion diagonal basic element.
bool GetSmallMatrix(unsigned int nRowStartIndex, unsigned int nColumnStartIndex, unsigned int nRowCount, unsigned int nColumnCount, CKNMatrixOperation::CKNDMatrix *pMatrix)
Get matrix from large matrix.
This class includes functions for Hamiltonian building.
Data and operation representation of Matrix.
static bool FillMatrixFor10Band(CKNMatrixOperation::CKNCSR *pResult, CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam, LPNEIGHBOR_MAP_INFO lpMapInfo)
Fill Hamiltonian matrix.
static void BuildHccDiagonalFor10Band(CKNMatrixOperation::CKNVector *pVector, LPGEO_PARAMETER lpParameter)
Build cation diagonal basic element.
double GetRealNumber() const
Get real part.
Data and operation representation of CSR(Compressed Sparse Row)
static double m_Trans_cation[4][4]
Trans matrix for cation.
static void BuildACCANeighborFor10Band(CKNMatrixOperation::CKNDMatrix *pMatrixACNbr, CKNMatrixOperation::CKNDMatrix *pMatrixCANbr, CKNCommandFileParser::LPINPUT_CMD_PARAM lpParam)
Build aion to cation, cation to aion direction calculation elements.
Class for calculating parameter.
MATERIAL_INDEX * pNeighborMaterial[MAX_NEIGHBOR]
An array of Neighbor material Number.
double fVd5cd5a
--------------------— To this point generated by twoCenterl
static map< int, unsigned int > m_mapMatrixIndex
Hamiltonian offdiagonal elements mapper.
static vector< CKNMatrixOperation::CKNDMatrix * > m_vectMatrixNbr
Hamiltonian offdiagonal elements.
GEO_PARAMETER BuildMaterialParam(char *pszMaterialName, bool &bResult)
Load material parameter.
Class for calculating parameter.
unsigned int nBandSize
Band basis size.
static void MMMul(CKNDMatrix *pMatrix, CKNDMatrix *pMatrixOperand, CKNDMatrix *pResult)
Matrix and matrix multiple operation.
static void BuildHonsiteBasicMatrixFor10Band(CKNMatrixOperation::CKNDMatrix *pMatrixHonsiteAnion, CKNMatrixOperation::CKNDMatrix *pMatrixHonsiteCation, LPGEO_PARAMETER lpParameter)
Build aion and cation basic element.
bool bNeedRotate
Calculation parameter that need to apply rotation matrix.
static void InitTransMatrixFor10Band()
Initializing Trans matrix for 10 band basis Hamiltonian.
Structure for save input command file parsing result.
CKNComplex GetAt(unsigned int nIndex)
Get element value from specific index.
bool TrnasPos()
Transpos matrix.
bool PushMatrixConcurrent(unsigned int nRow, CKNMatrixOperation::LPFILL_MATRIX_DATA lpData, bool bCopyZeroOnSite)
Pushing matrix into CSR several sub matrixs.
double fItemCount
Item count at atom map.
bool SetElement(unsigned int nRow, unsigned int nColumn, CKNComplex element)
Set matrix elements value.
Class for Material Parameter.
#define ATOM_DEFAULT_INDEX
Atom index default value that empty atom instance.
static void MVMul(CKNCSR *pAMatrix, CKNVector *pVector, CKNVector *pResult)
Matrix and vector multiple operation.
void BuildTwoCenterlParam(GEO_PARAMETER ¶meter, CKNGeometricAtom::ATOM_TYPE type)
Calculating parameter.
double * pfNeighbor[MAX_NEIGHBOR]
An array of Neighbor no 1 index.
Class for Geometric shape.
void Finalize()
Free allocated memory for vector elements.
void ScalarDivision(double fScalar)
Scalar division operation.
static double m_Trans_anion[4][4]
Trans matrix for anion.
double GetNorm(bool bMPI=false)
Getting norm of vector.
CKNComplex GetElement(unsigned int nRowIndex, unsigned int nColumnIndex)
Get matrix element with row, column index.
void SetAt(unsigned int nIndex, CKNComplex value)
Set element value in specific index, Call by value.
static void ResetPeriodicBinding(CKNMatrixOperation::CKNCSR *pResult, LPNEIGHBOR_MAP_INFO lpMapInfo)
Reset Hamiltonian before applying phase.
static void RotateTransMatrixFor10Band()
Rotating 10 band basis anion and cation base matrix.
void SetRealNumber(double fRealNumber)
Set real part.
This class for complex operation and saving value.
MATERIAL_INDEX * pMaterialNumber
An array of Atom number.
CKNGeometricAtom::ATOM_TYPE * pAtomType
An array of atom type 0:A, 1:C.
Structure for saving geometric parameter.
bool GetRowByVector(unsigned int nRowIndex, CKNMatrixOperation::CKNVector *pVector)
Get row elements.
static void FinalizeMatrixBuffer()
Release all temporary buffer.
Class for Material Parameter.
MATERIAL_INDEX * pDomainMaterialNumber
An array of Domain Atom number.
bool BuildMatrixFirst(unsigned int nRow, unsigned int nColumn)
Building matrix elements.
CKNMatrixOperation::CKNDMatrix * pMatrix
Structure for neighbor information.
Hamiltonian building data.
static CKNMatrixOperation::CKNDMatrix m_rotationMatrix
Rotation matrix for given direction.
This class for describing vector for Lanczos method.
static void BuildOffsiteMatrixFor10Band(GEO_PARAMETER ¶meter, CKNMatrixOperation::CKNDMatrix *pMatrixACNbr, MATERIAL_INDEX materialFrom, MATERIAL_INDEX materialDest, CKNGeometricAtom::ATOM_TYPE type)
Build offdiable elements.