Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trace creation of propagator #3

Open
smangham opened this issue Jul 24, 2024 · 1 comment
Open

Trace creation of propagator #3

smangham opened this issue Jul 24, 2024 · 1 comment

Comments

@smangham
Copy link
Member

smangham commented Jul 24, 2024

We need to identify where the propagator is created.
ks_spectrum/lattice.h is where the lattice sites are defined, and these then use hisq (Highly Improved Staggered Quarks) to generate the fermion matrix, then inverts it. We need to find the step before the inversion. I should try making a more specific property call graph, using the function call graph I've generated, to figure out where it comes from.

Likely to involve:

  • ks_spectrum/lattice.h
  • generic_ks/hisq.h` ???
  • includes/generic_ks_includes.h
  • lo_prop_ks.c
@smangham
Copy link
Member Author

smangham commented Jul 25, 2024

Starting with main() in ks_spectrum/control.c:

  • Includes ks_spectrum_includes.h
  • control.c:72-74: Declares ks_prop_fields source, quark and prop .
    • prop is size MAX_PROP - relevant for future?
    • Initialises all to NULL
  • control.c:75: Declares int prop_nc of size MAX_PROP
    • Relevant for the future?
  • control.c:340: Declares ks_prop_fields tmp_source and tmp_src_qs of size MAX_PROP, and loops over the propagators
    • control.c:357: prop[i] is set to create_ksp_field
    • control.c:379: solve_ksprop is passed prop + i0, where i0 comes from param.begin_prop
      • Probably a memory offset for start of propagator array + propagator start offset?
      • param is not defined in control, control doesn't explicitly set it - it must be buried somewhere.
    • control.c:400: 'Complete the quark propagators by applying the sink operators to either the raw propagator or by building on an existing quark propagator'
      • control.c:500: Creates quark[j] using create_ksp_field again, then applies ksp_sink_op to it
      • control.c:511: Creates quark[j] using create_ksp_field again, then applies scalar_mult_add_ksprop_field to it
  • control.c:562: 'Compute the meson propagators'
  • control.c:609: Calls spectrum_ks on the quarks.
    • TODO: Explore more? Check with Bipasha about this one.
  • control.c:633: 'Compute the baryon propagators'
  • control.c:687: Calls spectrum_ks_baryon on the quarks.
    • TODO: Explore more? Check with Bipasha about this one.

So reminder to self: The propagator we're interested in is based on the fermions (1/2 integer spin).

  • Quarks are fermions (1/2 integer spin),
  • Mesons are not (2 quarks)
  • Baryons are (3 quarks)
    So the fermionic propagators are the quark and baryon ones.

So the possible propagator points are:

  • 'Raw propagator': Defined prop, and initialised in create_ksp_field
    • Probably what we want.
  • 'Solved propagator': Defined prop, solved in solve_ksprop
    • Probably the solved propagator.
  • 'Completed propagator': Defined quark, solved by ksp_sink_op, modified by scalar_mult_add_ksprop_field
    • Probably the correlator.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant