File: generate-vdw-params.py

package info (click to toggle)
libmbd 0.12.8-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 700 kB
  • sloc: f90: 7,222; python: 1,512; ansic: 127; makefile: 48; sh: 12
file content (30 lines) | stat: -rwxr-xr-x 1,055 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python3
import csv
from importlib.resources import open_text

with open_text('pymbd', 'vdw-params.csv') as f:
    reader = csv.DictReader(f, quoting=csv.QUOTE_NONNUMERIC)
    rows = list(reader)
rows = [row for row in rows if row['symbol'][-1] not in '+-']
n = len(rows)
print(f'real(dp), parameter :: ts_vdw_params(3, {n}) = reshape([ &')
for i, row in enumerate(rows):
    alpha_0 = row['alpha_0(TS)'] or 0
    C6 = row['C6(TS)'] or 0
    R_vdw = row['R_vdw(TS)'] or 0
    print(
        f'    {alpha_0}d0, {C6}d0, {R_vdw}d0{"," if i < n-1 else ""} &'
        f'  ! {row["symbol"]}'
    )
print(f'], [3, {n}])')
print()
print(f'real(dp), parameter :: tssurf_vdw_params(3, {n}) = reshape([ &')
for i, row in enumerate(rows):
    alpha_0 = row['alpha_0(TSsurf)'] or row['alpha_0(TS)'] or 0
    C6 = row['C6(TSsurf)'] or row['C6(TS)'] or 0
    R_vdw = row['R_vdw(TSsurf)'] or row['R_vdw(TS)'] or 0
    print(
        f'    {alpha_0}d0, {C6}d0, {R_vdw}d0{"," if i < n-1 else ""} &'
        f'  ! {row["symbol"]}'
    )
print(f'], [3, {n}])')