[gmx-users] mdatoms->massA pointer dereferencing

Berk Hess gmx3 at hotmail.com
Tue Aug 31 10:16:28 CEST 2010


Hi,

massA and massB in mdatoms are only set when doing free-energy calculations.
massT gives the mass of a particle.
Unfortunately there is a serious lack of documentation in the data type include files
(and in most other parts of the code).

Berk

> Date: Tue, 31 Aug 2010 10:46:51 +0300
> From: InonShar at TAU.ac.IL
> To: gmx-users at gromacs.org
> Subject: [gmx-users] mdatoms->massA pointer dereferencing
> 
> Good morning!
> 
> I'm having C trouble with something which should be simple enough: 
> GROMACS uses a struct called mdatoms which, amongst other things, houses 
> the atom masses during the simulation. I'm trying to access this data 
> (an array of the masses of all atoms). I've tried to consult internet 
> sources and my local tech support team, but it seems the problem is that 
> I'm misunderstanding the GROMACS programing. Any help would be greatly 
> appreciated.
> As I understand it, there's mdatoms, which is comprised of various stuff 
> among which is the pointer massA.
> 
>  From mdatom.c:
> 
> line 209: md->massA[i] = mA;
> 
> Since md and mdatoms are of the same struct type, I believe 
> mdatoms->massA is the pointer to the array I'm looking for.
> 
> I've tried all these various combinations in the attempt to access the 
> elements of this array, to no avail...
> 
> In md.c:
> 
> .
> .
> .
> include <mdatoms.h>
> .
> .
> .
> t_mdatoms.h *mdatoms
> .
> .
> .
> line 447: ...mdatoms->massT...
> .
> .
> .
> if (bFirstStep){
> fprintf(trajectory,"%d\n",max_trajectory_atom);
> for(trajectory_atom=0;trajectory_atom<max_trajectory_atom;trajectory_atom++){
> fprintf(stderr,"%d/n",trajectory_atom);
> fprintf(stderr,"%g ",mdatoms->massA[trajectory_atom]); //segmentation 
> fault ON RUN-TIME
> // fprintf(trajectory,"%g ",mdatoms->massA->trajectory_atom); //error: 
> request for member ‘trajectory_atom’ in something not a structure or 
> union ON COMPILATION
> // fprintf(trajectory,"%g ",mdatoms->massA.trajectory_atom); //error: 
> request for member ‘trajectory_atom’ in something not a structure or 
> union ON COMPILATION
> // real *atomsmasses = mdatoms->massA;fprintf(trajectory,"%g 
> ",atomsmasses[trajectory_atom]);//segfault on run-time
> // fprintf(trajectory,"%g ",mdatoms->tmassA); works, on the other hand, 
> tmassA being a number rather than pointer or array
> 
> The command I issue and the output is:
> 
> ~$ mdrun_d -quiet -v -pd -nt 1
> 
> :-) G R O M A C S (-:
> 
> GROup of MAchos and Cynical Suckers
> 
> :-) VERSION 4.5-beta4 (-:
> 
> 
> Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
> Copyright (c) 1991-2000, University of Groningen, The Netherlands.
> Copyright (c) 2001-2008, The GROMACS development team,
> check out http://www.gromacs.org for more information.
> 
> This program is free software; you can redistribute it and/or
> modify it under the terms of the GNU General Public License
> as published by the Free Software Foundation; either version 2
> of the License, or (at your option) any later version.
> 
> :-) mdrun_d (double precision) (-:
> 
> 
> Back Off! I just backed up md.log to ./#md.log.3#
> Getting Loaded...
> Reading file topol.tpr, VERSION 4.5-beta2 (double precision)
> Note: tpx file_version 71, software version 73
> Loaded with Money
> 
> 
> Back Off! I just backed up traj.trr to ./#traj.trr.3#
> 
> Back Off! I just backed up ener.edr to ./#ener.edr.3#
> starting mdrun 'Single Atom of Sulfur Between Two Gold Atoms'
> 6 steps, 0.0 ps.
> 
> 
> 0
> Segmentation fault
> 
> 
> The last two lines mean that the loop is entered ( trajectory_atom gets 
> value zero ) and as soon as "md->massA[trajectory_atom]" is accessed, 
> the program crashes. This was the result I got before. I tried accessing 
> only elements 1 and above (by changing trajectory_atom to 
> trajectory_atom+1 ) but got the same result.
> 
> Thanks!
> 
> -- 
> Inon Sharony
> ינון שרוני
> 972-3-6407634
> Please consider your environmental responsibility before printing this e-mail.
> 
> -- 
> gmx-users mailing list    gmx-users at gromacs.org
> http://lists.gromacs.org/mailman/listinfo/gmx-users
> Please search the archive at http://www.gromacs.org/search before posting!
> Please don't post (un)subscribe requests to the list. Use the 
> www interface or send it to gmx-users-request at gromacs.org.
> Can't post? Read http://www.gromacs.org/mailing_lists/users.php
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-users/attachments/20100831/3d265f88/attachment.html>


More information about the gromacs.org_gmx-users mailing list