Add Kokkos version of minimize

This commit is contained in:
Stan Moore
2019-08-28 09:41:15 -06:00
parent 0b34db7881
commit 02e6ce32ea
19 changed files with 1819 additions and 39 deletions

View File

@ -78,7 +78,7 @@ Update::Update(LAMMPS *lmp) : Pointers(lmp)
create_integrate(1,&str,1);
str = (char *) "cg";
create_minimize(1,&str);
create_minimize(1,&str,1);
}
/* ---------------------------------------------------------------------- */
@ -376,22 +376,69 @@ Integrate *Update::integrate_creator(LAMMPS *lmp, int narg, char ** arg)
/* ---------------------------------------------------------------------- */
void Update::create_minimize(int narg, char **arg)
void Update::create_minimize(int narg, char **arg, int trysuffix)
{
if (narg != 1) error->all(FLERR,"Illegal min_style command");
if (narg < 1) error->all(FLERR,"Illegal run_style command");
delete [] minimize_style;
delete minimize;
if (minimize_map->find(arg[0]) != minimize_map->end()) {
MinimizeCreator minimize_creator = (*minimize_map)[arg[0]];
minimize = minimize_creator(lmp);
}
else error->all(FLERR,"Illegal min_style command");
int sflag;
new_minimize(arg[0],narg-1,&arg[1],trysuffix,sflag);
int n = strlen(arg[0]) + 1;
minimize_style = new char[n];
strcpy(minimize_style,arg[0]);
if (sflag) {
char estyle[256];
if (sflag == 1) snprintf(estyle,256,"%s/%s",arg[0],lmp->suffix);
else snprintf(estyle,256,"%s/%s",arg[0],lmp->suffix2);
int n = strlen(estyle) + 1;
minimize_style = new char[n];
strcpy(minimize_style,estyle);
} else {
int n = strlen(arg[0]) + 1;
minimize_style = new char[n];
strcpy(minimize_style,arg[0]);
}
}
/* ----------------------------------------------------------------------
create the Minimize style, first with suffix appended
------------------------------------------------------------------------- */
void Update::new_minimize(char *style, int narg, char **arg,
int trysuffix, int &sflag)
{
if (trysuffix && lmp->suffix_enable) {
if (lmp->suffix) {
sflag = 1;
char estyle[256];
snprintf(estyle,256,"%s/%s",style,lmp->suffix);
if (minimize_map->find(estyle) != minimize_map->end()) {
MinimizeCreator minimize_creator = (*minimize_map)[estyle];
minimize = minimize_creator(lmp);
return;
}
}
if (lmp->suffix2) {
sflag = 2;
char estyle[256];
snprintf(estyle,256,"%s/%s",style,lmp->suffix2);
if (minimize_map->find(estyle) != minimize_map->end()) {
MinimizeCreator minimize_creator = (*minimize_map)[estyle];
minimize = minimize_creator(lmp);
return;
}
}
}
sflag = 0;
if (minimize_map->find(style) != minimize_map->end()) {
MinimizeCreator minimize_creator = (*minimize_map)[style];
minimize = minimize_creator(lmp);
return;
}
error->all(FLERR,"Illegal minimize style");
}
/* ----------------------------------------------------------------------