Sa raportez sau nu niste buguri pe GitHub?

Ma gandesc sa mai implementez un proiect open source, tema aleasa e ‘Variational Quantum Monte Carlo’. Inainte sa ma apuc de proiect, m-am apucat sa fac un refresh la teorie si sa implementez ceva cod ‘de jucarie’ intre timp. Bineinteles, principalele surse sunt carti, dar exista si cursuri ‘la liber’ pe net si nu m-am putut abtine sa nu arunc o privire :slight_smile:

Unul care e cunoscut pe fizica computationala, are chiar o carte pe Quantum Monte Carlo (pe fizica nucleara) e autorul la asta: http://compphysics.github.io/ComputationalPhysics2/doc/pub/vmc/html/vmc-bs.html (are si un curs pdf in repository, am preferat sa pun link-ul asta pentru ca are expus mai mult cod aici).

Problema este ca m-am uitat peste formule si cod si nu m-am putut abtine sa nu observ cateva bug-uri, atat in codul C++ cat si in ala python. Ma gandesc ca poate greselile sunt introduse deliberat, pentru a vedea care studenti se prind si care nu. Dar poate nu…

Voi ce-ati face, ati raporta erorile? Am mai raportat de-astea prin alte parti dar acolo era foarte clar ca bug-urile sunt neintentionate, aici nu mi-e clar.

Ma mai gandesc pana maine, dar m-ar interesa si alte opinii.

1 Like

Pai oricine poate gresi.
Go ahead!

3 Likes

Da, dar daca e intentionat, s-ar putea sa-l faultez. Adica pot sa vada si studentii bug reporting-ul :slight_smile:

Deja ma simt un pic vinovat ca i-am mai raportat ca a pus o carte in format pdf la liber pe-acolo si cam calca niste copyright… a scos-o, dar nu cred ca i-a picat bine. Pe de alta parte, era necinstit fata de autorul cartii, care a muncit ceva la ea (si e o carte foarte buna).

Da-i mail, ii zici care e problema, ii trimiti un patch si adresezi complet problema: in primul rand nu ramai doar tu cu observatiile tale si poate il ajuti, in al doilea rand nu intervii intre el si studentii lui.

1 Like

Cu e-mail-ul am sanse bune sa intru la ‘spam’, fie direct fie pentru ca vede un e-mail necunoscut.

Plus ca e si lene din partea mea, la partea cu patch-ul :slight_smile:

Intenționat-neintenționat, sunt buguri. Eu nu m-aș gândi de 2 ori.

1 Like

Las o noapte sa treaca, pentru ca nu e nici o graba, dar probabil ca asta e optiunea. Daca nu-i convine, n-are decat sa inchida bugurile, nu prea multi se uita la bug-uri inchise :slight_smile:

Pana la urma m-am decis sa raportez:

O sa vad ce zice.

1 Like

poate e o idee si sa ii deschizi pull req cu fixurile

1 Like

Nu cred, pentru ca are si alte probleme pe acolo, si daca ma apuc, le rezolv pe toate :slight_smile:

Plus ca de exemplu codul in c++ foloseste armadillo, eu folosesc eigen. Nu prea vreau sa instalez armadillo doar pentru asta.

priceput, makes sense
ma depaseste codul, ca prima lectura, nu imi dau seama de calitatea prezenta. are premise sa ruleze rapid?

E doar un exemplu de implementare. Normal ca o implementare serioasa nu se face in python.
Nici functia de unda ‘trial’ nu ramane o exponentiala simpla.

Chiar in partea de dupa ultima portiune de cod prezentata (paragrafele cu ‘Efficient calculation’, etc) , prezinta niste metode de optimizare ale calculelor.

Vreau sa implementez un program pe tema aia, de-aia ma uit peste cursurile lui. Deocamdata ma joc cu ceva simplu, cam ca si in cursuri (sau carti), pentru atomul de Heliu, dar poate o sa fac ceva general in final, cu determinanti Slater si factor Jastrow, cu optimizari de-alea.

Nu m-am luat dupa el cand am implementat programul (partea de cod, adica, teoria e la fel, normal). Testul Metropolis la mine arata asa:

// Metropolis test 
const Vector3D<double> difR = newParticles[p] - oldParticles[p]; 
const Vector3D<double> RoldRnew = difR - /*0.5 **/ dt * oldF; 
const Vector3D<double> RnewRold = -difR - /*0.5 **/ dt * newF; 
const double ratio = newWF * newWF / (oldWF * oldWF) * exp((RoldRnew * RoldRnew - RnewRold * RnewRold) / (2. * dt)); 
if (ratio >= 1 || random.getZeroOne() <= ratio)
{
     // accept, etc...     
}

Nu seamana cu ce are el prin cod. Poate ca a incercat ceva simplificari la calcule pe-acolo, dar arata dubios. Chiar n-am chef sa-i verific aritmetica peste tot :slight_smile:

PS Codul de mai sus duce la rezultate corecte.

1 Like