diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index afea41f4bd..33dc9be655 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -429,8 +429,7 @@ if(PKG_USER-MESONT) add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES}) list(APPEND LAMMPS_LINK_LIBS ${PKG_LIB}) target_include_directories(${PKG_LIB} PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}) - #include(Packages/USER-MESONT) - #list(APPEND DEFAULT_PACKAGES "USER-MESONT") + set(USER-MESONT_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-MESONT) file(GLOB USER-MESONT_SOURCES ${USER-MESONT_SOURCES_DIR}/[^.]*.cpp) file(GLOB USER-MESONT_HEADERS ${USER-MESONT_SOURCES_DIR}/[^.]*.h) @@ -438,7 +437,6 @@ if(PKG_USER-MESONT) RegisterStyles(${USER-MESONT_SOURCES_DIR}) list(APPEND LIB_SOURCES ${USER-MESONT_SOURCES}) include_directories(${USER-MESONT_SOURCES_DIR}) - endif() if(PKG_USER-AWPMD) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 29eca85842..125b6769f4 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -840,6 +840,7 @@ Espanol Eshelby eshelby eskm +esph estretch esu esub @@ -2647,6 +2648,7 @@ Schulten Schunk Schuring Schwen +screenshot screenshots Scripta sdk diff --git a/lib/mesont/Makefile.gfortran b/lib/mesont/Makefile.gfortran index a8a5c1e942..6b07d71edb 100644 --- a/lib/mesont/Makefile.gfortran +++ b/lib/mesont/Makefile.gfortran @@ -52,4 +52,4 @@ clean: -rm *.o *.mod $(LIB) tar: - -tar -cvf ../MESONT.tar $(FILES) \ No newline at end of file + -tar -cvf ../MESONT.tar $(FILES) diff --git a/lib/mesont/Makefile.serial b/lib/mesont/Makefile.serial index a8a5c1e942..6b07d71edb 100644 --- a/lib/mesont/Makefile.serial +++ b/lib/mesont/Makefile.serial @@ -52,4 +52,4 @@ clean: -rm *.o *.mod $(LIB) tar: - -tar -cvf ../MESONT.tar $(FILES) \ No newline at end of file + -tar -cvf ../MESONT.tar $(FILES) diff --git a/src/USER-MESONT/pair_mesont_tpm.cpp b/src/USER-MESONT/pair_mesont_tpm.cpp index c57dfbc3c2..eb1f3ee1c6 100644 --- a/src/USER-MESONT/pair_mesont_tpm.cpp +++ b/src/USER-MESONT/pair_mesont_tpm.cpp @@ -413,6 +413,19 @@ void PairMESONTTPM::compute(int eflag, int vflag){ X1, X2, X3, R123, L123, BBF2); } + //share new values of buckling + if (BendingMode == 1){ + for (int i = 0; i < nall; i++){ + int idx = ntlist.get_idx(i); + buckling[idx] = b_sort[i]; + } + comm->forward_comm_pair(this); + for (int i = 0; i < nall; i++){ + int idx = ntlist.get_idx(i); + b_sort[i] = buckling[idx]; + } + } + //segment-segment and segment-tube interactions int n_segments = ntlist.get_segments().size(); double Rmax = 0.0; diff --git a/src/atom.cpp b/src/atom.cpp index d629322b98..0686f0a237 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -93,6 +93,10 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) ellipsoid = line = tri = body = NULL; // molecular systems + + molecule = NULL; + molindex = molatom = NULL; + bond_per_atom = extra_bond_per_atom = 0; num_bond = NULL; bond_type = NULL; @@ -146,7 +150,6 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) // USER-MESONT package - mesont_flag = 0; length = NULL; buckling = NULL; bond_nt = NULL; @@ -299,6 +302,11 @@ Atom::~Atom() memory->destroy(cv); memory->destroy(vest); + // USER-MESONT package + memory->destroy(length); + memory->destroy(buckling); + memory->destroy(bond_nt); + memory->destroy(contact_radius); memory->destroy(smd_data_9); memory->destroy(smd_stress); @@ -373,12 +381,6 @@ Atom::~Atom() for (int i = 0; i < nmolecule; i++) delete molecules[i]; memory->sfree(molecules); - // USER-MESONT package - - memory->destroy(length); - memory->destroy(buckling); - memory->destroy(bond_nt); - // delete per-type arrays delete [] mass; @@ -554,6 +556,12 @@ void Atom::peratom_create() add_peratom("cc",&cc,DOUBLE,1); add_peratom("cc_flux",&cc_flux,DOUBLE,1,1); // set per-thread flag + // USER-MESONT package + + add_peratom("length",&length,DOUBLE,0); + add_peratom("buckling",&buckling,INT,0); + add_peratom("bond_nt",&bond_nt,tagintsize,2); + // USER-SPH package add_peratom("rho",&rho,DOUBLE,0); @@ -679,6 +687,7 @@ void Atom::set_atomflag_defaults() sp_flag = 0; x0_flag = 0; smd_flag = damage_flag = 0; + mesont_flag = 0; contact_radius_flag = smd_data_9_flag = smd_stress_flag = 0; eff_plastic_strain_flag = eff_plastic_strain_rate_flag = 0; @@ -1236,16 +1245,23 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, error->all(FLERR,"Incorrect atom format in data file"); } - if (imageflag) - imagedata = ((imageint) (atoi(values[iptr]) + IMGMAX) & IMGMASK) | - (((imageint) (atoi(values[iptr+1]) + IMGMAX) & IMGMASK) << IMGBITS) | - (((imageint) (atoi(values[iptr+2]) + IMGMAX) & IMGMASK) << IMG2BITS); - else imagedata = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; + int imx = 0; + int imy = 0; + int imz = 0; + if (imageflag) { + imx = utils::inumeric(FLERR,values[iptr],false,lmp); + imy = utils::inumeric(FLERR,values[iptr+1],false,lmp); + imz = utils::inumeric(FLERR,values[iptr+2],false,lmp); + if ((domain->dimension == 2) && (imz != 0)) + error->all(FLERR,"Z-direction image flag must be 0 for 2d-systems"); + } + imagedata = ((imageint) (imx + IMGMAX) & IMGMASK) | + (((imageint) (imy + IMGMAX) & IMGMASK) << IMGBITS) | + (((imageint) (imz + IMGMAX) & IMGMASK) << IMG2BITS); - xdata[0] = atof(values[xptr]); - xdata[1] = atof(values[xptr+1]); - xdata[2] = atof(values[xptr+2]); + xdata[0] = utils::numeric(FLERR,values[xptr],false,lmp); + xdata[1] = utils::numeric(FLERR,values[xptr+1],false,lmp); + xdata[2] = utils::numeric(FLERR,values[xptr+2],false,lmp); if (shiftflag) { xdata[0] += shift[0]; xdata[1] += shift[1]; @@ -2539,6 +2555,11 @@ void *Atom::extract(char *name) if (strcmp(name,"cv") == 0) return (void *) cv; if (strcmp(name,"vest") == 0) return (void *) vest; + // USER-MESONT package + if (strcmp(name,"length") == 0) return (void *) length; + if (strcmp(name,"buckling") == 0) return (void *) buckling; + if (strcmp(name,"bond_nt") == 0) return (void *) bond_nt; + if (strcmp(name, "contact_radius") == 0) return (void *) contact_radius; if (strcmp(name, "smd_data_9") == 0) return (void *) smd_data_9; if (strcmp(name, "smd_stress") == 0) return (void *) smd_stress; @@ -2551,10 +2572,8 @@ void *Atom::extract(char *name) if (strcmp(name,"dpdTheta") == 0) return (void *) dpdTheta; if (strcmp(name,"edpd_temp") == 0) return (void *) edpd_temp; - // USER-MESONT package - if (strcmp(name,"length") == 0) return (void *) length; - if (strcmp(name,"buckling") == 0) return (void *) buckling; - if (strcmp(name,"bond_nt") == 0) return (void *) bond_nt; + // end of customization section + // -------------------------------------------------------------------- return NULL; } diff --git a/src/atom.h b/src/atom.h index 0b67d590e7..6ade71c4a4 100644 --- a/src/atom.h +++ b/src/atom.h @@ -127,12 +127,6 @@ class Atom : protected Pointers { double *vest_temp; double *edpd_cv; // heat capacity int cc_species; - double *contact_radius; - double **smd_data_9; - double **smd_stress; - double *eff_plastic_strain; - double *eff_plastic_strain_rate; - double *damage; // USER-MESONT package @@ -140,6 +134,15 @@ class Atom : protected Pointers { int *buckling; tagint **bond_nt; + // USER-SMD package + + double *contact_radius; + double **smd_data_9; + double **smd_stress; + double *eff_plastic_strain; + double *eff_plastic_strain_rate; + double *damage; + // USER-SPH package double *rho,*drho,*esph,*desph,*cv; diff --git a/src/compute_property_atom.cpp b/src/compute_property_atom.cpp index 9dc197f9aa..c27db67da2 100644 --- a/src/compute_property_atom.cpp +++ b/src/compute_property_atom.cpp @@ -376,6 +376,7 @@ ComputePropertyAtom::ComputePropertyAtom(LAMMPS *lmp, int narg, char **arg) : "vector does not exist"); pack_choice[i] = &ComputePropertyAtom::pack_dname; } + else if (strcmp(arg[iarg],"buckling") == 0) { if (!atom->mesont_flag) error->all(FLERR,"Compute property/atom for "