Claude-skill-registry dqmc-dev

Workflow for modifying DQMC C code, adding new measurements, and running tests. Use when editing source code, implementing new observables, debugging, or validating code changes.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/dqmc-dev" ~/.claude/skills/majiayu000-claude-skill-registry-dqmc-dev && rm -rf "$T"
manifest: skills/data/dqmc-dev/SKILL.md
source content

Code Development

Build & Test

# Build
make               # -> build/dqmc
make clean         # remove build/

# Test
cd test && make && ./test_greens

Smoke Test

After any code change:

dqmc-util gen Nx=4 Ny=4 U=4 dt=0.1 L=20 n_sweep_warm=50 n_sweep_meas=100
build/dqmc sim_0.h5
dqmc-util summary sim_0.h5

Adding New Measurements

  1. Add to X-macro list in

    src/rc/sim_types.h
    :

    // Add to MEAS_EQLT_LIST (or MEAS_UNEQLT_LIST for unequal-time)
    #define MEAS_EQLT_LIST \
        /* ... */ \
        X(my_meas, num_ij)  // pick an appropriate size expression
    
  2. Implement measurement kernel in

    src/rc/meas.c

  3. Add analysis function in

    dqmc_util/analyze_hub.py
    (and update reshaping/symmetrization if needed):

    @observable(
        description="my new observable",
        requires=("meas_eqlt/n_sample", "meas_eqlt/sign", "meas_eqlt/my_meas"),
    )
    def _my_meas(ctx):
        return core.jackknife_noniid(
            ctx.data["meas_eqlt/n_sample"],
            ctx.data["meas_eqlt/sign"],
            ctx.data["meas_eqlt/my_meas"],
        )
    

Key Code Patterns

Dual compilation: Files in

src/rc/
compile twice. Use
RC(name)
macro for real/complex dispatch.

Memory: Use

my_calloc()
for 64-byte aligned allocations.

Profiling: Wrap with

profile_begin(name)
/
profile_end(name)
.

Definition of Done

  • make
    succeeds without warnings
  • cd test && make && ./test_greens
    passes
  • Smoke run completes
  • If touching measurements: verify via
    dqmc-util summary