Help me! what i wannt to do is applying this package to my lammps. help me!

lammps-conp-master.zip (19.1 KB)

what i wannt to do is applying this package to my lammps. I already installed and linked LAPACK and BLAS. I compiled with make -j4 and make install but folder in src makes errors like that HELP ME ASAP

  • GLOB mismatch!
    – GLOB mismatch!
    – GLOB mismatch!
    – Running check for auto-generated files from make-based build system
    – Could NOT find FFMPEG (missing: FFMPEG_EXECUTABLE)
    – Checking for module ‘fftw3’
    – No package ‘fftw3’ found
    – Generating style headers…
    – Generating package headers…
    – Generating lmpinstalledpkgs.h…
    – Could NOT find ClangFormat (missing: ClangFormat_EXECUTABLE) (Required is at least version “11.0”)
    – The following tools and libraries have been found and configured:
  • Git
  • MPI
  • OpenMP
  • LAPACK
  • Threads
  • BLAS
  • JPEG
  • PNG
  • ZLIB
  • PkgConfig
  • Python3

– <<< Build configuration >>>
LAMMPS Version: 20240829 stable_29Aug2024_update1-modified
Operating System: Linux Ubuntu" 22.04
CMake Version: 3.22.1
Build type: RelWithDebInfo
Install path: /home/zonzalkoo/lammps/lammps-install
Generator: Unix Makefiles using /usr/bin/gmake
– Enabled packages: ELECTRODE;EXTRA-DUMP;EXTRA-FIX;KSPACE;MANYBODY;MOLECULE;REAXFF
– <<< Compilers and Flags: >>>
– C++ Compiler: /usr/bin/c++
Type: GNU
Version: 11.4.0
C++ Standard: 11
C++ Flags: -O2 -g -DNDEBUG
Defines: LAMMPS_SMALLBIG;LAMMPS_MEMALIGN=64;LAMMPS_OMP_COMPAT=4;LAMMPS_JPEG;LAMMPS_PNG;LAMMPS_GZIP;FFT_KISS
– C compiler: /usr/bin/cc
Type: GNU
Version: 11.4.0
C Flags: -O2 -g -DNDEBUG
– <<< Linker flags: >>>
– Executable name: lmp
– Static library flags:
– <<< MPI flags >>>
– MPI_defines: MPICH_SKIP_MPICXX;OMPI_SKIP_MPICXX;_MPICC_H
– MPI includes: /usr/lib/x86_64-linux-gnu/openmpi/include;/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi
– MPI libraries: /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi_cxx.so;/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so;
– <<< FFT settings >>>
– Primary FFT lib: KISS
– Using double precision FFTs
– Using non-threaded FFTs
– Using builtin distributed FFT algorithms
– Configuring done
– Generating done
– Build files have been written to: /home/zonzalkoo/lammps/lammps/build
[ 0%] Built target angle.h
[ 0%] Built target atom.h
[ 0%] Built target fmt_format.h
– Git Directory: /home/zonzalkoo/lammps/lammps/.git
– Generating lmpgitversion.h…
[ 0%] Built target citeme.h
[ 0%] Built target bond.h
[ 0%] Built target comm.h
[ 0%] Built target gitversion
[ 0%] Built target compute.h
[ 0%] Built target dihedral.h
[ 0%] Built target command.h
[ 1%] Built target domain.h
[ 2%] Built target fix.h
[ 2%] Built target exceptions.h
[ 2%] Built target error.h
[ 2%] Built target force.h
[ 2%] Built target group.h
[ 2%] Built target improper.h
[ 2%] Built target input.h
[ 3%] Built target info.h
[ 3%] Built target lammps.h
[ 3%] Built target kspace.h
[ 3%] Built target lattice.h
[ 3%] Built target library.h
[ 3%] Built target lmppython.h
[ 3%] Built target lmptype.h
[ 3%] Built target memory.h
[ 3%] Built target modify.h
[ 4%] Built target neigh_list.h
[ 4%] Built target neighbor.h
[ 4%] Built target output.h
[ 4%] Built target pair.h
[ 4%] Built target pointers.h
[ 4%] Built target platform.h
[ 5%] Built target region.h
[ 5%] Built target timer.h
[ 5%] Built target universe.h
[ 5%] Built target utils.h
[ 5%] Built target update.h
[ 6%] Built target variable.h
[ 6%] Built target fmt_core.h
Consolidate compiler generated dependencies of target lammps
[ 6%] Building CXX object CMakeFiles/lammps.dir/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp.o
[ 7%] Building CXX object CMakeFiles/lammps.dir/home/zonzalkoo/lammps/lammps/src/lammps.cpp.o
[ 7%] Building CXX object CMakeFiles/lammps.dir/home/zonzalkoo/lammps/lammps/src/modify.cpp.o
/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp: In constructor ‘LAMMPS_NS::FixConp::FixConp(LAMMPS_NS::LAMMPS*, int, char**)’:
/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp:70:19: error: expected primary-expression before ‘->’ token
70 | everynum = utils->numeric(FLERR,arg[3],false,lmp);
| ^~
/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp:71:14: error: expected primary-expression before ‘->’ token
71 | eta = utils->numeric(FLERR,arg[4],false,lmp);
| ^~
/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp:72:17: error: expected primary-expression before ‘->’ token
72 | molidL = utils->inumeric(FLERR,arg[5],false,lmp);
| ^~
/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp:73:17: error: expected primary-expression before ‘->’ token
73 | molidR = utils->inumeric(FLERR,arg[6],false,lmp);
| ^~
/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp:74:13: error: expected primary-expression before ‘->’ token
74 | vL = utils->numeric(FLERR,arg[7],false,lmp);
| ^~
/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp:75:13: error: expected primary-expression before ‘->’ token
75 | vR = utils->numeric(FLERR,arg[8],false,lmp);
| ^~
make[2]: *** [CMakeFiles/lammps.dir/build.make:1980: CMakeFiles/lammps.dir/home/zonzalkoo/lammps/lammps/src/fix_conp.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs…
make[1]: *** [CMakeFiles/Makefile2:171: CMakeFiles/lammps.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

You have added code that is not part of LAMMPS and that is fundamentally broken. Complain to its author and ask to get it fixed.

Hi! It’s me! I’m the author! Complain to me!

Well, I have no way of knowing if the “LAMMPS-CONP” you’re working with is exactly what’s in my GitHub, but what’s in my GitHub is hopelessly outdated.

Most functionalities of that package are now in the ELECTRODE package (fix electrode/conp command — LAMMPS documentation) so use that. Otherwise, you should be able to compile the USER-CONP2 package with an older version of LAMMPS.

1 Like

Im so glad that you are here!!

we are south korean high school students doing research activity.

what I am currently making is simulation of Ion movement arround electrode that is considering absorption. (like gold plating) so we are going to modify your CONP package so that we can calculate some potentials and analyze the formation of EDL.

so could you please suggest me some methods that could combine absorption of ions with ELECTRODE package?

thanks again.

@srtee I don’t think it is you but the code was taken from this repository: GitHub - zhenxingwang/lammps-conp: Constant potential method in LAMMPS

I would not think that you would do a blunder as big as in this commit, which is just plain wrong: correct a typo and upgrade compatibility with LAMMPS later than 2020 · zhenxingwang/lammps-conp@04fb5fd · GitHub

When googling I saw at least three repos with a constant potential implementation.

I am very excited for you! Welcome to the LAMMPS forum. I am always especially happy to welcome school students since it is good to introduce people to science early in their education and computational science is becoming more accessible and powerful every day.

Let’s keep talking in this thread – as a rule it’s good to have these discussions in the open so that everyone can learn from them!

When you say:

I am not sure what you mean by “absorption”? There are three broad kinds of changes that happen when a salt solution is near a charged metal surface:

  1. The ions are attracted to the surface because of the electrostatic force, both from the surface and from each other.
  2. The water (especially hydrogen) can start chemically bonding with the surface – that’s the start of how water electrolysis can occur!
  3. With enough local energy the metal atoms can rearrange themselves into more favourable structures (called “restructuring”).

Investigating 2 and 3 are very challenging projects to do correctly because they involve actual quantum details of how electron orbitals are shaped – not just point or Gaussian charges like what MD programs use. So I would recommend not considering those.

Investigating 1 is already possible with ELECTRODE in LAMMPS. You may be interested in this paper: https://pubs.aip.org/aip/jcp/article-abstract/155/4/044703/200657/Effect-of-the-metallicity-on-the-capacitance-of which has good simulations (even though it is a completely different software). That paper’s simulations can be replicated in LAMMPS with ELECTRODE without any code modification.

If by “gold plating” you mean electrodeposition – that is, having gold ions reach the cathode and be reduced to solid gold – that is a challenging project. You may be able to achieve some qualitative results, but it may be hard for you to run simulations for long enough to get usable statistics.

You would first have to find a way to correctly represent metal ions in water. There are “force fields” for that, but the realism of your simulation will be limited to how accurate or inaccurate those force fields are.

Now, how to simulate the electrodeposition itself? Here is an idea:

  1. In LAMMPS you can create a variable with count(group, region) to count how many particles from a particular group are in a particular region. If you set a group for the dissolved metal ions and a region that covers the electrode and a small “interaction zone” in front of the electrode, you can count how many ions are very near the electrode.
  2. LAMMPS also has a “fix halt” command to stop a simulation when a condition is reached. So you could stop the simulation whenever the variable (from 1) tells you that there is a metal ion close to the electrode.
  3. You can then alter the simulation setup and manually change the metal ion into the same type as the electrode and include it into the electrode group, as well as move its position to match the existing lattice arrangement of the metal. (Note that you have to work out how to keep the solution charge-neutral. Either you have to randomly reintroduce another metal ion to compensate, or remove enough counter ions to compensate.)
  4. By repeating this enough times you can simulate metal being slowly deposited on the electrode. (When the surface becomes less smooth, you will have to think about how the region from (1) is defined.)

This would need some attention to detail from you, but it can be straightforwardly done without modifying the LAMMPS software. Equally well, you can focus your efforts just on simulating the EDL – there is still a lot to discover!

Ah – that’s the very original! Both my USER-CONP2 and ultimately ELECTRODE are descended from it, of course with much subsequent development.

But I did not realise the original repo has had one commit added to it. CONP was first published with code in 2014 so a lot of what doesn’t work in that repo will probably be due to changes in LAMMPS’s internal classes since then (for example the change from force->inumeric to utils->inumeric).

That change is to utils::inumeric. Utils is not a class. That is why this change cannot compile.
We are trying to have some notes on porting old code to current LAMMPS here: 4.10. Notes for updating code written for older LAMMPS versions — LAMMPS documentation

Most of that stems from porting older and otherwise unmaintained code with significant interest to the lammps-plugins package.

FWIW, I also found: GitHub - kylincaster/LAMMPS_conp-ME: A optimzied constant potential method in LAMMPS

That’s what I’m exactly talking about !!
thanks a lot

I will keep going on with my project and if something goes wrong again let me talk to you later.