diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index dc53de0a12..a9478c6e09 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -4,7 +4,11 @@ ifndef KOKKOS_PATH KOKKOS_PATH=../../lib/kokkos endif + CXXFLAGS=$(CCFLAGS) +ifeq ($(mode),shared) +CXXFLAGS += $(SHFLAGS) +endif KOKKOS_VERSION_MAJOR = 3 KOKKOS_VERSION_MINOR = 1 diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index c28c858113..2934ddf621 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -51,7 +51,8 @@ struct DoCoul<1> { //Specialisation for Neighborlist types Half, HalfThread, Full template -struct PairComputeFunctor { +class PairComputeFunctor { + public: typedef typename PairStyle::device_type device_type ; typedef ArrayTypes AT; diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp index 4b5f4c7d17..14b0d35a4c 100644 --- a/src/MANYBODY/pair_bop.cpp +++ b/src/MANYBODY/pair_bop.cpp @@ -5183,11 +5183,13 @@ void _noopt PairBOP::read_table(char *filename) if(rcut3[i]>rcutall) rcutall=rcut3[i]; rcutsq[i]=rcut[i]*rcut[i]; - rcutsq3[i]=rcut3[i]*rcut3[i]; dr[i]=rcut[i]/((double)nr-1.0); rdr[i]=1.0/dr[i]; - dr3[i]=rcut3[i]/((double)nr-1.0); - rdr3[i]=1.0/dr3[i]; + if (nws==3) { + rcutsq3[i]=rcut3[i]*rcut3[i]; + dr3[i]=rcut3[i]/((double)nr-1.0); + rdr3[i]=1.0/dr3[i]; + } } rctroot=rcutall; dtheta=2.0/((double)ntheta-1.0); @@ -5273,9 +5275,11 @@ void _noopt PairBOP::read_table(char *filename) pRepul4[i][k]=pRepul1[i][k]/dr[i]; pRepul5[i][k]=2.0*pRepul2[i][k]/dr[i]; pRepul6[i][k]=3.0*pRepul3[i][k]/dr[i]; - pLong4[i][k]=pLong1[i][k]/dr3[i]; - pLong5[i][k]=2.0*pLong2[i][k]/dr3[i]; - pLong6[i][k]=3.0*pLong3[i][k]/dr3[i]; + if (nws==3) { + pLong4[i][k]=pLong1[i][k]/dr3[i]; + pLong5[i][k]=2.0*pLong2[i][k]/dr3[i]; + pLong6[i][k]=3.0*pLong3[i][k]/dr3[i]; + } } for(k=0;k 0.0) { + params[m].c1 = pow(2.0*params[m].powern*1.0e-16,-1.0/params[m].powern); + params[m].c2 = pow(2.0*params[m].powern*1.0e-8,-1.0/params[m].powern); + params[m].c3 = 1.0/params[m].c2; + params[m].c4 = 1.0/params[m].c1; + } else { + params[m].c1 = params[m].c2 = params[m].c3 = params[m].c4 = 0.0; + } } // set cutmax to max of all params diff --git a/src/MANYBODY/pair_tersoff_mod.cpp b/src/MANYBODY/pair_tersoff_mod.cpp index 1998928aa5..18a58ae5b4 100644 --- a/src/MANYBODY/pair_tersoff_mod.cpp +++ b/src/MANYBODY/pair_tersoff_mod.cpp @@ -178,8 +178,10 @@ void PairTersoffMOD::setup_params() params[m].cut = params[m].bigr + params[m].bigd; params[m].cutsq = params[m].cut*params[m].cut; - params[m].ca1 = pow(2.0*params[m].powern_del*1.0e-16,-1.0/params[m].powern); - params[m].ca4 = 1.0/params[m].ca1; + if (params[m].powern > 0.0) { + params[m].ca1 = pow(2.0*params[m].powern_del*1.0e-16,-1.0/params[m].powern); + params[m].ca4 = 1.0/params[m].ca1; + } else params[m].ca1 = params[m].ca4 = 0.0; } // set cutmax to max of all params diff --git a/src/library.cpp b/src/library.cpp index d815afdbb5..7840567866 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -137,7 +137,7 @@ void lammps_open(int argc, char **argv, MPI_Comm communicator, void **ptr) *ptr = (void *) lmp; } catch(LAMMPSException & e) { - fprintf(stderr, "LAMMPS Exception: %s", e.message.c_str()); + fmt::print(stderr, "LAMMPS Exception: {}", e.message); *ptr = (void *) NULL; } #else @@ -172,7 +172,7 @@ void lammps_open_no_mpi(int argc, char **argv, void **ptr) *ptr = (void *) lmp; } catch(LAMMPSException & e) { - fprintf(stderr, "LAMMPS Exception: %s", e.message.c_str()); + fmt::print(stderr, "LAMMPS Exception: {}", e.message); *ptr = (void*) NULL; } #else diff --git a/src/pair_coul_dsf.cpp b/src/pair_coul_dsf.cpp index 20abd21662..992ee33ecb 100644 --- a/src/pair_coul_dsf.cpp +++ b/src/pair_coul_dsf.cpp @@ -65,7 +65,7 @@ void PairCoulDSF::compute(int eflag, int vflag) { int i,j,ii,jj,inum,jnum; double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,ecoul,fpair; - double r,rsq,r2inv,forcecoul,factor_coul; + double r,rsq,forcecoul,factor_coul; double prefactor,erfcc,erfcd,t; int *ilist,*jlist,*numneigh,**firstneigh; diff --git a/src/utils.cpp b/src/utils.cpp index cac94fe0cf..b223710cab 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -155,7 +155,7 @@ void utils::sfgets(const char *srcname, int srcline, char *s, int size, errmsg += filename; errmsg += "'"; - if (error) error->one(srcname,srcline,errmsg.c_str()); + if (error) error->one(srcname,srcline,errmsg); if (s) *s = '\0'; // truncate string to empty in case error is NULL } return; @@ -184,7 +184,7 @@ void utils::sfread(const char *srcname, int srcline, void *s, size_t size, errmsg += filename; errmsg += "'"; - if (error) error->one(srcname,srcline,errmsg.c_str()); + if (error) error->one(srcname,srcline,errmsg); } return; } @@ -238,9 +238,9 @@ double utils::numeric(const char *file, int line, const char *str, msg += str; msg += "' in input script or data file"; if (do_abort) - lmp->error->one(file,line,msg.c_str()); + lmp->error->one(file,line,msg); else - lmp->error->all(file,line,msg.c_str()); + lmp->error->all(file,line,msg); } return atof(str); @@ -273,9 +273,9 @@ int utils::inumeric(const char *file, int line, const char *str, msg += str; msg += "' in input script or data file"; if (do_abort) - lmp->error->one(file,line,msg.c_str()); + lmp->error->one(file,line,msg); else - lmp->error->all(file,line,msg.c_str()); + lmp->error->all(file,line,msg); } return atoi(str); @@ -308,9 +308,9 @@ bigint utils::bnumeric(const char *file, int line, const char *str, msg += str; msg += "' in input script or data file"; if (do_abort) - lmp->error->one(file,line,msg.c_str()); + lmp->error->one(file,line,msg); else - lmp->error->all(file,line,msg.c_str()); + lmp->error->all(file,line,msg); } return ATOBIGINT(str); @@ -343,9 +343,9 @@ tagint utils::tnumeric(const char *file, int line, const char *str, msg += str; msg += "' in input script or data file"; if (do_abort) - lmp->error->one(file,line,msg.c_str()); + lmp->error->one(file,line,msg); else - lmp->error->all(file,line,msg.c_str()); + lmp->error->all(file,line,msg); } return ATOTAGINT(str); diff --git a/src/write_data.cpp b/src/write_data.cpp index 677b619ada..5d67d4471c 100644 --- a/src/write_data.cpp +++ b/src/write_data.cpp @@ -123,7 +123,7 @@ void WriteData::command(int narg, char **arg) if (domain->triclinic) domain->lamda2x(atom->nlocal+atom->nghost); } - write(file.c_str()); + write(file); } /* ---------------------------------------------------------------------- @@ -131,7 +131,7 @@ void WriteData::command(int narg, char **arg) might later let it be directly called within run/minimize loop ------------------------------------------------------------------------- */ -void WriteData::write(const char *file) +void WriteData::write(const std::string &file) { // special case where reneighboring is not done in integrator // on timestep data file is written (due to build_once being set) @@ -187,7 +187,7 @@ void WriteData::write(const char *file) // open data file if (me == 0) { - fp = fopen(file,"w"); + fp = fopen(file.c_str(),"w"); if (fp == NULL) error->one(FLERR,fmt::format("Cannot open data file {}: {}", file, utils::getsyserror())); diff --git a/src/write_data.h b/src/write_data.h index 5055a25d98..5863b68292 100644 --- a/src/write_data.h +++ b/src/write_data.h @@ -21,6 +21,7 @@ CommandStyle(write_data,WriteData) #define LMP_WRITE_DATA_H #include "pointers.h" +#include namespace LAMMPS_NS { @@ -28,7 +29,7 @@ class WriteData : protected Pointers { public: WriteData(class LAMMPS *); void command(int, char **); - void write(const char *); + void write(const std::string &); private: int me,nprocs; diff --git a/src/write_restart.cpp b/src/write_restart.cpp index 1469e6b3e4..3c793e5f6a 100644 --- a/src/write_restart.cpp +++ b/src/write_restart.cpp @@ -293,9 +293,6 @@ void WriteRestart::write(std::string file) std::string multiname = file; multiname.replace(multiname.find("%"),1,fmt::format("{}",icluster)); - fp = fopen(multiname.c_str(),"wb"); - if (fp == NULL) - error->one(FLERR,fmt::format("Cannot open restart file {}",multiname).c_str()); if (filewriter) { fp = fopen(multiname.c_str(),"wb");