[gmx-developers] Question about MM point charges in QM/MM calculation

Pia Toelle pia.toelle at bccms.uni-bremen.de
Tue Feb 3 15:04:53 CET 2009


Thanks for your help!

I do have pbc! And I would like to include all non-QM-atoms as MM point
charges. As I am using DFTB, a big number of point charges are no problem.
What's about the last comment? Is it possible to put all cut-off's to
zero and where? Are you talking about changes in the code or just in the
mdp-file?
Or maybe I will try the changes Gerrit proposed.

Pia

Berk Hess wrote:
> But in case of no pbc, couldn't you just run with no cut-off (all
> cut-offs set to zero)
> and automatically get all MM charges?
> Since MM should be cheap compared to QM this should not be
> computationally expensive.
> 
> Berk
> 
> Gerrit Groenhof wrote:
>> I did not think about that.
>>
>> In the case of no pbc, you can add all non QM atoms to the MMrec atom
>> list.
>>
>> GErrit
>>
>> Berk Hess wrote:
>>> Hi,
>>>
>>> This looks like pbc code.
>>> Maybe you do not have periodic boundary conditions,
>>> but you would not want to take all MM charges into account when you
>>> have PBC.
>>>
>>> Berk
>>>
>>> Gerrit Groenhof wrote:
>>>> Sorry one line should be changed still:
>>>>     }
>>>>     mm_j_particles[mm_nr].j = j;
>>>>     mm_j_particles[mm_nr].shift = is;
>>>>     mm_nr++;
>>>>   }
>>>>
>>>>
>>>>
>>>>
>>>> Gerrit Groenhof wrote:
>>>>> So instead of looking into the QMMMnblists, you could simply scan
>>>>> over all particles. If (!bQMMM[i]), add it to the MM array. This
>>>>> way you get the whole box, but there could be problems with
>>>>> particles being in a different periodic image that cannot be not
>>>>> shifted back correctly prior to the QM call.
>>>>>
>>>>> I am not sure about this, but you coudl try something like in the
>>>>> update_QMMMrec routine(3.3.x only):
>>>>>
>>>>>
>>>>>
>>>>>  if(QMMMlist_sr.nri){
>>>>>      qm_i_particles[0].shift = XYZ2IS(0,0,0);
>>>>>      for(i=0;i<QMMMlist_sr.nri;i++){
>>>>>    qm_i_particles[i].j     = QMMMlist_sr.iinr[i];
>>>>>    if(i){
>>>>>      qm_i_particles[i].shift =
>>>>> pbc_dx_aiuc(&pbc,x[QMMMlist_sr.iinr[0]],
>>>>>                        x[QMMMlist_sr.iinr[i]],dx);
>>>>>
>>>>>    }
>>>>>      crd[0] = IS2X(QMMMlist_sr.shift[i]) +
>>>>> IS2X(qm_i_particles[i].shift);
>>>>>    crd[1] = IS2Y(QMMMlist_sr.shift[i]) +
>>>>> IS2Y(qm_i_particles[i].shift);
>>>>>    crd[2] = IS2Z(QMMMlist_sr.shift[i]) +
>>>>> IS2Z(qm_i_particles[i].shift);
>>>>>    is = XYZ2IS(crd[0],crd[1],crd[2]);
>>>>>   for(j=0;j<md->nr;j++){
>>>>>     if(!bQMMM[j]){
>>>>>      if(mm_nr >= mm_max){
>>>>>        mm_max += 1000;
>>>>>        srenew(mm_j_particles,mm_max);
>>>>>      }
>>>>>      mm_j_particles[mm_nr].j = QMMMlist_sr.jjnr[j];
>>>>>      mm_j_particles[mm_nr].shift = is;
>>>>>      mm_nr++;
>>>>>    }
>>>>> }
>>>>>
>>>>> Gerrit
>>>>>
>>>>> Pia Toelle wrote:
>>>>>> Thanks for the comment and your interest.
>>>>>>
>>>>>>
>>>>>> I still would like to get informations about the MM-atom list
>>>>>> (mm->xMM[i][..],mm->MMcharges[i]) and how I could change it, so
>>>>>> that all
>>>>>> MM atoms are included not considering the cut-off, because we
>>>>>> would like
>>>>>> to print out all (!) MM atoms (and their charges).
>>>>>> Please tell me if a change of the (t_MMrec)-variable mm could cause
>>>>>> problems for the MM-part of the routine or is  the
>>>>>> (t_MMrec)-variable mm
>>>>>> only used in the QM part.
>>>>>> Or would it be possible to print out all MM atoms + charges at an
>>>>>> other
>>>>>> point in the program? Where?
>>>>>>
>>>>>> Thanks in advance.
>>>>>>
>>>>>> Pia Toelle
>>>>>>
>>>>>> BCCMS
>>>>>> Uni Bremen
>>>>>> Am Fallturm 1
>>>>>> 28359 Bremen
>>>>>> Germany
>>>>>>
>>>>>>
>>>>>>
>>>>>> Gerrit Groenhof wrote:
>>>>>>  
>>>>>>> Hi,
>>>>>>>
>>>>>>> We did a gmx-dftb interface that used function calls from the linked
>>>>>>> dftb librarysome time ago. That was in 3.3.3, but I never found
>>>>>>> the time
>>>>>>> to pt it in 4. ALso I remember some compilation issues with the dftb
>>>>>>> code on 64 bit machines. I can send you the code if you're
>>>>>>> interested.
>>>>>>>
>>>>>>> For QM/MM the MM atoms are indeed set with the cut-off options.
>>>>>>> Although
>>>>>>> for dftb it is not very difficult, I have never found the time or
>>>>>>> need
>>>>>>> to complete the ewald implementation.  To avoid duplications, I
>>>>>>> suggest
>>>>>>> we finish the PME implementation for the DFTB code together.
>>>>>>> Contacting
>>>>>>> me off-list  is probably more convenient if you are interested.
>>>>>>>
>>>>>>> BEst,
>>>>>>>
>>>>>>> Gerrit
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 30 Jan 2009, at 18:09, Pia Toelle wrote:
>>>>>>>
>>>>>>>  
>>>>>>>> Hello.
>>>>>>>>
>>>>>>>> I have got some questions concerning the MM-atom-list in a QM/MM
>>>>>>>> calculation.
>>>>>>>>
>>>>>>>> We do QM-MM calculations using the Gaussian interface
>>>>>>>> (gromacs-3.3.3),
>>>>>>>> but modified the code to be able to use DFTB instead of Gaussian
>>>>>>>> (www.dftb.org).
>>>>>>>> Our (MM-)system is a SiO2-surface (with periodic boundary
>>>>>>>> condition;
>>>>>>>> full).
>>>>>>>> We use PME and DO NOT (!) define proper charge groups for the
>>>>>>>> surface
>>>>>>>> structure, every atom forms its own charge group. Number of MM
>>>>>>>> atoms
>>>>>>>> ~1900.
>>>>>>>> (The proper definition of charge groups in our system is not
>>>>>>>> obvious or
>>>>>>>> even impossible, as it is a solid and a periodic system)
>>>>>>>>
>>>>>>>> We noticed, that the MM system considered in the QM calculation
>>>>>>>> does not
>>>>>>>> consist of the entire MM system. The point charges
>>>>>>>> (mm->xMM[i][..],mm->MMcharges[i]) that are written to input.com (by
>>>>>>>> qm_gaussian.c) are only those of the MM atoms in the vicinity of
>>>>>>>> the QM
>>>>>>>> atoms. The list of MM atoms in the vicinity of the QM-zone is
>>>>>>>> set (as
>>>>>>>> far as we can see) using the neighbor-search algorithm depending
>>>>>>>> also on
>>>>>>>> the charge groups (in ns5_core.c). Please correct me if I am
>>>>>>>> wrong at
>>>>>>>> some point.
>>>>>>>> Is it right, that the cut-off for the QM/MM - neighbor search is
>>>>>>>> set by
>>>>>>>> 'rcoulomb' in the mdp-file? Or 'rlist'?
>>>>>>>>
>>>>>>>> Anyhow, we would like to print out all (!) MM atoms (and their
>>>>>>>> charges).
>>>>>>>> How to solve this problem?
>>>>>>>> Is there a simple way to put all MM atoms in the mm list? And
>>>>>>>> please
>>>>>>>> tell me if a change of the (t_MMrec)-variable mm could cause
>>>>>>>> problems
>>>>>>>> for the MM-part of the routine or is  the (t_MMrec)-variable mm
>>>>>>>> only
>>>>>>>> used in the QM part.
>>>>>>>> Or would it be possible to print out all MM atoms + charges at
>>>>>>>> an other
>>>>>>>> point in the program? Where?
>>>>>>>> I am grateful for any helpful information or idea.
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks in advance.
>>>>>>>>
>>>>>>>> Pia Toelle
>>>>>>>>
>>>>>>>> BCCMS
>>>>>>>> Uni Bremen
>>>>>>>> Am Fallturm 1
>>>>>>>> 28359 Bremen
>>>>>>>> Germany
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> gmx-developers mailing list
>>>>>>>> gmx-developers at gromacs.org
>>>>>>>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>>>>>>>> Please don't post (un)subscribe requests to the list. Use the
>>>>>>>> www interface or send it to gmx-developers-request at gromacs.org.
>>>>>>>>       
>>>>>>> -- 
>>>>>>> Gerrit Groenhof
>>>>>>> MPI biophysical chemistry
>>>>>>> Goettingen
>>>>>>> Germany
>>>>>>> http://wwwuser.gwdg.de/~ggroenh/
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> gmx-developers mailing list
>>>>>>> gmx-developers at gromacs.org
>>>>>>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>>>>>>> Please don't post (un)subscribe requests to the list. Use thewww
>>>>>>> interface or send it to gmx-developers-request at gromacs.org.
>>>>>>>     
>>>>>>
>>>>>> _______________________________________________
>>>>>> gmx-developers mailing list
>>>>>> gmx-developers at gromacs.org
>>>>>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>>>>>> Please don't post (un)subscribe requests to the list. Use the www
>>>>>> interface or send it to gmx-developers-request at gromacs.org.
>>>>>>   
>>>>>
>>>>> _______________________________________________
>>>>> gmx-developers mailing list
>>>>> gmx-developers at gromacs.org
>>>>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>>>>> Please don't post (un)subscribe requests to the list. Use the www
>>>>> interface or send it to gmx-developers-request at gromacs.org.
>>>>
>>>> _______________________________________________
>>>> gmx-developers mailing list
>>>> gmx-developers at gromacs.org
>>>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>>>> Please don't post (un)subscribe requests to the list. Use the www
>>>> interface or send it to gmx-developers-request at gromacs.org.
>>>
>>> _______________________________________________
>>> gmx-developers mailing list
>>> gmx-developers at gromacs.org
>>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>>> Please don't post (un)subscribe requests to the list. Use the www
>>> interface or send it to gmx-developers-request at gromacs.org.
>>
>> _______________________________________________
>> gmx-developers mailing list
>> gmx-developers at gromacs.org
>> http://www.gromacs.org/mailman/listinfo/gmx-developers
>> Please don't post (un)subscribe requests to the list. Use the www
>> interface or send it to gmx-developers-request at gromacs.org.
> 
> _______________________________________________
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://www.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the www
> interface or send it to gmx-developers-request at gromacs.org.




More information about the gromacs.org_gmx-developers mailing list