int setup_neighborlist_KIM_access(void* pkim, NeighObjectType* NeighObject) { /* local variables */ int status; /* register for neighObject */ KIM_API_setm_data(pkim, &status, 1*4, "neighObject", 1, NeighObject, 1); if (KIM_STATUS_OK > status) { KIM_API_report_error(__LINE__, __FILE__,"KIM_API_setm_data",status); return(status); } /* register for get_neigh */ status = KIM_API_set_method(pkim, "get_neigh", 1, (func_ptr) &get_neigh); if (KIM_STATUS_OK > status) { KIM_API_report_error(__LINE__, __FILE__,"KIM_API_set_method",status); return(status); } return KIM_STATUS_OK; }
/* Initialization function */ int MODEL_NAME_LC_STR_init_(void *km) { /* Local variables */ intptr_t* pkim = *((intptr_t**) km); double* model_cutoff; double* model_cutnorm; double* model_epsilon; double* model_sigma; double* model_Pcutoff; double* model_A; double* model_B; double* model_C; double* model_sigmasq; double* model_cutsq; int ier; /* store function pointers in KIM object */ KIM_API_setm_data(pkim, &ier, 3*4, "compute", 1, &compute, 1, "reinit", 1, &reinit, 1, "destroy", 1, &destroy, 1); /* store model cutoff in KIM object */ model_cutoff = (double*) KIM_API_get_data(pkim, "cutoff", &ier); if (KIM_STATUS_OK > ier) { KIM_API_report_error(__LINE__, __FILE__, "KIM_API_get_data", ier); return ier; } *model_cutoff = CUTOFF_VALUE_STR /* allocate memory */ model_sigma = (double*) malloc(1*sizeof(double)); if (NULL == model_sigma) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } model_epsilon = (double*) malloc(1*sizeof(double)); if (NULL == model_epsilon) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } model_Pcutoff = (double*) malloc(1*sizeof(double)); if (NULL == model_Pcutoff) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } model_cutnorm = (double*) malloc(1*sizeof(double)); if (NULL == model_cutnorm) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } model_A = (double*) malloc(1*sizeof(double)); if (NULL == model_A) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } model_B = (double*) malloc(1*sizeof(double)); if (NULL == model_B) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } model_C = (double*) malloc(1*sizeof(double)); if (NULL == model_C) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } model_sigmasq = (double*) malloc(1*sizeof(double)); if (NULL == model_sigmasq) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } model_cutsq = (double*) malloc(1*sizeof(double)); if (NULL == model_cutsq) { ier = KIM_STATUS_FAIL; KIM_API_report_error(__LINE__, __FILE__, "malloc", ier); return ier; } /* store parameters in KIM object */ KIM_API_setm_data(pkim, &ier, 9*4, "PARAM_FREE_sigma", 1, model_sigma, 1, "PARAM_FREE_epsilon", 1, model_epsilon, 1, "PARAM_FREE_cutoff", 1, model_Pcutoff, 1, "PARAM_FIXED_cutnorm", 1, model_cutnorm, 1, "PARAM_FIXED_A", 1, model_A, 1, "PARAM_FIXED_B", 1, model_B, 1, "PARAM_FIXED_C", 1, model_C, 1, "PARAM_FIXED_sigmasq", 1, model_sigmasq, 1, "PARAM_FIXED_cutsq", 1, model_cutsq, 1); if (KIM_STATUS_OK > ier) { KIM_API_report_error(__LINE__, __FILE__, "KIM_API_setm_data", ier); return ier; } /* set value of sigma */ *model_sigma = SIGMA_VALUE_STR /* set value of epsilon */ *model_epsilon = EPSILON_VALUE_STR /* set value of parameter cutoff */ *model_Pcutoff = *model_cutoff; /* set value of parameter cutnorm */ *model_cutnorm = (*model_cutoff)/(*model_sigma); /* set value of parameter A */ *model_A = 12.0*(*model_epsilon)*(-26.0 + 7.0*pow(*model_cutnorm,6))/ (pow(*model_cutnorm,14)*(*model_sigma)*(*model_sigma)); /* set value of parameter B */ *model_B = 96.0*(*model_epsilon)*(7.0 - 2.0*pow(*model_cutnorm,6))/ (pow(*model_cutnorm,13)*(*model_sigma)); /* set value of parameter C */ *model_C = 28.0*(*model_epsilon)*(-13.0 + 4.0*pow(*model_cutnorm,6))/ pow(*model_cutnorm,12); /* set value of parameter sigmasq */ *model_sigmasq = (*model_sigma)*(*model_sigma); /* set value of parameter cutsq */ *model_cutsq = (*model_cutoff)*(*model_cutoff); ier = KIM_STATUS_OK; return ier; }