-
Notifications
You must be signed in to change notification settings - Fork 141
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
One Body Spin dependent Jastrow #3257
Conversation
Can one of the admins verify this patch? |
A test that I still want to add is a short run with the regular 1 body Jastrow and a 1 body Jastrow with separate up and down channels with the same parameters and make sure they agree. I am not sure how to write a test like that yet, but I will try to add something shortly. |
@@ -513,12 +599,26 @@ std::unique_ptr<WaveFunctionComponent> RadialJastrowBuilder::buildComponent(xmlN | |||
// it's a one body jastrow factor | |||
if (Jastfunction == "bspline") | |||
{ | |||
return createJ1<BsplineFunctor<RealType>>(cur); | |||
if (SpinOpt.find("yes") < SpinOpt.size()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would be more straightforward as if (SpinOpt == "yes")
(Unless I'm missing something about the values of SpinOpt - it is just "yes" or "no"?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks I agree it will be just yes or no. I will update this accordingly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
qmcpack/src/io/OhmmsData/AttributeSet.h
Line 58 in 9dfd387
*@param candidate_values candidate values to be checked against, the first element is the default value |
Use the third argument to restrict input options.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated. Thanks didn't know about that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the default should be no. So {"no", "yes"}
. Don't do the change now. I'm putting up a lot of review comments. I think we we should take the chance to do our best as the old one is intended to be deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My first round of comment.
// if target type is not specified J1UniqueFunctors["i"] is assigned | ||
// if target type is specified J1UniqueFunctors["ij"] is assigned | ||
// | ||
app_log() << " source" << source_type << " target type " << target_type << std::endl; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the electron species is not give, we can populate every target species with clones of the same unique_ptr.
I hope we only need J1UniqueFunctors and never need J1Functors.
I think Unique
is with respect to particle groups. Spin symmetry generally should be handled in the builder not inside this function.
For example, if you have spin-up, down electrons and positrons, you would like to populate up/down electron with the same Jastrow but positrons with a different one, I don't see the symmetry can be well recorded in J1UniqueFunctors.
For this reason, my assessment on J1UniqueFunctors is that it is to represent groups.
Inside unique J1 functor, it should carry shared_ptr for optimization info. The symmetry can be linked there and builder should handle this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I hope we only need J1UniqueFunctors and never need J1Functors.
I think this might be possible. I need more time
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inside unique J1 functor, it should carry shared_ptr for optimization info. The symmetry can be linked there and builder should handle this.
Let me know if the current iteration of this is similar to what you are expecting.
Old files with J1SpinOrbitalSoA in the name reappear. Could you just squash all the commits? The current commits are not clean and will be difficult to continue being rebased. |
Yeah oops sorry about that. The rebase was getting complicated |
Start testing in-house |
Test this please |
Test this please |
Proposed changes
This adds (re-adds) spin dependent one-body Jastrow factors. This builds upon #3243 #3256 (This will need to be rebased after those go in so no need to look at until those are addressed.).
Closes #3138.
What type(s) of changes does this code introduce?
Does this introduce a breaking change?
What systems has this change been tested on?
Ryzen Workstation
Checklist