8 if (NULL == pm)
return NULL;
11 if (NULL == pm->
timer)
return NULL;
13 if (NULL == pm->
timer)
return NULL;
49 if (nlevels >= 0) pm->
nlevels = nlevels;
83 printf(
"MSM short-range part: %6.3f sec\n", time_delta);
93 printf(
"MSM long-range part: %6.3f sec\n", time_delta);
129 printf(
"MSM short-range part: %6.3f sec\n", time_delta);
139 printf(
"MSM long-range part: %6.3f sec\n", time_delta);
142 *uelec_f += (float) pm->
uelec;
164 if (strcasecmp(name,
ApproxName[i]) == 0)
return i;
214 if (strcasecmp(name,
SplitName[i]) == 0)
return i;
double wkf_timer_time(wkf_timerhandle v)
const char * NL_msm_split_name(int split)
void wkf_timer_destroy(wkf_timerhandle v)
NL_Msm * NL_msm_create(void)
int NL_msm_configure(NL_Msm *pm, double gridspacing, int approx, int split, int nlevels)
wkf_timerhandle wkf_timer_create(void)
int NL_msm_approx(const char *name)
void wkf_timer_stop(wkf_timerhandle v)
int NL_msm_compute_short_range_sprec(NL_Msm *pm)
int NL_msm_compute_long_range_sprec(NL_Msm *pm)
int NL_msm_compute_short_range(NL_Msm *pm)
static const char * ApproxName[]
#define DEFAULT_GRIDSPACING
wkf_timerhandle timer_longrng
int NL_msm_compute_force(NL_Msm *pm, double *felec, double *uelec, const double *atom, int natoms)
int NL_msm_compute_long_range(NL_Msm *pm)
int NL_msm_split(const char *name)
void NL_msm_cleanup(NL_Msm *pm)
std::vector< std::string > split(const std::string &text, std::string delimiter)
const char * NL_msm_approx_name(int approx)
int NL_msm_compute_force_sprec(NL_Msm *pm, float *felec_f, float *uelec_f, const float *atom_f, int natoms)
static const char * SplitName[]
void wkf_timer_start(wkf_timerhandle v)
void NL_msm_destroy(NL_Msm *pm)
#define DEFAULT_NBINSLOTS