📄 cdhouse.c
字号:
/*************************************************************************Compile Switches*************************************************************************//*Switches of defintion of external Debug_g in cdhouse.h*/#define IS_CDHOUSE_H/*************************************************************************Include Files*************************************************************************/#include <stdio.h>#include <stdlib.h>#include <time.h>#include "cdhouse.h"#include "cdsubs.h"/*************************************************************************External Variables*************************************************************************//* Defined in cdsubs.c */extern Particle_t *a;int Debug_g = FALSE;int CheckMem_g = FALSE;/*************************************************************************Module-wide variables*************************************************************************/static time_t InitialTime_m;static int NumFatalError_m = 0;/*************************************************************************Local Function Prototypes*************************************************************************/static char *GetElapsedTimeStr (void);/*************************************************************************Exported subroutines*************************************************************************//* Start timer */void StartProgramTimer (void) { time (&InitialTime_m); }void CleanAfterError(void) { BOOLEAN IsProgramDone; /* Increment number of fatal errors */ NumFatalError_m ++; /* Write state file is any CMD steps done */ if (GetNumberOfMDSteps() > 0) { printf ("\n"); printf ("SAVING MD STATE\n"); printf (" Writing system state to file 'stop.sta'\n"); printf (" Current step is %li.\n", a->step); read_command ("write state stop.sta", &IsProgramDone); } /* Call standard ending routines */ CleanBeforeEnd(); /* exit */ exit (1); }void CleanBeforeEnd (void) { /* Write time information */ printf ("\n"); printf ("TIME INFORMATION\n"); printf (" Ending Time: %s\n", GetCurrentTimeStr() ); printf (" Elapsed Time: %s\n", GetElapsedTimeStr() ); /* Write CMD statistics */ /* Print Program Statistics */ if (GetNumberOfMDSteps() > 0) { printf ("\n"); printf ("DYNAMICS STATISTICS\n"); printf (" Number of MD Steps: %8li\n", GetNumberOfMDSteps() ); printf (" Number of Neighbor Searchs: %8li\n", GetNumNeighborSearchCalls() ); printf (" Time spent on MD steps: %8.0lf (secs)\n", GetElapsedMDTime() ); printf (" Time spent on Neighbor Search: %8.0lf (secs)\n", GetElapsedNeighborSearchTime() ); } /* Print Number of Command Errors */ printf ("\n"); printf ("ERROR STATISTICS\n"); printf (" Number of Fatal Errors: %4i", NumFatalError_m ); if (NumFatalError_m > 0) printf (" <======= !!!\n"); else printf ("\n"); printf (" Number of Unknown Command Errors: %4i", GetNumberOfCommandErrors() ); if (GetNumberOfCommandErrors() > 0) printf (" <======= !!!\n"); else printf ("\n"); printf (" Number of Misc. Warnings: %4i", GetNumberOfWarnings() ); if (GetNumberOfWarnings() > 0) printf (" <======= !!!\n"); else printf ("\n"); }/* Return time and date string */char *GetCurrentTimeStr (void) { struct tm *timeptr; static char TimeString[23]; time_t CurrentTime; /* Get current time (in seconds from 1900) */ time (&CurrentTime); /* Convert to date, time */ timeptr = localtime (&CurrentTime); /* Form string */ sprintf (TimeString, "%02d/%02d/%04d %02d:%02d:%02d", timeptr->tm_mon+1, timeptr->tm_mday, timeptr->tm_year+1900, timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec); /* Return string */ return TimeString; }/*************************************************************************Local Functions*************************************************************************//* Print elapsed time */char *GetElapsedTimeStr (void) { static char ElapsedTimeStr[32]; time_t FinalTime; double TimeDifference; int Minute; int Second; /* Get time difference */ time (&FinalTime); TimeDifference = difftime (FinalTime, InitialTime_m); /* Convert from seconds to minutes, seconds */ Minute = TimeDifference / 60; Second = TimeDifference - 60 * Minute; /* Form string */ sprintf (ElapsedTimeStr, "%d min %02d sec", Minute, Second); /* Return string */ return ElapsedTimeStr; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -