- #1

DHN

- 9

- 0

The equation is as:

G=4π∫

_{0}

^{∞}r

^{2}[g(r)-1] dr

I have the g(r) values.

Any suggestions are highly appreciated.

Thank you.

You are using an out of date browser. It may not display this or other websites correctly.

You should upgrade or use an alternative browser.

You should upgrade or use an alternative browser.

In summary, a Python program has been developed to calculate Kirkwood-Buff integrals, which are used to measure the preferential interactions between different species in a solution. The program utilizes molecular dynamics simulations and statistical mechanics methods to accurately calculate these integrals. This can provide valuable insights into the thermodynamic properties and behavior of complex mixtures, making it a useful tool for researchers in the fields of chemistry, physics, and materials science.

- #1

DHN

- 9

- 0

The equation is as:

G=4π∫

I have the g(r) values.

Any suggestions are highly appreciated.

Thank you.

Technology news on Phys.org

- #2

jedishrfu

Mentor

- 14,981

- 9,461

https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html

https://plot.ly/python/numerical-integration/

where you first calculate the values for the G function and then use custom code to integrate it or use the scipy package integrate() function or some variation thereof.

- #3

DHN

- 9

- 0

I have the don the following code:

A=open ('abc.dat','r')

C=open('def.dat','r')

D=open('ghi','w+')

f=4*pi

for row, col in izip (C, A):

cols=col.strip().split()

if(float(row)!=0):

x2 = ((float(cols[0])**2)*(float(row)-1))

print(integrate.quad(x2, 0, 4))

D.write(cols[0] + '\t' + (float(f)*(integrate.quad(x2,0,np.inf))))

D.close()

C.close()

A.close()

I get the following error as:

D.write(cols[0] + '\t' + (float(f)*(integrate.quad(x2,0,np.inf))))

File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 316, in quad points)

File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 383, in _quad return _quadpack._qagie(func,bound,infbounds,args,full_output,epsabs,epsrel,limit)

quadpack.error: quad: first argument is not callable

[Finished in 0.1s with exit code 1]

Any suggestions are highly appreciated.

Thank you.

- #4

Ibix

Science Advisor

- 12,374

- 14,375

Python:

```
A=open ('abc.dat','r')
C=open('def.dat','r')
D=open('ghi','w+')
f=4*pi
for row, col in izip (C, A):
cols=col.strip().split()
if(float(row)!=0):
x2 = ((float(cols[0])**2)*(float(row)-1))
print(integrate.quad(x2, 0, 4))
D.write(cols[0] + '\t' + (float(f)*(integrate.quad(x2,0,np.inf))))
D.close()
C.close()
A.close()
```

Did you read the first link @jedishrfu provided, which tells you what kind of thing the first argument to quad must be? Given the inputs you have, is quad an appropriate approach? Also, what output are you expecting from this? You will get a huge list of numbers, but ##\int_0^\infty 4\pi r^2(g(r)-1)dr## is a definite integral so should be a single number.

Finally, naming things in meaningless ways makes everyone's lives harder. Not correcting your code, just renaming your variables and files, I'd have written

Python:

```
rfile=open ('r.dat','r')
gfile=open('g.dat','r')
outfile=open('integral','w+')
f=4*pi
for g,r in izip (gfile, rfile):
rs=r.strip().split()
if(float(g)!=0):
x2 = ((float(rs[0])**2)*(float(g)-1))
print(integrate.quad(x2, 0, 4))
outfile.write(rs[0] + '\t' + (float(f)*(integrate.quad(x2,0,np.inf))))
outfile.close()
rfile.close()
gfile.close()
```

- #5

DHN

- 9

- 0

@lbix, I apologize for not making the code simpler as you have written.

Actually, i need to get a graph as:

https://imageshack.com/a/img922/2125/rC7rQL.png

The graph is r v/s G_{αβ} (in the image it is N_{αβ}). So from the values of r and g it should do the integration and give the values in which i plot the same r(x-axis) and v/s G_{αβ} on y-axis. It is not a single number.

Actually, i need to get a graph as:

https://imageshack.com/a/img922/2125/rC7rQL.png

The graph is r v/s G

Last edited:

- #6

PeterDonis

Mentor

- 47,176

- 23,536

Ibix said:My guess is that the two lines after the if should be further indented

Assuming you only want that code to execute if the if statement's condition is true, yes. As the code stands now, you have an if statement with nothing after the condition, which is a syntax error; but the interpreter won't see anything wrong syntactically with the indentation of the rest of the statements (logically they probably should be indented, but syntactically they would be correct as they are).

- #7

Ibix

Science Advisor

- 12,374

- 14,375

I'm simply observing that neither call to integrate.quad should work, so if the error comes from the second one, as reported, the first must not execute for some reason. Thus those two lines must be in a conditional branch that the later code isn't (edit: although I'd need to check the scoping rules to determine if x2 even exists outside the if branch if it's defined there). I agree that I don't know why the program's set up that way.PeterDonis said:Assuming you only want that code to execute if the if statement's condition is true, yes.

@DHN - my problem is that the maths you've posted doesn't produce the output you want. And the code you've posted doesn't work. So you are asking me to guess at what you are trying to do, and guess at how you are trying to do it. This isn't going to get far.

Last edited:

- #8

Ibix

Science Advisor

- 12,374

- 14,375

@PeterDonis - to be clear, the indentation in the code in my #4 is present in DHN's #3, but suppressed by the forum. It's not my interpretation - I just hit reply and added code tags.

Last edited:

A Kirkwood-Buff integral is a mathematical tool used in statistical mechanics to measure the strength of interactions between particles in a system. It is used to calculate the excess chemical potential of a component in a solution, and provides important information about the thermodynamic properties of the system.

Python is a popular programming language for scientific computing due to its versatility, ease of use, and extensive libraries. By using Python to calculate Kirkwood-Buff integrals, scientists can perform complex calculations quickly and efficiently, and easily modify and adapt the code for their specific research needs.

A Python program for calculating Kirkwood-Buff integrals uses statistical mechanics equations and algorithms to analyze data and compute the integrals. The program may also utilize various Python libraries, such as NumPy and SciPy, to perform mathematical operations and handle large datasets.

Yes, a Python program can calculate Kirkwood-Buff integrals for any system that can be described using statistical mechanics principles. This includes solutions, mixtures, and other complex systems. However, the accuracy of the results may depend on the assumptions and approximations made in the calculations.

As with any computational tool, there may be limitations to using a Python program to calculate Kirkwood-Buff integrals. These may include the need for a large amount of memory and processing power for complex systems, as well as the potential for errors or inaccuracies in the code. It is important for scientists to carefully validate their results and consider any potential limitations of their computational approach.

- Replies
- 10

- Views
- 2K

- Replies
- 3

- Views
- 1K

- Replies
- 9

- Views
- 2K

- Replies
- 5

- Views
- 2K

- Replies
- 55

- Views
- 4K

- Replies
- 1

- Views
- 939

- Replies
- 43

- Views
- 3K

- Replies
- 13

- Views
- 1K

- Replies
- 17

- Views
- 1K

- Replies
- 8

- Views
- 2K

Share: