Merge branch 'develop' into documentation

This commit is contained in:
fjosw 2026-05-28 09:37:37 +00:00
commit dcd10a187e
3 changed files with 40 additions and 5 deletions

View file

@ -238,8 +238,9 @@ def _extract_flowed_energy_density(path, prefix, dtr_read, xmin, spatial_extent,
It is assumed that one measurement is performed for each config. It is assumed that one measurement is performed for each config.
If this is not the case, the resulting idl, as well as the handling If this is not the case, the resulting idl, as well as the handling
of r_start, r_stop and r_step is wrong and the user has to correct of `r_start`, `r_stop` and `r_step` is wrong and the user has to correct
this in the resulting observable. this in the resulting observable.
The function also assumes that `r_step` is the same across all replica.
Parameters Parameters
---------- ----------
@ -250,7 +251,7 @@ def _extract_flowed_energy_density(path, prefix, dtr_read, xmin, spatial_extent,
dtr_read : int dtr_read : int
Determines how many trajectories should be skipped Determines how many trajectories should be skipped
when reading the ms.dat files. when reading the ms.dat files.
Corresponds to dtr_cnfg / dtr_ms in the openQCD input file. Corresponds to dtr_cnfg (dncnfg) in the openQCD input file.
xmin : int xmin : int
First timeslice where the boundary First timeslice where the boundary
effects have sufficiently decayed. effects have sufficiently decayed.
@ -358,8 +359,8 @@ def _extract_flowed_energy_density(path, prefix, dtr_read, xmin, spatial_extent,
if (len(t) < 4): if (len(t) < 4):
break break
nc = struct.unpack('i', t)[0] nc = struct.unpack('i', t)[0]
if nc % dtr_read == 0:
configlist[-1].append(nc) configlist[-1].append(nc)
t = fp.read(8 * tmax * (nn + 1)) t = fp.read(8 * tmax * (nn + 1))
if kwargs.get('plaquette'): if kwargs.get('plaquette'):
if nc % dtr_read == 0: if nc % dtr_read == 0:
@ -377,6 +378,8 @@ def _extract_flowed_energy_density(path, prefix, dtr_read, xmin, spatial_extent,
for current in range(0, len(item), tmax)]) for current in range(0, len(item), tmax)])
diffmeas = configlist[-1][-1] - configlist[-1][-2] diffmeas = configlist[-1][-1] - configlist[-1][-2]
if not all(c % diffmeas == 0 for c in configlist[-1]):
raise ValueError(f"Irregular spacing of configurations in {ls[rep]}, determined stepsize does not divide all trajectory steps.")
configlist[-1] = [item // diffmeas for item in configlist[-1]] configlist[-1] = [item // diffmeas for item in configlist[-1]]
if kwargs.get('assume_thermalization', True) and configlist[-1][0] > 1: if kwargs.get('assume_thermalization', True) and configlist[-1][0] > 1:
warnings.warn('Assume thermalization and that the first measurement belongs to the first config.') warnings.warn('Assume thermalization and that the first measurement belongs to the first config.')
@ -433,8 +436,9 @@ def extract_t0(path, prefix, dtr_read, xmin, spatial_extent, fit_range=5, postfi
It is assumed that one measurement is performed for each config. It is assumed that one measurement is performed for each config.
If this is not the case, the resulting idl, as well as the handling If this is not the case, the resulting idl, as well as the handling
of r_start, r_stop and r_step is wrong and the user has to correct of `r_start`, `r_stop` and `r_step` is wrong and the user has to correct
this in the resulting observable. this in the resulting observable.
The function also assumes that `r_step` is the same across all replica.
Parameters Parameters
---------- ----------

Binary file not shown.

View file

@ -65,6 +65,37 @@ def test_rwms():
pe.input.openQCD.extract_t0(path, '', dtr_read=3, xmin=0, spatial_extent=4, files=files, names=names, fit_range=2, plot_fit=True) pe.input.openQCD.extract_t0(path, '', dtr_read=3, xmin=0, spatial_extent=4, files=files, names=names, fit_range=2, plot_fit=True)
# trajectories
t0 = pe.input.openQCD.extract_t0(path, 'oqcd2_traj', dtr_read=30, xmin=16, spatial_extent=48, fit_range=2, plot_fit=True, names = ["A|r1"], assume_thermalization=False)
assert len(t0.idl['A|r1']) == 10
assert t0.idl['A|r1'][0] == 4
assert t0.idl['A|r1'][9] == 13
with pytest.warns(Warning):
t0 = pe.input.openQCD.extract_t0(path, 'oqcd2_traj', dtr_read=1, xmin=16, spatial_extent=48, fit_range=2, plot_fit=True, names = ["A|r1"])
assert len(t0.idl['A|r1']) == 30
assert t0.idl['A|r1'][0] == 1
assert t0.idl['A|r1'][29] == 30
with pytest.warns(Warning):
t0 = pe.input.openQCD.extract_t0(path, 'oqcd2_traj', dtr_read=10, xmin=16, spatial_extent=48, fit_range=2, plot_fit=True, names = ["A|r1"])
assert len(t0.idl['A|r1']) == 30
assert t0.idl['A|r1'][0] == 1
assert t0.idl['A|r1'][29] == 30
with pytest.warns(Warning):
t0 = pe.input.openQCD.extract_t0(path, 'oqcd2_traj', dtr_read=30, xmin=16, spatial_extent=48, fit_range=2, plot_fit=True, names = ["A|r1"])
assert len(t0.idl['A|r1']) == 10
assert t0.idl['A|r1'][0] == 1
assert t0.idl['A|r1'][9] == 10
with pytest.warns(Warning):
t0 = pe.input.openQCD.extract_t0(path, 'oqcd2_traj', dtr_read=60, xmin=16, spatial_extent=48, fit_range=2, plot_fit=True, names = ["A|r1"])
assert len(t0.idl['A|r1']) == 5
assert t0.idl['A|r1'][0] == 1
assert t0.idl['A|r1'][4] == 5
with pytest.raises(Exception): with pytest.raises(Exception):
pe.input.openQCD.extract_t0(path, '', dtr_read=3, xmin=0, spatial_extent=4, files=files, names=names, fit_range=2, c=14) pe.input.openQCD.extract_t0(path, '', dtr_read=3, xmin=0, spatial_extent=4, files=files, names=names, fit_range=2, c=14)
# w0 # w0