[DFTB-Plus-User] Lattice vectors initialization

Riccardo Petraglia riccardo.petraglia at epfl.ch
Wed Nov 12 19:07:37 CET 2014


... Sure... 

On November 12, 2014 7:03:06 PM CET, Ben Hourahine <benjamin.hourahine at strath.ac.uk> wrote:
>Hello Riccardo,
>
>I'll reply properly off list, but would be happy to help you resolve
>the
>interface problems. Are you planning to make the modifications
>available
>afterwards?
>
>Regards
>
>Ben
>
>On 12/11/14 16:15, Riccardo Petraglia wrote:
>> Hello everybody,
>> 
>> I am trying to implement an interface between I-Pi
>> (http://arxiv.org/abs/1402.1045, https://github.com/i-pi/i-pi) and
>DFTB+
>> in order to use DFTB+ with enhanced MD methods.
>> 
>> The interface needs to add a way to insert atom positions and lattice
>> vectors directly inside the code (without the needing of writing an
>> input on a file) and reading the forces and stress tensor .
>> 
>> I am inserting the positions and lattice vectors just after the
>> "lpGeomOpt" loop and reading the forces just before the first check
>on
>> the result of the geometry optimization.
>> 
>> Everithing works fine if the lattice vectors inserted by my
>modification
>> are the same (or really close: <2A) to the lattice vectors specified
>in
>> the gen file. When the lattice vectors I insert are different from
>the
>> lattice vectors specified in the gen file the SCC iteration never
>converge.
>> 
>> I understand it is kind of impossible debbugging a code by mail...
>That
>> is not my purpose. I would like to know if the lattice vectors are
>used
>> to initiliaze something before the "injection point" I chosen (taking
>> into account that I am trying to spread the new values with the lines
>> following the injection). Another way to ask the question is: when
>using
>> the barostat, the change in the lattice vectors how are spread to
>every
>> subroutine? Is it normal that above a certain tolerance value, about
>2A
>> per side in a cubic box, the SCC is not able to converge anymore?
>> 
>> Here below the lines I inserted in the dftb+.F90 file with some lines
>> that should be helpful in determining the point to determine the
>> position in relation to the original code. I used the version of
>DFTB+
>> 1.2.1.
>> As attached the dftb_in.hsd and the geometry file.
>> 
>> 
>>   ipi = .true.
>> ### Injecting the coordinates and lattice vectors
>> 
>>   lpGeomOpt: do while ((iGeoStep <= nGeoSteps) .or. ipi)
>> 
>>      write(81,*) Coord0, latvec #debug
>>      !ipi: Reading positions from ipi
>>      if (ipi) then
>>         call coordsFromSocket(natom, Coord0, latvec)         #sending
>> the number of atom to the subroutine and asking for coordinate and
>> latticevectors
>>         recVec2p =
>> latVec(:,:)                                             #copied from
>> some other part of the DFTB+ code in order to spread the latVec to
>all
>> the subroutines
>>         call
>> matinv(recVec2p)                                              #
>>         recVec2p = reshape(recVec2p, (/3, 3/), order=(/2,
>> 1/))             #
>>         recVec = 2.0_dp * pi * recVec2p          #
>>         volume = determinant33(latVec)          #
>>         recVolume = determinant33(recVec)           #
>>         if (tSCC) then          #
>>            print*, 'updating lattice vectors in
>> SCC'                       #
>>            call updateLatVecs_SCC(latVec, recVec,
>> volume)                  #
>>            mCutoff = max(mCutoff,
>> getSCCCutoff())                          #
>>         end
>> if                                                             #
>>         if (tDispersion)
>> then                                              #
>>            print*, 'updating lattice vectors in dispersion
>> modules'        #
>>            call updateLatVecs(myDispersion, latVec, recVec, volume,
>> &      #
>> &specie0)                                                  #
>>            mCutoff = max(mCutoff,
>> getRCutoff(myDispersion))                #
>>         end
>> if                                                             #
>>      end if           #
>> 
>> 
>> 
>> ### Reading forces and strees tensor
>> 
>>      if (ipi) then
>>         print*, 'Sending Forces to the socket'
>>         call forcesToSocket(natom, energy%ETotal, -1*totalDeriv,
>> totalStress)
>>         cycle lpGeomOpt
>>      end if
>> 
>>       !! If geometry minimizer finished and the last calculated
>geometry
>> is the
>>       !! minimal one (not necessary the case, depends on the
>optimizer!)
>>       !! -> we are finished.
>>       !! Otherwise we have to recalc everything in the converged
>geometry.
>> 
>> 
>> _______________________________________________
>> DFTB-Plus-User mailing list
>> DFTB-Plus-User at mailman.zfn.uni-bremen.de
>>
>https://mailman.zfn.uni-bremen.de/cgi-bin/mailman/listinfo/dftb-plus-user
>> 
>
>-- 
>      Dr. B. Hourahine, SUPA, Department of Physics,
>    University of Strathclyde, John Anderson Building,
>            107 Rottenrow, Glasgow G4 0NG, UK.
>    +44 141 548 2325, benjamin.hourahine at strath.ac.uk
>
>2013/4 THE Awards Entrepreneurial University of the Year
>      2012/13 THE Awards UK University of the Year
>
>   The University of Strathclyde is a charitable body,
>        registered in Scotland, number SC015263
>_______________________________________________
>DFTB-Plus-User mailing list
>DFTB-Plus-User at mailman.zfn.uni-bremen.de
>https://mailman.zfn.uni-bremen.de/cgi-bin/mailman/listinfo/dftb-plus-user
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.zfn.uni-bremen.de/pipermail/dftb-plus-user/attachments/20141112/fba94e96/attachment.htm>


More information about the DFTB-Plus-User mailing list