restruct: introduce a file for flags
This commit is contained in:
parent
71332264cf
commit
e654d7c1bb
3 changed files with 65 additions and 106 deletions
59
corrlib/pars/openQCD/flags.py
Normal file
59
corrlib/pars/openQCD/flags.py
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
"""
|
||||||
|
Reconstruct the outputs of flags.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import struct
|
||||||
|
from typing import Any, BinaryIO
|
||||||
|
|
||||||
|
# lat_parms.c
|
||||||
|
def lat_parms_write_lat_parms(fp: BinaryIO) -> dict[str, Any]:
|
||||||
|
"""
|
||||||
|
NOTE: This is a duplcation from qcd2.
|
||||||
|
Unpack the lattice parameters written by write_lat_parms.
|
||||||
|
"""
|
||||||
|
lat_pars = {}
|
||||||
|
t = fp.read(16)
|
||||||
|
lat_pars["N"] = list(struct.unpack('iiii', t)) # lattice extends
|
||||||
|
t = fp.read(8)
|
||||||
|
nk, isw = struct.unpack('ii', t) # number of kappas and isw parameter
|
||||||
|
lat_pars["nk"] = nk
|
||||||
|
lat_pars["isw"] = isw
|
||||||
|
t = fp.read(8)
|
||||||
|
lat_pars["beta"] = struct.unpack('d', t)[0] # beta
|
||||||
|
t = fp.read(8)
|
||||||
|
lat_pars["c0"] = struct.unpack('d', t)[0]
|
||||||
|
t = fp.read(8)
|
||||||
|
lat_pars["c1"] = struct.unpack('d', t)[0]
|
||||||
|
t = fp.read(8)
|
||||||
|
lat_pars["csw"] = struct.unpack('d', t)[0] # csw factor
|
||||||
|
kappas = []
|
||||||
|
m0s = []
|
||||||
|
# read kappas
|
||||||
|
for ik in range(nk):
|
||||||
|
t = fp.read(8)
|
||||||
|
kappas.append(struct.unpack('d', t)[0])
|
||||||
|
t = fp.read(8)
|
||||||
|
m0s.append(struct.unpack('d', t)[0])
|
||||||
|
lat_pars["kappas"] = kappas
|
||||||
|
lat_pars["m0s"] = m0s
|
||||||
|
return lat_pars
|
||||||
|
|
||||||
|
|
||||||
|
def lat_parms_write_bc_parms(fp: BinaryIO) -> dict[str, Any]:
|
||||||
|
"""
|
||||||
|
NOTE: This is a duplcation from qcd2.
|
||||||
|
Unpack the boundary parameters written by write_bc_parms.
|
||||||
|
"""
|
||||||
|
bc_pars: dict[str, Any] = {}
|
||||||
|
t = fp.read(4)
|
||||||
|
bc_pars["type"] = struct.unpack('i', t)[0] # type of hte boundaries
|
||||||
|
t = fp.read(104)
|
||||||
|
bc_parms = struct.unpack('d'*13, t)
|
||||||
|
bc_pars["cG"] = list(bc_parms[:2]) # boundary gauge field improvement
|
||||||
|
bc_pars["cF"] = list(bc_parms[2:4]) # boundary fermion field improvement
|
||||||
|
phi: list[list[float]] = [[], []]
|
||||||
|
phi[0] = list(bc_parms[4:7])
|
||||||
|
phi[1] = list(bc_parms[7:10])
|
||||||
|
bc_pars["phi"] = phi
|
||||||
|
bc_pars["theta"] = list(bc_parms[10:])
|
||||||
|
return bc_pars
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import struct
|
from . import flags
|
||||||
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
@ -18,60 +18,9 @@ def read_qcd2_ms1_par_file(fname: Path) -> dict[str, dict[str, Any]]:
|
||||||
Dictionary holding the parameters specified in the given file.
|
Dictionary holding the parameters specified in the given file.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _qcd2_write_lat_parms() -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
NOTE: This is a duplcation from qcd2.
|
|
||||||
Unpack the lattice parameters written by write_lat_parms.
|
|
||||||
"""
|
|
||||||
lat_pars = {}
|
|
||||||
t = fp.read(16)
|
|
||||||
lat_pars["N"] = list(struct.unpack('iiii', t)) # lattice extends
|
|
||||||
t = fp.read(8)
|
|
||||||
nk, isw = struct.unpack('ii', t) # number of kappas and isw parameter
|
|
||||||
lat_pars["nk"] = nk
|
|
||||||
lat_pars["isw"] = isw
|
|
||||||
t = fp.read(8)
|
|
||||||
lat_pars["beta"] = struct.unpack('d', t)[0] # beta
|
|
||||||
t = fp.read(8)
|
|
||||||
lat_pars["c0"] = struct.unpack('d', t)[0]
|
|
||||||
t = fp.read(8)
|
|
||||||
lat_pars["c1"] = struct.unpack('d', t)[0]
|
|
||||||
t = fp.read(8)
|
|
||||||
lat_pars["csw"] = struct.unpack('d', t)[0] # csw factor
|
|
||||||
kappas = []
|
|
||||||
m0s = []
|
|
||||||
# read kappas
|
|
||||||
for ik in range(nk):
|
|
||||||
t = fp.read(8)
|
|
||||||
kappas.append(struct.unpack('d', t)[0])
|
|
||||||
t = fp.read(8)
|
|
||||||
m0s.append(struct.unpack('d', t)[0])
|
|
||||||
lat_pars["kappas"] = kappas
|
|
||||||
lat_pars["m0s"] = m0s
|
|
||||||
return lat_pars
|
|
||||||
|
|
||||||
def _qcd2_write_bc_parms() -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
NOTE: This is a duplcation from qcd2.
|
|
||||||
Unpack the boundary parameters written by write_bc_parms.
|
|
||||||
"""
|
|
||||||
bc_pars: dict[str, Any] = {}
|
|
||||||
t = fp.read(4)
|
|
||||||
bc_pars["type"] = struct.unpack('i', t)[0] # type of hte boundaries
|
|
||||||
t = fp.read(104)
|
|
||||||
bc_parms = struct.unpack('d'*13, t)
|
|
||||||
bc_pars["cG"] = list(bc_parms[:2]) # boundary gauge field improvement
|
|
||||||
bc_pars["cF"] = list(bc_parms[2:4]) # boundary fermion field improvement
|
|
||||||
phi: list[list[float]] = [[], []]
|
|
||||||
phi[0] = list(bc_parms[4:7])
|
|
||||||
phi[1] = list(bc_parms[7:10])
|
|
||||||
bc_pars["phi"] = phi
|
|
||||||
bc_pars["theta"] = list(bc_parms[10:])
|
|
||||||
return bc_pars
|
|
||||||
|
|
||||||
with open(fname, "rb") as fp:
|
with open(fname, "rb") as fp:
|
||||||
lat_par_dict = _qcd2_write_lat_parms()
|
lat_par_dict = flags.lat_parms_write_lat_parms(fp)
|
||||||
bc_par_dict = _qcd2_write_bc_parms()
|
bc_par_dict = flags.lat_parms_write_bc_parms(fp)
|
||||||
fp.close()
|
fp.close()
|
||||||
par_dict = {}
|
par_dict = {}
|
||||||
par_dict["lat"] = lat_par_dict
|
par_dict["lat"] = lat_par_dict
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import struct
|
from . import flags
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
def read_qcd2_par_file(fname: Path) -> dict[str, dict[str, Any]]:
|
def read_qcd2_par_file(fname: Path) -> dict[str, dict[str, Any]]:
|
||||||
"""
|
"""
|
||||||
The subroutines written here have names according to the openQCD programs and functions that write out the data.
|
The subroutines written here have names according to the openQCD programs and functions that write out the data.
|
||||||
|
|
@ -18,58 +17,10 @@ def read_qcd2_par_file(fname: Path) -> dict[str, dict[str, Any]]:
|
||||||
par_dict: dict
|
par_dict: dict
|
||||||
Dictionary holding the parameters specified in the given file.
|
Dictionary holding the parameters specified in the given file.
|
||||||
"""
|
"""
|
||||||
def _qcd2_write_lat_parms() -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
Unpack the lattice parameters written by write_lat_parms.
|
|
||||||
"""
|
|
||||||
lat_pars = {}
|
|
||||||
t = fp.read(16)
|
|
||||||
lat_pars["N"] = list(struct.unpack('iiii', t)) # lattice extends
|
|
||||||
t = fp.read(8)
|
|
||||||
nk, isw = struct.unpack('ii', t) # number of kappas and isw parameter
|
|
||||||
lat_pars["nk"] = nk
|
|
||||||
lat_pars["isw"] = isw
|
|
||||||
t = fp.read(8)
|
|
||||||
lat_pars["beta"] = struct.unpack('d', t)[0] # beta
|
|
||||||
t = fp.read(8)
|
|
||||||
lat_pars["c0"] = struct.unpack('d', t)[0]
|
|
||||||
t = fp.read(8)
|
|
||||||
lat_pars["c1"] = struct.unpack('d', t)[0]
|
|
||||||
t = fp.read(8)
|
|
||||||
lat_pars["csw"] = struct.unpack('d', t)[0] # csw factor
|
|
||||||
kappas = []
|
|
||||||
m0s = []
|
|
||||||
# read kappas
|
|
||||||
for ik in range(nk):
|
|
||||||
t = fp.read(8)
|
|
||||||
kappas.append(struct.unpack('d', t)[0])
|
|
||||||
t = fp.read(8)
|
|
||||||
m0s.append(struct.unpack('d', t)[0])
|
|
||||||
lat_pars["kappas"] = kappas
|
|
||||||
lat_pars["m0s"] = m0s
|
|
||||||
return lat_pars
|
|
||||||
|
|
||||||
def _qcd2_write_bc_parms() -> dict[str, Any]:
|
|
||||||
"""
|
|
||||||
Unpack the boundary parameters written by write_bc_parms.
|
|
||||||
"""
|
|
||||||
bc_pars: dict[str, Any] = {}
|
|
||||||
t = fp.read(4)
|
|
||||||
bc_pars["type"] = struct.unpack('i', t)[0] # type of hte boundaries
|
|
||||||
t = fp.read(104)
|
|
||||||
bc_parms = struct.unpack('d'*13, t)
|
|
||||||
bc_pars["cG"] = list(bc_parms[:2]) # boundary gauge field improvement
|
|
||||||
bc_pars["cF"] = list(bc_parms[2:4]) # boundary fermion field improvement
|
|
||||||
phi: list[list[float]] = [[], []]
|
|
||||||
phi[0] = list(bc_parms[4:7])
|
|
||||||
phi[1] = list(bc_parms[7:10])
|
|
||||||
bc_pars["phi"] = phi
|
|
||||||
bc_pars["theta"] = list(bc_parms[10:])
|
|
||||||
return bc_pars
|
|
||||||
|
|
||||||
with open(fname, "rb") as fp:
|
with open(fname, "rb") as fp:
|
||||||
lat_par_dict = _qcd2_write_lat_parms()
|
lat_par_dict = flags.lat_parms_qcd2_write_lat_parms(fp)
|
||||||
bc_par_dict = _qcd2_write_bc_parms()
|
bc_par_dict = flags.lat_parms_qcd2_write_bc_parms(fp)
|
||||||
fp.close()
|
fp.close()
|
||||||
par_dict = {}
|
par_dict = {}
|
||||||
par_dict["lat"] = lat_par_dict
|
par_dict["lat"] = lat_par_dict
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue