From 9d6502d88be0729d72068c775546fc0dfc3a5424 Mon Sep 17 00:00:00 2001 From: Michele Casula Date: Thu, 22 Feb 2024 12:48:10 +0100 Subject: [PATCH] adding DMC Tmoves test --- test/CMakeLists.txt | 5 +- test/test_dmc_tmoves/CMakeLists.txt | 26 +++ test/test_dmc_tmoves/REFERENCE_fortXXI | 10 + test/test_dmc_tmoves/cm.test.sh | 57 ++++++ test/test_dmc_tmoves/datasfn.d | 20 ++ test/test_dmc_tmoves/fort.10 | 213 +++++++++++++++++++++ test/test_dmc_tmoves/out_true.o | 252 +++++++++++++++++++++++++ test/test_dmc_tmoves/pseudo.dat | 22 +++ 8 files changed, 604 insertions(+), 1 deletion(-) create mode 100644 test/test_dmc_tmoves/CMakeLists.txt create mode 100644 test/test_dmc_tmoves/REFERENCE_fortXXI create mode 100755 test/test_dmc_tmoves/cm.test.sh create mode 100755 test/test_dmc_tmoves/datasfn.d create mode 100755 test/test_dmc_tmoves/fort.10 create mode 100644 test/test_dmc_tmoves/out_true.o create mode 100755 test/test_dmc_tmoves/pseudo.dat diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 610300b..1ec22b4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -195,7 +195,10 @@ if(EXT_TOOLS AND EXT_QMC) add_subdirectory(test_lrdmc_dltm) add_subdirectory(test_lrdmc_la) add_subdirectory(test_lrdmc_tmove) - + + #DMC-Tmoves + add_subdirectory(test_dmc_tmoves) + # MD add_subdirectory(test_MD_classical_vmc) add_subdirectory(test_MD_quantum_vmc) diff --git a/test/test_dmc_tmoves/CMakeLists.txt b/test/test_dmc_tmoves/CMakeLists.txt new file mode 100644 index 0000000..af76bba --- /dev/null +++ b/test/test_dmc_tmoves/CMakeLists.txt @@ -0,0 +1,26 @@ +get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} NAME) + +foreach( EXECUTABLE IN LISTS EXECUTABLES_S_L + EXECUTABLES_P_L ) + if( ${EXECUTABLE} MATCHES turborvb-.*) + if( ${EXECUTABLE} MATCHES ".*-serial" ) + set( PREFIX "" ) + add_test_dependency_tree( + NAME "Test DMC Tmoves run (${EXECUTABLE})" + COMMAND ${BASH_EXECUTABLE} cm.test.sh $ $ NA serial.out out_true.o REFERENCE_fortXXI 6 ${PREFIX} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDENCY_TREE ${PARENT_DIR} + ) + endif() +# if( ${EXECUTABLE} MATCHES ".*-mpi" ) +# set( PREFIX "mpirun -np 2" ) +# add_test_dependency_tree( +# NAME "Test LRDMC run (${EXECUTABLE})" +# COMMAND ${BASH_EXECUTABLE} cm.test1.sh $ $ NA mpi_np2.out out_true_mpi_np2.o REFERENCE_fortXXI_mpi_np2 6 "${PREFIX}" +# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +# DEPENDENCY_TREE ${PARENT_DIR} +# ) +# endif() + endif() + +endforeach() diff --git a/test/test_dmc_tmoves/REFERENCE_fortXXI b/test/test_dmc_tmoves/REFERENCE_fortXXI new file mode 100644 index 0000000..1451647 --- /dev/null +++ b/test/test_dmc_tmoves/REFERENCE_fortXXI @@ -0,0 +1,10 @@ + -0.621267594198E+01 0.400985403844E+01 0.100000000000E+01 + -0.612361718212E+01 0.401108594707E+01 0.200000000000E+01 + -0.597148528109E+01 0.400897979256E+01 0.300000000000E+01 + -0.589877347678E+01 0.400732737251E+01 0.400000000000E+01 + -0.580321289213E+01 0.400595045346E+01 0.500000000000E+01 + -0.580012564823E+01 0.400649346246E+01 0.600000000000E+01 + -0.567099157340E+01 0.400374165481E+01 0.700000000000E+01 + -0.559008276135E+01 0.400248428156E+01 0.800000000000E+01 + -0.552517362808E+01 0.400226947011E+01 0.900000000000E+01 + -0.543683279574E+01 0.400032969798E+01 0.100000000000E+02 diff --git a/test/test_dmc_tmoves/cm.test.sh b/test/test_dmc_tmoves/cm.test.sh new file mode 100755 index 0000000..8f95313 --- /dev/null +++ b/test/test_dmc_tmoves/cm.test.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +if [[ $# -gt 0 ]]; then + TURBORVB=$1 + READF=$2 + FORCEFN=$3 + OUT=$4 + TRUEOUT=$5 + REF_FORT21=$6 + ROUND_OFF=$7 + if [[ $# -gt 7 ]]; then + PREFIX=$8 + else + PREFIX="" + fi +else + source ../settings.sh +fi + +if [ ! -f "$TURBORVB" ]; then + echo "Executable $TURBORVB does not exists" + exit 1 +fi + +echo " DMC with Tmoves after single particle diffusion TEST " +echo " dir=test_dmc_tmoves" +$PREFIX $TURBORVB < datasfn.d > $OUT +[ $? -eq 0 ] && echo " Run without non-zero exit code" || exit 1 + +echo " Calculate local energies:'0 1 1 1' | readf.x" +echo "0 1 1 1" | $READF >& /dev/null + +if [ $(grep -c ERR $OUT) -gt 0 ]; then + echo " Errors in output:" + grep ERR $OUT + exit 1 +fi + +#check energies +echo " Rounds off values in fort.21 < 10**-${ROUND_OFF}". +cat fort.21 | awk -v ROUND_OFF=${ROUND_OFF} '{printf("%.*f %.*f %.*f\n", ROUND_OFF, $1, ROUND_OFF, $2, ROUND_OFF, $3)}' > fort.21_roundoff +cat ${REF_FORT21} | awk -v ROUND_OFF=${ROUND_OFF} '{printf("%.*f %.*f %.*f\n", ROUND_OFF, $1, ROUND_OFF, $2, ROUND_OFF, $3)}' > REFERENCE_fortXXI_roundoff + +#diff fort.21 +echo " Compares fort.21_roundoff and REFERENCE_fortXXI_roundoff." +echo " If you do not see any "diff" here, they are consistent." + +if [ $(diff fort.21_roundoff REFERENCE_fortXXI_roundoff | wc -l) -gt 0 ]; then + diff fort.21_roundoff REFERENCE_fortXXI_roundoff + exit 1 +elif [ $FORCEFN == NA ]; then + exit 0 +else + exit 0 +fi + diff --git a/test/test_dmc_tmoves/datasfn.d b/test/test_dmc_tmoves/datasfn.d new file mode 100755 index 0000000..b4585bb --- /dev/null +++ b/test/test_dmc_tmoves/datasfn.d @@ -0,0 +1,20 @@ +&simulation +itestr4=-3 ! LRDMC option +ngen=10 ! Number of branching +nscra=5 !Recomputing by scratch determinant each nscra accepted moves +nw=64 ! Number of walkers +iseedr=536473883 ! Initial random number +/ +&pseudo +nintpsa=6 ! 6 points integration pseudo +npsamax=1 ! Max number of atoms closer than 2 rc (pseudo core radius). +/ +&dmclrdmc +tbra=0.01d0 ! DMC time between consecutive branching +etry=-5.42d0 ! Guess of the energy +/ +&readio +wherescratch='old' +/ +¶meters +/ diff --git a/test/test_dmc_tmoves/fort.10 b/test/test_dmc_tmoves/fort.10 new file mode 100755 index 0000000..cacacb3 --- /dev/null +++ b/test/test_dmc_tmoves/fort.10 @@ -0,0 +1,213 @@ + # Nelup #Nel # Ion + 3 4 1 + # Shell Det. # Shell Jas. + 11 0 + # Jas 2body # Det # 3 body atomic par. + -6 11 0 + # Det mat. =/0 # Jas mat. =/0 + 75 0 + # Eq. Det atomic par. # Eq. 3 body atomic. par. + 11 0 + # unconstrained iesfree,iessw,ieskinr,I/O flag + 0 36 0 0 + # Ion coordinates + 4.00000000000000 6.00000000000000 0.000000000000000E+000 + 0.000000000000000E+000 0.000000000000000E+000 + # Constraints for forces: ion - coordinate + # Parameters Jastrow two body + 1 0.623718363833333 + # Parameters atomic wf + 1 1 16 + 1 3.95109750985687 + 1 1 16 + 1 0.317287559012332 + 1 1 16 + 1 0.120123149130549 + 1 1 16 + 1 0.752167665135425 + 1 1 16 + 1 4.83420846941310 + 3 1 36 + 1 0.807069454551756 + 3 1 36 + 1 0.104770860679397 + 3 1 36 + 1 0.304405567375243 + 3 1 36 + 1 6.75805433169480 + 3 1 36 + 1 2.19065750387804 + 5 1 37 + 1 1.79837034279688 + # Parameters atomic Jastrow wf + # Occupation atomic orbitals + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + # Occupation atomic orbitals Jastrow + # Nonzero values of detmat + 1 2 -2.62885781587197 + 1 3 -0.821146377707990 + 1 4 -1.50786778822164 + 1 5 -0.237931839627528 + 2 2 3.09284431122107 + 2 3 1.18849124768215 + 2 4 2.55951504738581 + 2 5 1.60754696069172 + 3 3 0.210657121320606 + 3 4 0.960890370363254 + 3 5 0.463684994087173 + 4 4 2.10949642638303 + 4 5 0.738953573761255 + 5 5 -0.203938995681163 + 6 6 -0.236919860401304 + 7 7 -0.236919860401304 + 8 8 -0.236919860401304 + 6 9 -1.411203953701510E-002 + 7 10 -1.411203953701510E-002 + 8 11 -1.411203953701510E-002 + 6 12 -0.181997044876954 + 7 13 -0.181997044876954 + 8 14 -0.181997044876954 + 6 15 -7.222887494010630E-002 + 7 16 -7.222887494010630E-002 + 8 17 -7.222887494010630E-002 + 6 18 -0.217791918757999 + 7 19 -0.217791918757999 + 8 20 -0.217791918757999 + 9 9 -1.417937271712770E-002 + 10 10 -1.417937271712770E-002 + 11 11 -1.417937271712770E-002 + 9 12 -2.092622949980960E-002 + 10 13 -2.092622949980960E-002 + 11 14 -2.092622949980960E-002 + 9 15 -2.944096746454070E-003 + 10 16 -2.944096746454070E-003 + 11 17 -2.944096746454070E-003 + 9 18 -1.020341638229640E-002 + 10 19 -1.020341638229640E-002 + 11 20 -1.020341638229640E-002 + 12 12 -0.196390578534401 + 13 13 -0.196390578534401 + 14 14 -0.196390578534401 + 12 15 -3.566624126486210E-002 + 13 16 -3.566624126486210E-002 + 14 17 -3.566624126486210E-002 + 12 18 -0.123611496967959 + 13 19 -0.123611496967959 + 14 20 -0.123611496967959 + 15 15 -5.310194074550770E-003 + 16 16 -5.310194074550770E-003 + 17 17 -5.310194074550770E-003 + 15 18 -4.178293845346270E-002 + 16 19 -4.178293845346270E-002 + 17 20 -4.178293845346270E-002 + 18 18 -8.714058690479320E-002 + 19 19 -8.714058690479320E-002 + 20 20 -8.714058690479320E-002 + 21 21 -2.659423776505300E-002 + 22 22 -2.659423776505300E-002 + 23 23 -2.659423776505300E-002 + 24 24 -2.659423776505300E-002 + 25 25 -2.659423776505300E-002 + 9 26 0.384058924470031 + 10 27 0.384058924470031 + 12 26 0.948790250834314 + 13 27 0.948790250834314 + 15 26 0.155278687263796 + 16 27 0.155278687263796 + 18 26 0.523372098581465 + 19 27 0.523372098581465 + 1 1 1.00000000000000 + 6 26 1.00000000000000 + 7 27 1.00000000000000 + # Grouped par. in the chosen ordered basis + 1 1 2 + 1 1 3 + 1 1 4 + 1 1 5 + 1 2 2 + 1 2 3 + 1 2 4 + 1 2 5 + 1 3 3 + 1 3 4 + 1 3 5 + 1 4 4 + 1 4 5 + 1 5 5 + 3 6 6 7 7 8 + 8 + 3 6 9 7 10 8 + 11 + 3 6 12 7 13 8 + 14 + 3 6 15 7 16 8 + 17 + 3 6 18 7 19 8 + 20 + 3 9 9 10 10 11 + 11 + 3 9 12 10 13 11 + 14 + 3 9 15 10 16 11 + 17 + 3 9 18 10 19 11 + 20 + 3 12 12 13 13 14 + 14 + 3 12 15 13 16 14 + 17 + 3 12 18 13 19 14 + 20 + 3 15 15 16 16 17 + 17 + 3 15 18 16 19 17 + 20 + 3 18 18 19 19 20 + 20 + 5 21 21 22 22 23 + 23 24 24 25 25 + 2 9 26 10 27 + 2 12 26 13 27 + 2 15 26 16 27 + 2 18 26 19 27 + -1 1 1 + -2 6 26 7 27 + # Nonzero values of jasmat + # Eq. par. in the 3-body Jastrow in the chosen basis + # Eq. par. in the atomic Det par. in the chosen basis + 1 1 + 1 2 + 1 3 + 1 4 + 1 5 + 1 6 + 1 7 + 1 8 + 1 9 + 1 10 + 1 11 + # Eq. par. in the atomic 3-body par. in the chosen basis diff --git a/test/test_dmc_tmoves/out_true.o b/test/test_dmc_tmoves/out_true.o new file mode 100644 index 0000000..2cb3afc --- /dev/null +++ b/test/test_dmc_tmoves/out_true.o @@ -0,0 +1,252 @@ + ---------------------------------------------------------------------------- + TurboRVB version 1.0.0 git rev. 4542561 + + Ab-initio Quantum Monte Carlo Package + + Developer: Sandro Sorella + Website: https://turborvb.sissa.it + GitHub: https://github.com/sissaschool/turborvb + Project PIs: Michele Casula and Kosuke Nakano + Contacts: michele.casula@gmail.com and kousuke_1123@icloud.com + + When you publish a paper using TurboRVB, please cite the following paper. + + TurboRVB: a many-body toolkit for ab initio electronic simulations, + K. Nakano*, C. Attaccalite, M. Barborini, L. Capriotti, M. Casula*, + E. Coccia, M. Dagrada, Y. Luo, G. Mazzola, A. Zen, and S. Sorella*, + J. Chem. Phys. 152, 204121 (2020), doi:10.1063/5.0005037 + + ---------------------------------------------------------------------------- + Number of threads/mpi proc = 1 + Initial path : /ccc/scratch/cont005/gen6493/casulam/qmc/carbon + After reading simulation + Default maxtime (s)= 86000.000000000000 + Warning the program will stop after <~24h, otherwise change maxtime in simulation section + Default value of pseudorandom = T + After reading pseudo + Pseudopotential file name : pseudo.dat + After reading dmclrdmc + Default value of parcutg= 0 + after dmc + Default value of parcut = 1.1102230246251565E-014 + Default value of epsdgel = 1.0000000000000000E-003 + Default value of nweight for forces nweight X -1 + Default value for tolcg = 9.9999999999999995E-007 + Default value for minzj = -1000.0000000000000 + Default value of minimum one-two body Jastrow = 5.0000000000000003E-002 + After reading readio + Default value of iread 0 + Default value of epsbas = 1.0000000000000000E-008 + After reading parameters + Default value of add_pulay = 2 + Default value for ieser= 1 + Default value for isfix= 1 + Basis set cutoff chosen: 1.0000000000000000E-008 + after parameters + Parameters: iesinv,iesm,iesd,iesfree,iessw,iesup,ieskin + Parameters before read 0 0 0 0 0 0 0 + Reading the begin in fast. . . . + Reading zeta and rion in fast . . . . + Reading ieskin in fast. . . . + Reading 2-body jastrow in fast . . . . + Reading det shells in fast. . . . + Reading jas shells in fast. . . . + Reading det occupation in fast. . . . 25 + Reading jas occupation in fast. . . . 0 + Reading det nnozero in fast. . . . + Reading det nnozero symmetries in fast.... + Reading jas nnozero in fast.... + Reading jas nnozero symmetries in fast.... + Reading Z-det symmetries in fast.... + Reading Z-jas symmetries in fast.... + Warning DMC cutoff on local energy (Ry)= 360.00000000000000 + Read value of epscuttype= 0 + Read value of epscut= 0.0000000000000000 + Default value of tstep= 0.0000000000000000 + Read value for nintpsa 6 + Parameters after read 1 0 0 0 0 0 0 0 + Read value for nscra 5 + Default value for nbra 4 + kl read = -7 + before dynamic + Warning srcomplex turned to false (real case) + + tparf = 0.34999999999999998 + itestrfn = -3 + Scratch extension ./scratch + iese_eff= 1 + ############################################# + EFFECTIVE CORE POTENTIAL CALCULATION + ############################################# + DMC FIXED NODE WITH OFF DIAGONAL PSEUDO + heat bath after single electron diffusion + ************ nintpseudo read 6 + ------ parameters for pseudopotentials ------- + Max angular momentum pseudo 2 + # of quadrature points in the projector 6 + # of pseudo atoms 1 + # of gaussian for pseudo 19 + ----------------------------------------------- + lattice spacing a1 a2 = 0.0000000000000000 0.0000000000000000 + scratch of determinant each 5 + Standard Fixed node + sub_comm_diag uses 1 processors + Number of corr functions written = 3 + iopt = 1 + initial iseed = 0 1072947767 + initial random number = 5.6263998150825500E-002 + + START reading the wave function fort.10 + + Reading the begin . . . . + Number of different atomic species = 1 + Open Boundary Conditions + Reading ieskin . . . . + Number of moved ionic coordinates 0 + Reading 2-body jastrow . . . . + opposite phase = F + same phase = T + yes_hermite before = F + Reading det shells . . . . + Reading jas shells . . . . + USING UNCONTRACTED JASTROW ORBITALS + Reading det occupation . . . . + Number of total det orbitals 25 + Number of occupied det orbitals 25 + Reading jas occupation . . . . + Number of total Jas orbitals 0 + Number of occupied Jas orbitals 0 + Warning without contracted orbitals yesfast=0, forced + Before allocation standard + nion = 1 + nel = 4 + indt= 7 + npm= 6 + nwm= 64 + nws= 64 + nelorbj= 0 + iscrapip= 1 + iscraipsip= 151 + nelorb= 25 + nelcol= 27 + nelup= 3 + nelorb_c= 25 + nelorbj_c= 0 + nelcol_c= 27 + nshell= 11 + nshellj= 0 + npsamax= 1 + nintpseudo= 6 + Memory required QMC = 8.3553999999999996E-004 Gbyte + Memory winv = 6.1440000000000008E-004 + iscramax for master = 3038 + Reading det nnozero . . . . + Reading det nnozero symmetries .... + Number of non zero geminal lambda for det 75 + Number of non fixed geminal lambda for det 75 + Reading jas nnozero .... + Location constant orbitals in Jastrow + Reading jas nnozero symmetries .... 0 + Number of non zero geminal lambda for Jas 0 + Number of non fixed geminal lambda for Jas 0 + Number of accepted nnozeron Jas Sz 0 + Check repeated in the symmetry table Jastrow + Reading Z-AGP symmetries .... + Touched det zeta par = 11 + Touched Jas zeta par = 0 + Time spent in update_kgrid= 9.2821121215820312E-003 + scale one body = 0.0000000000000000 + + END reading the wave function fort.10 + + Warning TurboRVB needs 3.07999994E-06 Gygabyte RAM per processor + Default chosen yesfast 0 + Warning AGP algorithm update + ********************************************* + ********************************************* + DIFFUSION MONTE CARLO + weights always updated + ********************************************* + ********************************************* + %%%%%%%%%%%%%%% DETERMINANTAL GEMINAL %%%%%%%%%%%%%% + Eigenvalues matrix lambda 0 0 + 1 -1.3950329220157212 + 2 -0.55103163795441645 + 3 -0.55103163795441634 + 4 -0.55103163795441601 + 5 -0.21915411082999545 + 6 -5.8567108626897388E-002 + 7 -5.8567108626897339E-002 + 8 -5.8567108626897235E-002 + 9 -2.6594237765053000E-002 + 10 -2.6594237765053000E-002 + 11 -2.6594237765053000E-002 + 12 -2.6594237765053000E-002 + 13 -2.6594237765053000E-002 + 14 -1.1427292793527841E-002 + 15 -1.1427292793527799E-002 + 16 -1.1427292793527796E-002 + 17 -4.3204295497314823E-003 + 18 1.1554747975405334E-002 + 19 1.1554747975405366E-002 + 20 1.1554747975405451E-002 + 21 6.9530698767259244E-002 + 22 6.9530698767259272E-002 + 23 6.9530698767259300E-002 + 24 0.25541088993695304 + 25 7.5721554357020420 + RVB is starting !!! 25 + Passi qui II real-eff + Passi qui IV eff-real + %%%%%%%%%%%%%%%%%% 2 BODY JASTROW %%%%%%%%%%%%%%%% + Number 2 body Jastrow parameters 1 + 1 0.62371836383333301 + initial costz, costz3, zeta_Q_Caffarel + 1 0.0000000000000000 0.0000000000000000 0.0000000000000000 + Total independent parameters in Jastrow sector 0 + + nwfix given = 64 128 + Number of parameters in SR = 2 + Hartree Atomic Units + **************************************** + ****** INITIALIZATION ****************** + zeta, up and down 1 4.0000000000000000 3 1 + lambda chosen = 10.840000000000000 + nmol_ip nelorbh_ip used = 25 25 + firstmol nmolfn after all 1 25 + Size arrays 1 1 1 675 1 25 25 1 3038 9 300 12 76800 3072 326 1 576 9600 320 70400 9600 25 75 + Initialization OK + 0 % progress starts! + 1 steps, 10 % done in 0.08 sec + 2 steps, 20 % done in 0.00 sec + 3 steps, 30 % done in 0.00 sec + 4 steps, 40 % done in 0.00 sec + 5 steps, 50 % done in 0.00 sec + 6 steps, 60 % done in 0.00 sec + 7 steps, 70 % done in 0.00 sec + 8 steps, 80 % done in 0.00 sec + 9 steps, 90 % done in 0.00 sec + 10 steps, 100 % done in 0.00 sec + Before finalizeall + Length record unit 12 = 0 + All files written correctly ... + ##### TurboRVB profiling (sec.) ##### + Time initialization = 8.5752010345458984E-002 + Total time with no initialization = 0.11783409118652344 + Total time with no measures 4.5603990554809570E-002 + Time measures = 8.5749149322509766E-002 + Time main = 6.9141387939453125E-006 + Time branching = 7.1178197860717773E-002 + Tracing the qmc update move + Time ratiovar= 2.1326541900634766E-003 + Time uptabtot= 1.9398212432861328E-002 + Tracing the main routines + Time uptabpip in uptabtot= 4.5182704925537109E-003 + Time upnewwf in ratiovar/uptabtot= 5.2664279937744141E-003 + Time upscratch = 4.6814441680908203E-002 + accept. rate off diagonal moves = 3.9652777777777777 + Average time for 1000 generations 11.783409118652344 + # pseudo off diag moves per generation per walker = 9.3749999999999997E-003 + Av. num. of survived walkers/ # walkers in the branching 1.0000000000000000 + Average log det = -1.0380051383173750 +/- 0.98529180973087327 + Average time x branching = 0.0000000000000000 diff --git a/test/test_dmc_tmoves/pseudo.dat b/test/test_dmc_tmoves/pseudo.dat new file mode 100755 index 0000000..a77187e --- /dev/null +++ b/test/test_dmc_tmoves/pseudo.dat @@ -0,0 +1,22 @@ +ECP +1 1.5 2 +10 9 + 8.2820321412 2 40.6104425128 + 6.7217297892 2 2.9903018334 + -67.5432492766 2 3.9957225677 + 230.7410564803 2 5.3391930739 + -272.7496604760 2 7.1343748715 + 111.3332936113 2 9.5331455713 + 164.7044650781 2 12.7384481642 + -278.0136967032 2 17.0214605890 + 181.1210121343 2 22.7445381768 + -59.4136649301 2 30.3918699673 + 4.0000000000 1 15.5389739917 + 62.1558959668 3 6.8225019790 + -2.8283303140 2 58.1320076477 + -34.8006830300 2 6.1924194263 + 17.4038013522 2 8.9939994637 + -33.7461315045 2 13.0630728935 + 61.4757906716 2 18.9730802308 + -44.2288070384 2 27.5568984711 + 15.9531124923 2 40.0242155784