IPCC  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
CCommandFileParser Class Reference

This class for parsing input command file. More...

#include "CommandFileParser.h"

Collaboration diagram for CCommandFileParser:
Collaboration graph

Classes

struct  INPUT_CMD_PARAM
 Structure for save input command file parsing result. More...
 

Public Types

typedef struct
CCommandFileParser::INPUT_CMD_PARAM
LPINPUT_CMD_PARAM
 

Public Member Functions

 CCommandFileParser ()
 
 ~CCommandFileParser ()
 

Static Public Member Functions

static LPINPUT_CMD_PARAM ParsingInputCommand (char *pszInputCommnadFileName)
 Parsing Commaind file. More...
 

Static Private Member Functions

static void GetValueAfterEqualString (char *pszOption, char *pszValue)
 Extracting string after equal charater postion. More...
 
static void SetOptionParam (LPINPUT_CMD_PARAM lpParam, char *pszOption, int nHash, int nOptIndex)
 Setting option variable. More...
 
static void TrimString (char *pszBuffer)
 Trim string using white spapce including ' '. More...
 
static void TrimStringEx (char *pszBuffer)
 Trim string using white spapce not including ' '. More...
 
static void TrimSpaceEdge (char *pszBuffer)
 Trim space both side of string. More...
 
static void ExtractParam (char *pszBuffer, double *pParam, int nParamSize)
 Extracing paramter in string. More...
 
static void InitializeInputData (LPINPUT_CMD_PARAM lpParam)
 Initialize some default parameter. More...
 
static unsigned int ExtractOptionIndex (char *pszBuffer, int nHash, int nOptIndex)
 Get Number of Index. ex) Geometry_Origin(1)=[ 0 0 0 ], -> Get '1' from option string. More...
 

Detailed Description

This class for parsing input command file.

Date
2014/9/30

Definition at line 14 of file CommandFileParser.h.

Member Typedef Documentation

Constructor & Destructor Documentation

CCommandFileParser::CCommandFileParser ( )

Definition at line 47 of file CommandFileParser.cpp.

48 {
49 }
CCommandFileParser::~CCommandFileParser ( )

Definition at line 51 of file CommandFileParser.cpp.

52 {
53 }

Member Function Documentation

unsigned int CCommandFileParser::ExtractOptionIndex ( char *  pszBuffer,
int  nHash,
int  nOptIndex 
)
staticprivate

Get Number of Index. ex) Geometry_Origin(1)=[ 0 0 0 ], -> Get '1' from option string.

Parameters
pszBufferTarget string
nHashHash value
nOptIndexOption index

Definition at line 671 of file CommandFileParser.cpp.

References g_inputOption.

Referenced by SetOptionParam().

672 {
673  int nStart = strlen(g_inputOption[nHash][nOptIndex]) + 1;
674  char szNumber[10];
675  unsigned int nLastIndex, i;
676 
677  nLastIndex = 99999;
678  for (i = nStart; i < strlen(pszBuffer); ++i)
679  {
680  if (')' == pszBuffer[i])
681  {
682  nLastIndex = i;
683  break;
684  }
685  }
686 
687  if (99999 == nLastIndex)
688  return 0;
689 
690  strncpy(szNumber, pszBuffer + nStart, nLastIndex - nStart);
691  szNumber[nLastIndex - nStart] = NULL;
692  if (0 == strlen(szNumber))
693  return 0;
694  else
695  return atoi(szNumber);
696 }
char * g_inputOption[27][MAX_INPUTOPTION_HASH_NUMBER]

Here is the caller graph for this function:

void CCommandFileParser::ExtractParam ( char *  pszBuffer,
double *  pParam,
int  nParamSize 
)
staticprivate

Extracing paramter in string.

Parameters
pszBufferString buffer that want to extract parameters
[out]pParamBuffer for saving parmeters
nParamSizeCount that want to extract

Definition at line 124 of file CommandFileParser.cpp.

Referenced by SetOptionParam().

125 {
126  char *token = NULL;
127  char strSperate[] = " ";
128  int nCount = 0;
129 
130  token = strtok(pszBuffer, strSperate);
131 
132  while (token != NULL)
133  {
134  pParam[nCount++] = atof(token);
135 
136  if (nParamSize == nCount)
137  break;
138 
139  token = strtok(NULL, strSperate);
140  }
141 }

Here is the caller graph for this function:

void CCommandFileParser::GetValueAfterEqualString ( char *  pszOption,
char *  pszValue 
)
staticprivate

Extracting string after equal charater postion.

Parameters
pszOptionString that include parameter
[out]pszValueData buffer for saving option value

Definition at line 525 of file CommandFileParser.cpp.

Referenced by SetOptionParam().

526 {
527  strcpy(pszValue, strrchr(pszOption, '=') + 1);;
528 }

Here is the caller graph for this function:

void CCommandFileParser::InitializeInputData ( LPINPUT_CMD_PARAM  lpParam)
staticprivate

Initialize some default parameter.

Parameters
lpParamparameter structure for initialization

Definition at line 595 of file CommandFileParser.cpp.

References CCommandFileParser::INPUT_CMD_PARAM::bCalculateEigenVectors, CCommandFileParser::INPUT_CMD_PARAM::bCalculateWaveFunction, CCommandFileParser::INPUT_CMD_PARAM::bConsiderBoundaryCondition, CCommandFileParser::INPUT_CMD_PARAM::bConsiderNeumannBoundaryCondition, CCommandFileParser::INPUT_CMD_PARAM::bDoSelectiveReorthogonalization, CCommandFileParser::INPUT_CMD_PARAM::bMappingZBtoCB, CCommandFileParser::INPUT_CMD_PARAM::bNeedRotate, BOX_SHAPE, CCommandFileParser::INPUT_CMD_PARAM::bSaveContactBiasVector, CCommandFileParser::INPUT_CMD_PARAM::bSaveHamiltonian, CCommandFileParser::INPUT_CMD_PARAM::bSaveMapFile, CCommandFileParser::INPUT_CMD_PARAM::bSaveWaveVector, CCommandFileParser::INPUT_CMD_PARAM::fCGConvergenceCriteria, CCommandFileParser::INPUT_CMD_PARAM::fConvergeceCriteria, CCommandFileParser::INPUT_CMD_PARAM::fDirection, CCommandFileParser::INPUT_CMD_PARAM::fevMax, CCommandFileParser::INPUT_CMD_PARAM::fevMin, CCommandFileParser::INPUT_CMD_PARAM::fKPoints, CCommandFileParser::INPUT_CMD_PARAM::fKValueFinal, CCommandFileParser::INPUT_CMD_PARAM::fKValueInit, CCommandFileParser::INPUT_CMD_PARAM::fOrigin, CCommandFileParser::INPUT_CMD_PARAM::fShapeLength, CCommandFileParser::INPUT_CMD_PARAM::fUnitcellLength, CCommandFileParser::INPUT_CMD_PARAM::load_in_MIC, CCommandFileParser::INPUT_CMD_PARAM::nBandSize, CCommandFileParser::INPUT_CMD_PARAM::nCGIterationCount, CCommandFileParser::INPUT_CMD_PARAM::nCheckCGInterval, CCommandFileParser::INPUT_CMD_PARAM::nCheckEigenvalueInterval, CCommandFileParser::INPUT_CMD_PARAM::nContactNumber, CCommandFileParser::INPUT_CMD_PARAM::nDirectionSingle, CCommandFileParser::INPUT_CMD_PARAM::nFindingDegeneratedEVCount, CCommandFileParser::INPUT_CMD_PARAM::nFindingEigenValueCount, CCommandFileParser::INPUT_CMD_PARAM::nLanczosIterationCount, CCommandFileParser::INPUT_CMD_PARAM::nMPILevel, CCommandFileParser::INPUT_CMD_PARAM::nShape, CCommandFileParser::INPUT_CMD_PARAM::nSubDomainNumber, CCommandFileParser::INPUT_CMD_PARAM::szDomainMat, CCommandFileParser::INPUT_CMD_PARAM::szShape, and CCommandFileParser::INPUT_CMD_PARAM::szStructureType.

Referenced by ParsingInputCommand().

596 {
597  lpParam->fUnitcellLength[0]= 0.543095;
598  lpParam->fUnitcellLength[1]= 0.543095;
599  lpParam->fUnitcellLength[2]= 0.543095;
600 
601  lpParam->fDirection[0]= 1.0;
602  lpParam->fDirection[1]= 0.0;
603  lpParam->fDirection[2]= 0.0;
604  lpParam->nDirectionSingle= 100;
605  lpParam->bNeedRotate= false;
606 
607  lpParam->bConsiderBoundaryCondition[0]= false;
608  lpParam->bConsiderBoundaryCondition[1]= false;
609  lpParam->bConsiderBoundaryCondition[2]= false;
610 
611  lpParam->bConsiderNeumannBoundaryCondition[0]= false;
612  lpParam->bConsiderNeumannBoundaryCondition[1]= false;
613  lpParam->bConsiderNeumannBoundaryCondition[2]= false;
614 
615  lpParam->nSubDomainNumber= 0;
616  lpParam->fShapeLength[0][0]= lpParam->fUnitcellLength[0]*2.0;
617  lpParam->fShapeLength[0][1]= lpParam->fUnitcellLength[1]*2.0;
618  lpParam->fShapeLength[0][2]= lpParam->fUnitcellLength[2]*2.0;
619 
620  lpParam->fOrigin[0][0]= 0.0;
621  lpParam->fOrigin[0][1]= 0.0;
622  lpParam->fOrigin[0][2]= 0.0;
623 
624  lpParam->fevMin= 0.0;
625  lpParam->fevMax= 5.0;
626  lpParam->fConvergeceCriteria= 1.0e-8;
627  lpParam->fCGConvergenceCriteria= 1.0e-8;
628 
629  lpParam->nCGIterationCount=500;
630  lpParam->nCheckCGInterval=20;
631  lpParam->nLanczosIterationCount= 500;
632  lpParam->nCheckEigenvalueInterval= 100;
633  lpParam->nFindingEigenValueCount= 5;
634  lpParam->nFindingDegeneratedEVCount= 1;
635 
636  lpParam->nContactNumber=0;
637  lpParam->bSaveContactBiasVector= false;
638  lpParam->bSaveWaveVector= false;
639  lpParam->bMappingZBtoCB= false;
640 
641  lpParam->bDoSelectiveReorthogonalization= false;
642  lpParam->bCalculateEigenVectors= false;
643  lpParam->bCalculateWaveFunction= false;
644 
645  strcpy(lpParam->szDomainMat[0],"Si");
646  strcpy(lpParam->szShape[0],"Box");
647  lpParam->nShape[0]= BOX_SHAPE;
648  strcpy(lpParam->szStructureType,"zb");
649 
650  lpParam->fKPoints= 1.0;
651  lpParam->fKValueInit[0]= 0.0;
652  lpParam->fKValueInit[1]= 0.0;
653  lpParam->fKValueInit[2]= 0.0;
654  lpParam->fKValueFinal[0]= 0.0;
655  lpParam->fKValueFinal[1]= 0.0;
656  lpParam->fKValueFinal[2]= 0.0;
657 
658  lpParam->bSaveMapFile= false;
659  lpParam->bSaveHamiltonian= false;
660  lpParam->nBandSize= 10;
661 
662  lpParam->nMPILevel = 1;
663  lpParam->load_in_MIC = 0;
664 }
#define BOX_SHAPE
Definition: Global.h:93

Here is the caller graph for this function:

CCommandFileParser::LPINPUT_CMD_PARAM CCommandFileParser::ParsingInputCommand ( char *  pszInputCommnadFileName)
static

Parsing Commaind file.

Parameters
pszInputCommnadFileNameCommand file name

Definition at line 533 of file CommandFileParser.cpp.

References g_inputOption, HASH_SARP, InitializeInputData(), MAX_INPUTOPTION_HASH_NUMBER, SetOptionParam(), and CCommandFileParser::INPUT_CMD_PARAM::szDataFileName.

Referenced by InitEnvironment(), and CTBMS_Solver::Launching_TBMS_Solver().

534 {
535  LPINPUT_CMD_PARAM lpRtn = NULL;
536  FILE *opt = NULL;
537  char szBuffer[1024];
538  int nHash;
539  int i;
540 
541  int k = 0;
542 
543  opt = fopen(pszInputCommnadFileName, "rt");
544  if (NULL == opt)
545  return lpRtn;
546 
547 
548  lpRtn = (LPINPUT_CMD_PARAM)malloc(sizeof(INPUT_CMD_PARAM));
549  memset(lpRtn, NULL, sizeof(INPUT_CMD_PARAM));
550  strcpy(lpRtn->szDataFileName, pszInputCommnadFileName);
551  InitializeInputData(lpRtn);
552 
553  while (fgets(szBuffer, 1024, opt))
554  {
555  nHash = (int)szBuffer[0];
556 
557  if (HASH_SARP == nHash)
558  continue;
559 
560  if (nHash >= 48 && nHash <= 57)
561  {
562  nHash = 26;
563  }
564  else
565  {
566  nHash -= 65;
567  if (nHash > 26)
568  nHash -= 32;
569  }
570 
571  if (nHash < 0 || nHash > 26)
572  continue;
573 
574  for (i = 0; i < MAX_INPUTOPTION_HASH_NUMBER; i++)
575  {
576  if (0 == strlen(g_inputOption[nHash][i]))
577  continue;
578 
579  if (!strncmp(g_inputOption[nHash][i], szBuffer, strlen(g_inputOption[nHash][i])))
580  {
581  SetOptionParam(lpRtn, szBuffer, nHash, i);
582  break;
583  }
584  }
585  }
586 
587  fclose(opt);
588 
589  return lpRtn;
590 }
static void SetOptionParam(LPINPUT_CMD_PARAM lpParam, char *pszOption, int nHash, int nOptIndex)
Setting option variable.
#define HASH_SARP
Command file parameter names.
char * g_inputOption[27][MAX_INPUTOPTION_HASH_NUMBER]
#define MAX_INPUTOPTION_HASH_NUMBER
static void InitializeInputData(LPINPUT_CMD_PARAM lpParam)
Initialize some default parameter.
struct CCommandFileParser::INPUT_CMD_PARAM * LPINPUT_CMD_PARAM

Here is the call graph for this function:

Here is the caller graph for this function:

void CCommandFileParser::SetOptionParam ( LPINPUT_CMD_PARAM  lpParam,
char *  pszOption,
int  nHash,
int  nOptIndex 
)
staticprivate

Setting option variable.

Parameters
[out]lpParamResult of parsing
pszOptionString that including options
nHashHash index A to #
nOptIndexSub index in save Hash

< A

< B

< C

<Added by jhkang CG conv. criteria and check interval

<Added by="" jhkang="" end>="">

< D

< E

< F

< G

< K

< L

< M

<Added by="" jhkang>="">

<Added by="" jhkang="" end>="">

< N

<Added by="" jhkang>="">

<Added by="" jhkang="" end>="">

< P

< R

< S

< W

< Z

Definition at line 149 of file CommandFileParser.cpp.

References _X, _Y, _Z, CCommandFileParser::INPUT_CMD_PARAM::bCalculateEigenVectors, CCommandFileParser::INPUT_CMD_PARAM::bCalculateWaveFunction, CCommandFileParser::INPUT_CMD_PARAM::bConsiderBoundaryCondition, CCommandFileParser::INPUT_CMD_PARAM::bConsiderNeumannBoundaryCondition, CCommandFileParser::INPUT_CMD_PARAM::bDoSelectiveReorthogonalization, CCommandFileParser::INPUT_CMD_PARAM::bMappingZBtoCB, CCommandFileParser::INPUT_CMD_PARAM::bNeedRotate, BOX_CONTACT, BOX_SHAPE, CCommandFileParser::INPUT_CMD_PARAM::bSaveContactBiasVector, CCommandFileParser::INPUT_CMD_PARAM::bSaveHamiltonian, CCommandFileParser::INPUT_CMD_PARAM::bSaveMapFile, CCommandFileParser::INPUT_CMD_PARAM::bSaveWaveVector, CCommandFileParser::INPUT_CMD_PARAM::bSortBeforeCSRBuilding, CIRCLE_CONTACT, CYLINDER_SHAPE, ExtractOptionIndex(), ExtractParam(), CCommandFileParser::INPUT_CMD_PARAM::fCGConvergenceCriteria, CCommandFileParser::INPUT_CMD_PARAM::fContactBias, CCommandFileParser::INPUT_CMD_PARAM::fContactLength, CCommandFileParser::INPUT_CMD_PARAM::fContactOrigin, CCommandFileParser::INPUT_CMD_PARAM::fConvergeceCriteria, CCommandFileParser::INPUT_CMD_PARAM::fDirection, CCommandFileParser::INPUT_CMD_PARAM::fevMax, CCommandFileParser::INPUT_CMD_PARAM::fevMin, CCommandFileParser::INPUT_CMD_PARAM::fKPoints, CCommandFileParser::INPUT_CMD_PARAM::fKValueFinal, CCommandFileParser::INPUT_CMD_PARAM::fKValueInit, CCommandFileParser::INPUT_CMD_PARAM::fOrigin, CCommandFileParser::INPUT_CMD_PARAM::fShapeLength, CCommandFileParser::INPUT_CMD_PARAM::fUnitcellLength, GetValueAfterEqualString(), CCommandFileParser::INPUT_CMD_PARAM::load_in_MIC, CCommandFileParser::INPUT_CMD_PARAM::nBandSize, CCommandFileParser::INPUT_CMD_PARAM::nCGIterationCount, CCommandFileParser::INPUT_CMD_PARAM::nCheckCGInterval, CCommandFileParser::INPUT_CMD_PARAM::nCheckEigenvalueInterval, CCommandFileParser::INPUT_CMD_PARAM::nContactNumber, CCommandFileParser::INPUT_CMD_PARAM::nContactShape, CCommandFileParser::INPUT_CMD_PARAM::nDirectionSingle, CCommandFileParser::INPUT_CMD_PARAM::nFindingDegeneratedEVCount, CCommandFileParser::INPUT_CMD_PARAM::nFindingEigenValueCount, CCommandFileParser::INPUT_CMD_PARAM::nLanczosIterationCount, CCommandFileParser::INPUT_CMD_PARAM::nMatrixDemension, CCommandFileParser::INPUT_CMD_PARAM::nMatrixNonzeroElementCount, CCommandFileParser::INPUT_CMD_PARAM::nMPILevel, CCommandFileParser::INPUT_CMD_PARAM::nShape, CCommandFileParser::INPUT_CMD_PARAM::nSubDomainNumber, CCommandFileParser::INPUT_CMD_PARAM::szContactMaterial, CCommandFileParser::INPUT_CMD_PARAM::szContactShape, CCommandFileParser::INPUT_CMD_PARAM::szDataFileName, CCommandFileParser::INPUT_CMD_PARAM::szDomainMat, CCommandFileParser::INPUT_CMD_PARAM::szShape, CCommandFileParser::INPUT_CMD_PARAM::szStructureType, TrimSpaceEdge(), TrimString(), and TrimStringEx().

Referenced by ParsingInputCommand().

150 {
151  char szValue[1024] = "";
152 
153  GetValueAfterEqualString(pszOption, szValue);
154 
155  switch (nHash)
156  {
157  case 0:
158  switch (nOptIndex)
159  {
160  case 0:
161  lpParam->fUnitcellLength[_X] = atof(szValue);
162  break;
163  case 1:
164  lpParam->fUnitcellLength[_Y] = atof(szValue);
165  break;
166  case 2:
167  lpParam->fUnitcellLength[_Z] = atof(szValue);
168  break;
169  }
170  break;
171  case 1:
172  switch(nOptIndex)
173  {
174  case 0:
175  lpParam->nBandSize = atoi(szValue);
176  break;
177  }
178  case 2:
179  switch (nOptIndex)
180  {
181  case 0:
182  lpParam->fConvergeceCriteria = atof(szValue);
183  break;
184  case 1:
185  lpParam->nCheckEigenvalueInterval = atoi(szValue);
186  break;
188  case 2:
189  lpParam->fCGConvergenceCriteria = atof(szValue);
190  break;
191  case 3:
192  lpParam->nCheckCGInterval = atoi(szValue);
193  break;
194  case 4:
195  {
196  double param[3];
197  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
198 
199  TrimStringEx(szValue);
200  TrimSpaceEdge(szValue);
201  ExtractParam(szValue, param, 3);
202  lpParam->fContactOrigin[nSubIndex - 1][_X] = param[0];
203  lpParam->fContactOrigin[nSubIndex - 1][_Y] = param[1];
204  lpParam->fContactOrigin[nSubIndex - 1][_Z] = param[2];
205  lpParam->nContactNumber = nSubIndex;
206  }
207  break;
208  case 5:
209  {
210  double param[3];
211  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
212 
213  TrimStringEx(szValue);
214  TrimSpaceEdge(szValue);
215  ExtractParam(szValue, param, 3);
216  lpParam->fContactLength[nSubIndex - 1][_X] = param[0];
217  lpParam->fContactLength[nSubIndex - 1][_Y] = param[1];
218  lpParam->fContactLength[nSubIndex - 1][_Z] = param[2];
219  }
220  break;
221  case 6:
222  {
223  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
224 
225  TrimString(szValue);
226  strcpy(lpParam->szContactMaterial[nSubIndex - 1], szValue);
227  }
228  break;
229  case 7:
230  {
231  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
232 
233  lpParam->fContactBias[nSubIndex - 1] = atof(szValue);
234  }
235  break;
236  case 8:
237  {
238  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
239 
240  TrimString(szValue);
241  strcpy(lpParam->szContactShape[nSubIndex - 1], szValue);
242 
243  if (!strcmp(lpParam->szContactShape[nSubIndex - 1], "Box"))
244  lpParam->nContactShape[nSubIndex - 1] = BOX_CONTACT;
245  else if (!strcmp(lpParam->szContactShape[nSubIndex - 1], "Circle"))
246  lpParam->nContactShape[nSubIndex - 1] = CIRCLE_CONTACT;
247  }
248  break;
249 
251  }
252  break;
253  case 3:
254  switch (nOptIndex)
255  {
256  case 0:
257  {
258  double param[3];
259 
260  TrimStringEx(szValue);
261  TrimSpaceEdge(szValue);
262  ExtractParam(szValue, param, 3);
263  lpParam->fDirection[_X] = param[0];
264  lpParam->fDirection[_Y] = param[1];
265  lpParam->fDirection[_Z] = param[2];
266  lpParam->nDirectionSingle = 100 * (int)param[0];
267  lpParam->nDirectionSingle += (10 * (int)param[1]);
268  lpParam->nDirectionSingle += (int)param[2];
269  if (100 != lpParam->nDirectionSingle)
270  lpParam->bNeedRotate = true;
271  else
272  lpParam->bNeedRotate = false;
273  }
274  break;
275  case 1:
276  /*TrimString(szValue);
277  strcpy(lpParam->szDomainMat, szValue);*/
278  break;
279  case 2:
280  break;
281  case 3:
282  break;
283  }
284  case 4:
285  switch (nOptIndex)
286  {
287  case 0:
288  lpParam->fevMin = atof(szValue);
289  break;
290  case 1:
291  lpParam->fevMax = atof(szValue);
292  break;
293  case 2:
294  lpParam->bCalculateEigenVectors = atoi(szValue) == 1 ? true : false;
295  break;
296  }
297  break;
298  case 5:
299  switch (nOptIndex)
300  {
301  case 0:
302  lpParam->nFindingEigenValueCount = atoi(szValue);
303  break;
304  case 1:
305  lpParam->nFindingDegeneratedEVCount = atoi(szValue);
306  break;
307  }
308  break;
309  case 6:
310  switch (nOptIndex)
311  {
312  case 0:
313  {
314  double param[3];
315  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
316 
317  TrimStringEx(szValue);
318  TrimSpaceEdge(szValue);
319  ExtractParam(szValue, param, 3);
320  lpParam->fOrigin[nSubIndex - 1][_X] = param[0];
321  lpParam->fOrigin[nSubIndex - 1][_Y] = param[1];
322  lpParam->fOrigin[nSubIndex - 1][_Z] = param[2];
323  }
324  break;
325  case 1:
326  {
327  double param[3];
328  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
329 
330  TrimStringEx(szValue);
331  TrimSpaceEdge(szValue);
332  ExtractParam(szValue, param, 3);
333  lpParam->fShapeLength[nSubIndex - 1][_X] = param[0];
334  lpParam->fShapeLength[nSubIndex - 1][_Y] = param[1];
335  lpParam->fShapeLength[nSubIndex - 1][_Z] = param[2];
336  lpParam->nSubDomainNumber = nSubIndex - 1;
337  }
338  break;
339  case 2:
340  {
341  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
342 
343  TrimString(szValue);
344  strcpy(lpParam->szShape[nSubIndex - 1], szValue);
345  if (!strcmp(lpParam->szShape[nSubIndex - 1], "Box"))
346  lpParam->nShape[nSubIndex - 1] = BOX_SHAPE;
347  else if (!strcmp(lpParam->szShape[nSubIndex - 1], "Cylinder"))
348  lpParam->nShape[nSubIndex - 1] = CYLINDER_SHAPE;
349  break;
350  }
351  case 3:
352  {
353  unsigned int nSubIndex = ExtractOptionIndex(pszOption, nHash, nOptIndex);
354 
355  TrimString(szValue);
356  strcpy(lpParam->szDomainMat[nSubIndex - 1], szValue);
357  break;
358  }
359  }
360  break;
361  case 10:
362  switch (nOptIndex)
363  {
364  case 0:
365  lpParam->fKPoints = atoi(szValue);
366  break;
367  case 1:
368  {
369  double param[2];
370  TrimStringEx(szValue);
371  TrimSpaceEdge(szValue);
372  ExtractParam(szValue, param, 2);
373  lpParam->fKValueInit[0] = param[0];
374  lpParam->fKValueFinal[0] = param[1];
375  }
376  break;
377  case 2:
378  {
379  double param[2];
380  TrimStringEx(szValue);
381  TrimSpaceEdge(szValue);
382  ExtractParam(szValue, param, 2);
383  lpParam->fKValueInit[1] = param[0];
384  lpParam->fKValueFinal[1] = param[1];
385  }
386  break;
387  case 3:
388  {
389  double param[2];
390  TrimStringEx(szValue);
391  TrimSpaceEdge(szValue);
392  ExtractParam(szValue, param, 2);
393  lpParam->fKValueInit[2] = param[0];
394  lpParam->fKValueFinal[2] = param[1];
395  }
396  break;
397  }
398  break;
399  case 11:
400  switch (nOptIndex)
401  {
402  case 0:
403  lpParam->load_in_MIC = atof(szValue);
404  break;
405  }
406  break;
407  case 12:
408  switch (nOptIndex)
409  {
410  case 0:
411  TrimString(szValue);
412  strcpy(lpParam->szDataFileName, szValue);
413  break;
414  case 1:
415  lpParam->nMatrixDemension = atoi(szValue);
416  break;
417  case 2:
418  lpParam->nLanczosIterationCount = atoi(szValue);
419  break;
420  case 3:
421  lpParam->nMPILevel = atoi(szValue);
422  break;
424  case 4:
425  lpParam->nCGIterationCount = atoi(szValue);
426  break;
428  }
429  break;
430  case 13:
431  switch (nOptIndex)
432  {
433  case 0:
434  lpParam->nMatrixNonzeroElementCount = atoi(szValue);
435  break;
437  case 1:
438  {
439  double param[3];
440 
441  TrimStringEx(szValue);
442  TrimSpaceEdge(szValue);
443  ExtractParam(szValue, param, 3);
444  lpParam->bConsiderNeumannBoundaryCondition[_X] = param[0] == 1. ? true : false;
445  lpParam->bConsiderNeumannBoundaryCondition[_Y] = param[1] == 1. ? true : false;
446  lpParam->bConsiderNeumannBoundaryCondition[_Z] = param[2] == 1. ? true : false;
447  }
448  break;
450  }
451  break;
452  case 15:
453  switch (nOptIndex)
454  {
455  case 0:
456  {
457  double param[3];
458 
459  TrimStringEx(szValue);
460  TrimSpaceEdge(szValue);
461  ExtractParam(szValue, param, 3);
462  lpParam->bConsiderBoundaryCondition[_X] = param[0] == 1. ? true : false;
463  lpParam->bConsiderBoundaryCondition[_Y] = param[1] == 1. ? true : false;
464  lpParam->bConsiderBoundaryCondition[_Z] = param[2] == 1. ? true : false;
465  }
466  break;
467  }
468  break;
469  case 17:
470  switch (nOptIndex)
471  {
472  case 0:
473  lpParam->bDoSelectiveReorthogonalization = atoi(szValue) == 1 ? true : false;
474  break;
475  }
476  break;
477  case 18:
478  switch (nOptIndex)
479  {
480  case 0:
481  lpParam->bSortBeforeCSRBuilding = atoi(szValue) == 1 ? true : false;
482  break;
483  case 1:
484  lpParam->bSaveMapFile = atoi(szValue) == 1 ? true : false;
485  break;
486  case 2:
487  lpParam->bSaveHamiltonian = atoi(szValue) == 1 ? true : false;
488  break;
489  case 3:
490  TrimString(szValue);
491  strcpy(lpParam->szStructureType, szValue);
492  break;
493  case 4:
494  lpParam->bSaveContactBiasVector = atoi(szValue) == 1 ? true : false;
495  break;
496  case 5:
497  lpParam->bSaveWaveVector = atoi(szValue) == 1 ? true : false;
498  break;
499  }
500  break;
501  case 22:
502  switch (nOptIndex)
503  {
504  case 0:
505  lpParam->bCalculateWaveFunction = atoi(szValue) == 1 ? true : false;
506  break;
507  }
508  break;
509  case 25:
510  switch (nOptIndex)
511  {
512  case 0:
513  lpParam->bMappingZBtoCB = atoi(szValue) == 1 ? true : false;
514  break;
515  }
516  break;
517  }
518 
519 }
Definition: Global.h:113
#define CIRCLE_CONTACT
Definition: Global.h:97
static void TrimStringEx(char *pszBuffer)
Trim string using white spapce not including ' '.
Definition: Global.h:113
#define BOX_SHAPE
Definition: Global.h:93
static void TrimSpaceEdge(char *pszBuffer)
Trim space both side of string.
#define BOX_CONTACT
Definition: Global.h:96
Definition: Global.h:113
static unsigned int ExtractOptionIndex(char *pszBuffer, int nHash, int nOptIndex)
Get Number of Index. ex) Geometry_Origin(1)=[ 0 0 0 ], -> Get '1' from option string.
static void GetValueAfterEqualString(char *pszOption, char *pszValue)
Extracting string after equal charater postion.
static void ExtractParam(char *pszBuffer, double *pParam, int nParamSize)
Extracing paramter in string.
#define CYLINDER_SHAPE
Definition: Global.h:94
static void TrimString(char *pszBuffer)
Trim string using white spapce including ' '.

Here is the call graph for this function:

Here is the caller graph for this function:

void CCommandFileParser::TrimSpaceEdge ( char *  pszBuffer)
staticprivate

Trim space both side of string.

Parameters
pszBufferString buffer that want to trim

Definition at line 96 of file CommandFileParser.cpp.

Referenced by SetOptionParam().

97 {
98  char szTemp[1024], ch;
99  int i, nIndex, nLength = strlen(pszBuffer);
100 
101  nIndex = 0;
102  for (i = 0; i < nLength; ++i)
103  {
104  ch = pszBuffer[i];
105  if (' ' != ch)
106  break;
107  }
108 
109  for (; i < nLength; ++i)
110  {
111  ch = pszBuffer[i];
112  szTemp[nIndex++] = pszBuffer[i];
113  }
114 
115  szTemp[nIndex] = NULL;
116  strcpy(pszBuffer, szTemp);
117 }

Here is the caller graph for this function:

void CCommandFileParser::TrimString ( char *  pszBuffer)
staticprivate

Trim string using white spapce including ' '.

Parameters
pszBufferString buffer that want to trim

Definition at line 58 of file CommandFileParser.cpp.

Referenced by SetOptionParam().

59 {
60  char szTemp[1024], ch;
61  int i, nIndex, nLength = strlen(pszBuffer);
62 
63  nIndex = 0;
64  for (i = 0; i < nLength; ++i)
65  {
66  ch = pszBuffer[i];
67  if (' ' != ch && '\r' != ch && '\n' != ch && '\t' != ch && '[' != ch && ']' != ch)
68  szTemp[nIndex++] = pszBuffer[i];
69  }
70  szTemp[nIndex] = NULL;
71  strcpy(pszBuffer, szTemp);
72 }

Here is the caller graph for this function:

void CCommandFileParser::TrimStringEx ( char *  pszBuffer)
staticprivate

Trim string using white spapce not including ' '.

Parameters
pszBufferString buffer that want to trim

Definition at line 77 of file CommandFileParser.cpp.

Referenced by SetOptionParam().

78 {
79  char szTemp[1024], ch;
80  int i, nIndex, nLength = strlen(pszBuffer);
81 
82  nIndex = 0;
83  for (i = 0; i < nLength; ++i)
84  {
85  ch = pszBuffer[i];
86  if ('\r' != ch && '\n' != ch && '\t' != ch && '[' != ch && ']' != ch)
87  szTemp[nIndex++] = pszBuffer[i];
88  }
89  szTemp[nIndex] = NULL;
90  strcpy(pszBuffer, szTemp);
91 }

Here is the caller graph for this function:


The documentation for this class was generated from the following files: