# [gmx-users] pull code with defined negative relative displacements

Chris Neale chris.neale at utoronto.ca
Wed Nov 18 18:12:49 CET 2009

```Hi Berk,

I have done the tests and you are entirely correct. I have one further
question: If I simply want to pull to a relative displacement of -1.0
nm, is there any reason to prefer one of these methods, or are they
just overlapping implementations of different methods that also have
unique abilities given other settings?

To summarize my tests, pull_geometry=direction can indeed pull to negative
displacements and there is no bimodal behaviour. My misunderstanding
derived from the fact that

pull_geometry            = direction
pull_init1               = 1.0
pull_vec1                = 0 0 1

gave the forces as I expected them, while

pull_vec1                = 0 0 -1

reports the negative of the force that I expected. Since the force as
output is probably applied after multiplication by pull_vec1, it might
be more intuitive to simply output the force after it is multiplied by
pull_vec1 such that what is output is the actual applied force. But
then again there are probably some good reasons why it is output the
way that it is.

I have included probability distribution plots for the sampling along z for the tests below at:
http://i205.photobucket.com/albums/bb192/chrisneale_2007/X10.png  (1.0 nm displacement test)
http://i205.photobucket.com/albums/bb192/chrisneale_2007/X005.png  (0.05 nm displacement test)
http://i205.photobucket.com/albums/bb192/chrisneale_2007/X35.png  (3.5 nm displacement test)

Thank you for all of your assistance,
Chris.

#####################
Summary for attempts to pull to -1.0:

### Pulls to -1

pull_geometry            = position
pull_init1               = 0 0 -1
pull_vec1                = 0 0 0

pull_geometry            = direction
pull_init1               = -1.0
pull_vec1                = 0 0 1

pull_geometry            = direction
pull_init1               = 1.0
pull_vec1                = 0 0 -1

### Pulls to +1

pull_geometry            = direction
pull_init1               = 1.0
pull_vec1                = 0 0 1

#####################
Detailed results:

pull_geometry            = position
pull_init1               = 0 0 -1
pull_vec1                = 0 0 0

\$ tail coord.xvg
98.2000	5.03064	-0.96114
98.4000	5.02906	-0.968864
98.6000	5.02755	-1.0196
98.8000	5.02577	-0.971355
99.0000	5.02408	-0.948518
99.2000	5.02289	-0.973627
99.4000	5.0227	-0.977471
99.6000	5.02293	-0.965711
99.8000	5.0242	-1.01475
100.0000	5.0251	-1.03216

\$ tail force.xvg
98.2000	-19.4299
98.4000	-15.568
98.6000	9.8014
98.8000	-14.3227
99.0000	-25.741
99.2000	-13.1865
99.4000	-11.2644
99.6000	-17.1443
99.8000	7.37747
100.0000	16.0813

########################################

pull_geometry            = direction
pull_init1               = 1.0
pull_vec1                = 0 0 1

\$ tail coord.xvg
98.2000	5.06691	1.09005
98.4000	5.06773	1.04829
98.6000	5.06842	1.02481
98.8000	5.06934	1.02874
99.0000	5.07061	0.995157
99.2000	5.07164	0.990872
99.4000	5.07205	1.00651
99.6000	5.07256	1.02346
99.8000	5.07107	0.986439
100.0000	5.06931	1.03009

\$ tail force.xvg
98.2000	-45.0273
98.4000	-24.1432
98.6000	-12.4043
98.8000	-14.3716
99.0000	2.42147
99.2000	4.56404
99.4000	-3.25742
99.6000	-11.7324
99.8000	6.78027
100.0000	-15.0443

### where it does start at -1.0

\$ grep -v '[#|@]' coord.xvg |head
0.0000	5.05992	-1.09968
0.2000	5.05948	-0.473992
0.4000	5.05982	0.43101
0.6000	5.06017	0.77986
0.8000	5.0609	0.78875
1.0000	5.06113	0.75552
1.2000	5.06151	0.750633
1.4000	5.06086	0.79958
1.6000	5.05976	0.821069
1.8000	5.05811	0.950296

###############################

pull_geometry            = direction
pull_init1               = -1.0
pull_vec1                = 0 0 1

\$ tail -n 30 coord.xvg|head -n 10
94.2000	5.04636	-1.00959
94.4000	5.04605	-1.09414
94.6000	5.04503	-1.09134
94.8000	5.0431	-1.10409
95.0000	5.04174	-1.05292
95.2000	5.04012	-1.03421
95.4000	5.03944	-1.05723
95.6000	5.03981	-1.00803
95.8000	5.04072	-1.01506
96.0000	5.04055	-0.980655

\$ tail -n 30 force.xvg|head -n 10
94.2000	4.79288
94.4000	47.0722
94.6000	45.6695
94.8000	52.0426
95.0000	26.4623
95.2000	17.107
95.4000	28.6127
95.6000	4.0165
95.8000	7.52866
96.0000	-9.67265

###############################

pull_geometry            = direction
pull_init1               = 1.0
pull_vec1                = 0 0 -1

\$ tail coord.xvg
98.2000	5.01781	-1.04195
98.4000	5.01766	-0.988034
98.6000	5.01789	-0.963644
98.8000	5.0185	-0.980899
99.0000	5.01958	-0.917222
99.2000	5.021	-1.00548
99.4000	5.02016	-0.970434
99.6000	5.01848	-1.01137
99.8000	5.01723	-0.950541
100.0000	5.01743	-1.01916

\$ tail force.xvg
98.2000	-20.9744
98.4000	5.98316
98.6000	18.1779
98.8000	9.55039
99.0000	41.3892
99.2000	-2.73847
99.4000	14.7832
99.6000	-5.68352
99.8000	24.7297
100.0000	-9.58189

#####################
#####################
#####################
#####################

Summary for attempts to pull to -0.1:

### Pulls to -0.1

pull_geometry            = position
pull_init1               = 0 0 -0.1
pull_vec1                = 0 0 0

pull_geometry            = direction
pull_init1               = -0.1
pull_vec1                = 0 0 1

pull_geometry            = direction
pull_init1               = 0.1
pull_vec1                = 0 0 -1

### Pulls to +0.1

pull_geometry            = direction
pull_init1               = 0.1
pull_vec1                = 0 0 1

#####################
Detailed results:

pull_geometry            = position
pull_init1               = 0 0 -0.1
pull_vec1                = 0 0 0

\$ tail coord.xvg
98.2000	5.05551	-0.0467954
98.4000	5.05655	-0.0756043
98.6000	5.05742	-0.132113
98.8000	5.05886	-0.182411
99.0000	5.05929	-0.148237
99.2000	5.05957	-0.0355667
99.4000	5.06157	0.00486353
99.6000	5.06353	0.0215776
99.8000	5.06373	-0.0272107
100.0000	5.06301	-0.157927

\$ tail force.xvg
98.2000	-26.6023
98.4000	-12.1979
98.6000	16.0563
98.8000	41.2056
99.0000	24.1184
99.2000	-32.2166
99.4000	-52.4318
99.6000	-60.7888
99.8000	-36.3946
100.0000	28.9634

########################################

pull_geometry            = direction
pull_init1               = 0.1
pull_vec1                = 0 0 1

\$ tail coord.xvg
98.2000	5.03896	-0.0415608
98.4000	5.03914	-0.0285805
98.6000	5.03966	0.0746529
98.8000	5.03966	0.22066
99.0000	5.04063	0.254914
99.2000	5.04097	0.0771699
99.4000	5.03999	-0.0702654
99.6000	5.04055	-0.0993152
99.8000	5.04165	0.0109239
100.0000	5.04156	0.158978

\$ tail force.xvg
98.2000	70.7804
98.4000	64.2902
98.6000	12.6735
98.8000	-60.3298
99.0000	-77.457
99.2000	11.415
99.4000	85.1327
99.6000	99.6576
99.8000	44.5381
100.0000	-29.4892

########################################

pull_geometry            = direction
pull_init1               = -0.1
pull_vec1                = 0 0 1

\$ tail coord.xvg
98.2000	5.02845	-0.0551189
98.4000	5.02783	-0.0799781
98.6000	5.0266	-0.145213
98.8000	5.02534	-0.112499
99.0000	5.02392	-0.06543
99.2000	5.02339	-0.0648827
99.4000	5.02286	-0.130913
99.6000	5.02251	-0.196036
99.8000	5.02211	-0.190228
100.0000	5.02168	-0.216231

\$ tail force.xvg
98.2000	-22.4406
98.4000	-10.0109
98.6000	22.6063
98.8000	6.24961
99.0000	-17.285
99.2000	-17.5586
99.4000	15.4567
99.6000	48.0178
99.8000	45.1138
100.0000	58.1155

###############################

pull_geometry            = direction
pull_init1               = 0.1
pull_vec1                = 0 0 -1

\$ tail coord.xvg
98.2000	5.05883	-0.110131
98.4000	5.05931	-0.156342
98.6000	5.0597	-0.143227
98.8000	5.05965	-0.13037
99.0000	5.05919	-0.0630012
99.2000	5.06013	-0.0468867
99.4000	5.06169	-0.1017
99.6000	5.06282	-0.205357
99.8000	5.06437	-0.194031
100.0000	5.06543	-0.139003

\$ tail force.xvg
98.2000	-5.0653
98.4000	-28.1712
98.6000	-21.6133
98.8000	-15.1848
99.0000	18.4994
99.2000	26.5566
99.4000	-0.850237
99.6000	-52.6784
99.8000	-47.0155
100.0000	-19.5014

```

More information about the gromacs.org_gmx-users mailing list