[CP2K-user] [CP2K:14544] Re: Running CP2K calc with ASE

Kane Shenton jksh... at gmail.com
Fri Jan 15 13:34:01 UTC 2021


OK cool, thanks anyway! For now I'll see if I can use OpenMPI instead... 

Cheers,
Kane

On Thursday, January 14, 2021 at 8:07:12 PM UTC+1 ge... at gmail.com wrote:

> Hi Kane,
> Sorry, I did not check it out for cp2k-v8.1.
> I have been mostly using CP2K-v6.1 with ase.
> Maybe someone who is more familiar with code knows which subroutine
> does the job reading positions from standard input,
> then It will be easier to adopt the code.
>
> Best,
> Geng
>
> Kane Shenton <jk... at gmail.com> 于2021年1月14日周四 上午7:56写道:
> >
> > Hi!
> >
> > I've just run into the same issue. Thanks, Geng, for shedding some light 
> and providing the hack to fix it!
> >
> > It's unclear to me how to adapt your fortran code to newer versions of 
> cp2k since, as you say, there have been lots of changes.
> >
> > Have you, by any chance, subsequently written a similar hack for newer 
> versions of cp2k (e.g. v8.1)?
> >
> > Best,
> > Kane
> >
> >
> > On Wednesday, August 19, 2020 at 11:33:38 PM UTC+2 ani... at gmail.com 
> wrote:
> >>
> >> Thanks a lot!!
> >>
> >>
> >> On Tuesday, August 18, 2020 at 9:05:44 AM UTC-7, Sun Geng wrote:
> >>>
> >>> Hi Aniruddha M Dive,
> >>> Below is the code that I changed a few lines in cp2k_shell.F and 
> ase-cp2k calculator. ( You will see the lines I commented out)
> >>> Please note that the code is only tested wit cp2k-v6.1 (I found the 
> most recent cp2k code revised cp2k_shell.F significantly).
> >>> The idea is that the python code will write a file " CP2K_POSITIONS" 
> with coordinates instead of writing them into PIPE,
> >>> and cp2k_shell will read the positions from the file instead of the 
> PIPE.
> >>> Best,
> >>> Geng
> >>>
> >>>
> >>> IF (para_env%mepos==para_env%source) THEN
> >>> !READ (*,*,iostat=iostat) n_atom2
> >>> !IF (iostat/=0) CPABORT('setpos read n_atom')
> >>> !IF (n_atom2/=SIZE(pos)) THEN
> >>> ! CALL my_assert(.FALSE.,'setpos invalid number of atoms',failure)
> >>> ! DO i=1,n_atom
> >>> ! READ(*,'(a)',iostat=iostat) cmdStr
> >>> ! CALL compress(cmdStr,full=.TRUE.)
> >>> ! CALL uppercase(cmdStr)
> >>> ! IF (cmdStr=='*END') EXIT
> >>> ! END DO
> >>> ! GOTO 10
> >>> !END IF
> >>> !READ (*,*,iostat=iostat) pos
> >>> !IF (iostat/=0) CPABORT('setpos read coord')
> >>> inquire(unit=201,opened=unitalive)
> >>> if (unitalive) CPABORT('UNIT 201 is being used')
> >>> inquire(file="CP2K_POSITIONS",exist=filepresence)
> >>> if (.not. filepresence) CPABORT('FILE CP2K_POSITIONS NOT EXIST')
> >>> 
> open(201,action='READ',file="CP2K_POSITIONS",iostat=iostat,status='OLD',form='FORMATTED',ACCESS='SEQUENTIAL')
> >>> if (iostat/=0) CPABORT('read CP2K_POSITIONS')
> >>> READ(201,*,iostat=iostat) n_atom2
> >>> IF (iostat/=0) CPABORT('setpos read n_atom2')
> >>> IF (n_atom2/=SIZE(pos)) THEN
> >>> CALL my_assert(.FALSE.,'setpos invalid number of atoms',failure)
> >>> DO i=1,n_atom
> >>> READ(201,'(a)',iostat=iostat) cmdStr
> >>> CALL compress(cmdStr,full=.TRUE.)
> >>> CALL uppercase(cmdStr)
> >>> IF (cmdStr=='*END') EXIT
> >>> END DO
> >>> GOTO 10
> >>> END IF
> >>> READ (201,*,iostat=iostat) pos
> >>> CLOSE(201)
> >>> IF (iostat/=0) CPABORT('setpos read coord')
> >>> pos(:) = pos(:)/pos_fact
> >>> READ(*,'(a)',iostat=iostat) cmdStr
> >>> CALL compress(cmdStr,full=.TRUE.)
> >>> CALL uppercase(cmdStr)
> >>> CALL my_assert(cmdStr=='*END',' missing *END',failure)
> >>> END IF
> >>>
> >>>
> >>> ---changes in ase cp2k calcualtor -----
> >>> if 'positions' in system_changes:
> >>> with open("CP2K_POSITIONS","w") as fp:
> >>> fp.write("%d\n" % (3*n_atoms))
> >>> for pos in self.atoms.get_positions():
> >>> fp.write('%.18e %.18e %.18e\n' % tuple(pos))
> >>> self._shell.send('SET_POS %d' % self._force_env_id)
> >>> #self._shell.send('%d' % (3 * n_atoms))
> >>> #for pos in self.atoms.get_positions():
> >>> # self._shell.send('%.18e %.18e %.18e' % tuple(pos))
> >>> self._shell.send('*END')
> >>> max_change = float(self._shell.recv())
> >>> assert max_change >= 0 # sanity check
> >>> self._shell.expect('* READY')
> >>> if os.path.isfile("CP2K_POSITIONS"):
> >>> os.remove("CP2K_POSITIONS")
> >>>
> >>> 在2020年8月17日星期一 UTC-7 下午4:42:29<ani... at gmail.com> 写道:
> >>>>
> >>>> Thanks Geng,
> >>>>
> >>>> I went through your earlier post regarding the same issue. Can you 
> send me the respective cp2k_shell.F file that works for you. I would like 
> to incorporate it and check.
> >>>>
> >>>> Also can you send me the python script you used as well.
> >>>>
> >>>> Best Regards,
> >>>> Aniruddha M Dive
> >>>>
> >>>>
> >>>> On Monday, August 17, 2020 at 7:44:08 AM UTC-7, Sun Geng wrote:
> >>>>>
> >>>>> Dear Aniruddha,
> >>>>>
> >>>>> Sometimes ago, I have encountered a similar problem,
> >>>>> I think the reason is that the python code communicates 
> positions/forces with the mpi cp2k_shell.popt.
> >>>>> There is a problem when MPI code read the pipe: the MPI code will 
> only read truncated data (such as positions) from the pipe, not all of them.
> >>>>> So CP2K_shell.popt is still waiting for more coordinates and gets 
> stuck.
> >>>>>
> >>>>> Best,
> >>>>> Geng
> >>>>>
> >>>>>
> >>>>>
> >>>>> 在2020年8月13日星期四 UTC-7 下午1:20:17<ani... at gmail.com> 写道:
> >>>>>>
> >>>>>> Thanks Hasan,
> >>>>>>
> >>>>>> I was able to get the Cp2K working. However I face another issue. 
> The simulation runs well for few steps and after that I cannot see my 
> output file being updated. The simulation shows running however I am not 
> able to see any output being updated in the cp2k output file as well as the 
> slurm output file. I have attached my job submission script, python script 
> as well as the out files for reference. Could this be a memory issue?
> >>>>>>
> >>>>>> Best,
> >>>>>> Aniruddha M Dive
> >>>>>>
> >>>>>>
> >>>>>> On Tuesday, August 4, 2020 at 10:12:17 AM UTC-7, Hasan Al-Mahayni 
> wrote:
> >>>>>>>
> >>>>>>> Hello,
> >>>>>>>
> >>>>>>> I had similar problems starting CP2K with ASE earlier this summer. 
> I will attach an example of geometric optimization for a slab, I hope it 
> helps. You need to copy paste a large portion of your cp2k input file in 
> your python script, because ASE does not provide all the input parameters 
> you will need to perform geo_opt. Please find an example attached below.
> >>>>>>>
> >>>>>>> Cheers,
> >>>>>>>
> >>>>>>> Hasan.
> >>>>>>>
> >>>>>>> On Tue, Aug 4, 2020 at 1:16 AM Maxime Van den Bossche <
> maxi... at gmail.com> wrote:
> >>>>>>>>
> >>>>>>>> Dear Aniruddha,
> >>>>>>>>
> >>>>>>>> Since you haven't provided a minimal example, nor the error 
> message you're getting
> >>>>>>>> from ASE or CP2K, I haven't looked into debugging the (bulky) 
> example you sent.
> >>>>>>>>
> >>>>>>>> But I don't think you can do the geometry optimization in this 
> way. ASE uses the cp2k_shell binary,
> >>>>>>>> which seems to only perform single-point calculations but not 
> e.g. geometry optimizations.
> >>>>>>>>
> >>>>>>>> The idea behind cp2k_shell is that the 'driver' (in this case 
> ASE) is the one moving the atoms
> >>>>>>>> around, and what CP2K does is e.g. calculating the energy and the 
> gradients for a given geometry.
> >>>>>>>>
> >>>>>>>> Here is a minimal example of a geometry optimization, and you can 
> work your way up
> >>>>>>>> from there:
> >>>>>>>>
> >>>>>>>> from ase.build import molecule
> >>>>>>>> from ase.calculators.cp2k import CP2K
> >>>>>>>> from ase.optimize import BFGS
> >>>>>>>>
> >>>>>>>> atoms = molecule('H2O')
> >>>>>>>> atoms.center(vacuum=2.0)
> >>>>>>>>
> >>>>>>>> calc = CP2K(command='cp2k_shell.sopt')
> >>>>>>>> atoms.set_calculator(calc)
> >>>>>>>>
> >>>>>>>> dyn = BFGS(atoms)
> >>>>>>>> dyn.run(fmax=0.05)
> >>>>>>>>
> >>>>>>>> Best regards,
> >>>>>>>> Maxime
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> You received this message because you are subscribed to the 
> Google Groups "cp2k" group.
> >>>>>>>>
> >>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
> send an email to c... at googlegroups.com.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/cp2k/df050a2d-1161-4e2c-98c9-0463adcb4c3do%40googlegroups.com
> .
> >
> > --
> > You received this message because you are subscribed to the Google 
> Groups "cp2k" group.
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to cp... at googlegroups.com.
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/cp2k/7d31cb08-bfbd-4a88-a0d3-8990d132c7d4n%40googlegroups.com
> .
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20210115/6272f708/attachment.htm>


More information about the CP2K-user mailing list