-------------------------------------------------- #### ### ## #### # # The CASINO # # # # # # # # # # # # # # # # ### # # # ###### #### # # # # # # # # # #### ### # # # # ### Summary of changes to CASINO from September 1999 -------------------------------------------------- List of changes for v2.12 series -------------------------------- Released as CASINO v2.12.1 (7/3/2013). ---[v2.13.5]--- * The BINARY_ARGS tag introduced in 2.11.316 should have been included in every arch file that defines a CASINO run command, but because of advancing senility I forgot to do so. The practical upshot of this is that the runpwscf script will not work properly on some defined machines. This problem has now been rectified. -- Mike Towler, 2013-03-07 ---[v2.13.4]--- * The -i/--inquire of runqmc and runpwscf could be unnecessarily blocked on some machines by the user not providing e.g. the number of cores on the command line. Fixed. -- Mike Towler, 2013-03-07 ---[v2.13.3]--- * Various error traps in bwfdet_setup used errstop_master, even though bwfdet_setup may be called either by all cores or by the master only. This could lead to the code hanging if any of these error conditions was tripped during a master-only call. Fixed. -- Mike Towler, 2013-03-07 Released as CASINO v2.12 (5/3/2013). ---[v2.11.333]--- * Final changes of version numbers, documentation etc. for 2.12 release. -- Mike Towler, 2013-03-05 ---[v2.11.332]--- * Added arch file for the Juqueen Blue Gene/Q at Juelich (currently fastest computer in Europe). New CASINO_ARCH: bluegene-xlf-ll-parallel.juqueen2 -- Mike Towler, 2013-03-05 ---[v2.11.331]--- * Rewrote the build-tools/update-version utility so that it will reconstruct the non-existent DIARY file in the git distribution for stable release versions (i.e. even numbered versions 2.10, 2.12..). Previously it would only do this for odd-numbered development versions (2.9, 2.11..). The reconstruction is done by simply concatenating the various DIARY_vx.xx files in doc/changelogs. -- Mike Towler, 2013-03-05 ---[v2.11.330]--- * Fixed a couple of typos in slater.f90 where 'tol_log_softzero' and 'tol_log_hardzero' were used instead of real(log_softzero,dp) and real(log_hardzero,dp). This could lead to spurious FPE errors such as the 'floating-point exception reported when calculating old drift vector' error supposedly fixed in v2.11.328. That was not the correct fix - this is. Discussion with PLR acknowledged. -- Mike Towler, 2013-03-05 ---[v2.11.329]--- * Fixed incorrect value for L_u cutoff in the correlation.data file for examples/crystal/gaussians/nio/444 (it was greater than the Wigner-Seitz radius, which is not allowed). It now has the default value flagged by 0.d0 in agreement with the correlation.data file in the nio/333 case. -- Mike Towler, 2013-03-03 ---[v2.11.328]--- * Adjusted soft zero tolerances in the slater.f90 FPE handler, to avoid a very occasional problem that manifests as 'floating-point exception reported when calculating old drift vector'. [BUT SEE v2.11.330, MDT.] -- Mike Towler, 2013-03-03 ---[v2.11.327]--- * Updated changes lists in module headers. -- Mike Towler, 2013-03-03 ---[v2.11.326]--- * The block of allocation statements for ao_m, alap_m, agra1_m etc. in gaussians.f90 was surrounded by a commented-out 'if(isperiodic)then' statement and the preceding comment 'FIXME - why are the lines below commented out?'. I have FIXed it by inserting the correct if statement, to the effect that they do not need to be allocated in the periodic case unless cusp correction is turned on. -- Mike Towler, 2013-03-01 ---[v2.11.325]--- * Removed doc/MACHINES file, as it's very difficult to keep this up to date. -- Mike Towler, 2013-03-01 ---[v2.11.324]--- * Added a new [r] option to the install script, which will restore the CASINO distribution to its original state for compilation purposes (by deleting bin_qmc, lib/zlib, src/zlib, utils/zlib). Updated documentation to reflect this. -- Mike Towler, 2013-03-01 ---[v2.11.323]--- * Fixed typo in src/Makefile which led to the 'make shm/debug' alternative to 'make Shm/debug' not working. Also fixed a missing dependency in the Makefile. -- Mike Towler, 2013-03-01 ---[v2.11.322]--- * Partial implementation of shared memory for Gaussian basis calculations (i.e. the full vector of orbital coefficients ck). On a machine like Hector with 32 cores per node, this should more than halve the total memory requirements. -- Mike Towler, 2013-03-01 A full implementation would also use shared memory for the smaller rck and cck vectors, but this is not currently possible without rewriting the CASINO Gaussian matrix multipliers such as multi_ddot_s, mxmb, ddot etc.. (reason: rck and cck must be turned into pointers for shm, but the Fortran standard will not accept the first element of a vector pointer being passed into a subroutine where the corresponding dummy argument is declared as an assumed-size array). As we're currently only supposed to be reviewing release candidate 1 rather than implementing new features, this will be done at a later date. ---[v2.11.321]--- * Tidying: removed unused variables, as suggested by g95. -- Neil Drummond, 2013-02-27 ---[v2.11.320]--- * Introduced new 'errwarn_silent' routine in run_control.f90 which behaves exactly like 'errwarn' apart from a minor difference in the format of the output string. This allows autotest to ignore selected irrelevant warnings which clutter up its output. Also modified ve utility to be aware of this, so that it correctly complains about both types of warning. -- Mike Towler, 2013-02-26 ---[v2.11.319]--- * Added new '--autotest' flag to runqmc so that it knows when it is being run by the autotest script and can modify its output accordingly. -- Mike Towler, 2013-02-26 ---[v2.11.318]--- * Various improvements to the runpwscf script. -- Mike Towler, 2013-02-26 (1) Better handling of the binary arguments (through the recently introduced BINARY_ARGS tag). This was previously done through a hack that didn't work on Blue Gene/Qs (thus runpwscf now works on Hartree). (2) runpwscf now works on machines which require 'staging' of the input and output files (see patch 2.11.169) such as the K computer. (3) The --inquire / -i functionality had got broken. Fixed. (4) Fixed some spellings and ugly formatting. ---[v2.11.317]--- * Updated the format of the Blue Gene/Q runjob command in bluegene-xlf-ll-parallel.bluejoule.arch so that it will accept the new BINARY_ARGS tag. -- Mike Towler, 2013-02-25 ---[v2.11.316]--- * Added new arch tag 'BINARY_ARGS' which allows one to specify a list of command line arguments to be used with the binary executable. Of course CASINO does not require such arguments, but other codes which make use of the CASINO architecture system do (e.g. to run PWSCF, one might write 'pw.x -pw2casino -npool 4 < in.pwscf >> out.pwscf') where everything after the pw.x counts as a command line argument. New tag defined and documented in arch/taglib.sh, arch/README, data/syntax/vim/arch.vim, and the manual. -- Mike Towler, 2013-02-25 ---[v2.11.315]--- * The qmc_barrier routine included a call to mpi_iprobe(mpi_any_source..) to check for non-empty MPI queues. This is effectively a debugging operation which is unnecessary if the code is correct, and I have therefore restricted its use to 128 cores or less since it is unlikely to scale well up to a million cores. -- Mike Towler, 2013-02-24 ---[v2.11.314]--- * Added to the FAQ (Question D1) my magical incantation for compiling PWSCF/Quantum Espresso on the Hartree Centre Blue Gene/Q 'bluejoule'. -- Mike Towler, 2013-02-23 ---[v2.11.313]--- * Added support for CentOS Linux to the install script (following suggestion by PLR). -- Mike Towler, 2013-02-22 ---[v2.11.312]--- * Someone had carefully deleted the line 'deallocate(ck)' in gaussians.f90 thus ensuring that the post-setup memory requirements of Gaussian calculations were doubled (patch 2.2.4?). Fixed. -- Mike Towler, 2013-02-22 ---[v2.11.311]--- * Fixed error in bwfdet.f90 which could lead to weird MPI_BCAST errors, and which occurs only when reading formatted bwfn.data files. For small enough files, the master could create the binary bwfn.data.bin from the formatted file before some slave cores had actually inquired whether or not the binary file existed. Having come to believe that it always had existed, these slaves called 'read_binary' whereas the master and some of the other slaves called 'read_formatted'. The resulting mismatch of mpi_bcast calls then led to an mpi_truncation error. Fixed with a suitable mpi_barrier call. -- Mike Towler, 2013-02-22 ---[v2.11.310]--- * NDD's 2.11.307 introduced a new error condition objecting to too many parameters supplied in sets in correlation.data. This was (harmlessly) true for one of the examples; I've now deleted the extra parameters so that it runs. -- Mike Towler, 2013-02-22 ---[v2.11.309]--- * Having just realized that the Nag Fortran compiler doesn't support Cray pointers, I have added SUPPORT_SHM = no to relevant arch files that reference nagfor, i.e. this compiler does not support CASINO's shared memory implementation. -- Mike Towler, 2013-02-22 ---[v2.11.308]--- * Very minor modification of crysgen output. -- Mike Towler, 2013-02-20 * Modified CASINO so that it will halt with an error if too many parameters are supplied in sets in correlation.data. By far the most common reason for having too many parameters is that the user has made a mistake. (In response to a problem encountered by a student at the JAIST winter school.) -- Neil Drummond, 2013-02-20 Tidying of manual. ---[v2.11.306]--- * The behaviour of the crysgen06 and crysgen09 tools -- used for converting the output of CRYSTAL06/09 into gwfn.data format -- has been improved for the case that they are run manually. -- Mike Towler, 2013-02-20 Normally these tools are run automatically by the runcrystal script supplied with CASINO, but runcrystal does not (yet) work on batch machines using the MPP version of CRYSTAL (and most CRYSTAL users will habitually use the Torino supplied scripts anyway) - hence the need to improve the manual behaviour. The crysgen0x tools read a list of required supercell sizes from a runcrystal-generated crysgen.dat file. The crysgen.dat file was read by crysgen0x from standard input, and was only relevant for the case of periodic systems. The following improvements have been made: (1) The crysgen.dat file is no longer read from standard input, but from a named file whose existence is tested for. This will prevent people waiting a very long time if they just type 'crysgen09' rather than 'crysgen09 < crysgen.dat' (it was not clear from the manual that you had to do this.) (2) If crysgen.dat is not found, crysgen0x will assume it is being run manually and ask for the required supercell sizes on the command line (or not in the case of non-periodic atoms and molecules). (3) The documentation of the manual procedure has been clarified. ---[v2.11.305]--- * Fixed recently introduced bash error in plot_reblock. -- Neil Drummond, 2013-02-18 Below released as v2.12 Release Candidate 1. ---[v2.11.304]--- * Added DIARY file for 2.12 version to doc/changelogs. -- Mike Towler, 2013-02-16 ---[v2.11.303]--- * Updated version numbers etc. in various files in preparation for new release. -- Mike Towler, 2013-02-16 ---[v2.11.302]--- * Changed format string "f2?.??" to "es24.16" in a few cases, e.g., expval.f90 (in a large electron gas the volume written to the expval.data file was "**********"). -- Neil Drummond, 2013-02-13 ---[v2.11.301]--- * Added a comment to the output of reblock stressing that the user must input the required block length, not the reblock transformation number (following reported user confusion). -- Mike Towler, 2013-02-13 ---[v2.11.300]--- * When creating an x_pp.data file from a Gaussian fit, the ancient ptm utility refused to commit to a choice of which angular momentum channel should be the local component, and instead printed a row of question marks in the header without further explanation. This is apt to be confusing, so it now chooses the highest angular momentum component as default and adds a suggestion to 'EDIT THIS'. -- Mike Towler, 2013-02-11 ---[v2.11.299]--- * Various modifications to the auto-continue facility. -- Mike Towler, 2013-02-11 - Users no longer need to manually put runqmc in the background when using --auto-continue, as runqmc will now create a detached process that runs the auto-continuation. As this will be killed on some machines (e.g. hector) if the user logs out, a warning is given to this effect. - Clusters will properly object if the --walltime flag to runqmc is not present. - Rewrote the warning messages about modifying the input file so it is clear what is actually being done. - Fixed clearup so it deletes the output from all stages of an auto-continued calculation. - Object to the staggeringly unlikely presence of both --continue and --auto-continue on command line. ---[v2.11.298]--- * Fixed typo in error message in runqmc. -- Mike Towler, 2013-02-10 ---[v2.11.297]--- * Rewrote plot_reblock utility in bash, and added a check for the existence of the reblock.plot file. -- Mike Towler, 2013-02-07 ---[v2.11.296]--- * Prevented an array out-of-bounds error and tried to make a couple of error messages slightly more helpful in gjastrow.f90. -- Neil Drummond, 2013-02-05 ---[v2.11.295]--- * Removed unused 'barrier out of synchronization' check in parallel.f90/qmc_barrier. Also, both checkmpi and qmc_barrier were incorrectly calling both mpi_abort and mpi_finalize. Fixed. -- Mike Towler, 2013-02-04 ---[v2.11.294]--- * Minor change to error message in runqmc. -- Mike Towler, 2013-02-04 ---[v2.11.293]--- * Minor change to run_control.f90. -- Mike Towler, 2013-02-03 ---[v2.11.292]--- * Ferromagnetic NiO example in examples/crystal/gaussians/nio/ had CRYSTAL input files with incorrect syntax (wrong number of basis functions specified for the Ni basis). Amazingly CRYSTAL in serial or ordinary parallel version does not notice this (though it causes the MPP version to crash). Fixed the input and regenerated the gwfn.data file for the 444 case (and made a new one for the 333 case where it was missing). Added new correlation.data for the 333 case. -- Mike Towler, 2013-02-02 ---[v2.11.291]--- * Fixed problem in reblock utility whereby the error bar on the correlation time could be computed incorrectly (due to a problem with the cutoff in the summation to compute the autocorrelation function). -- Mike Towler, 2013-02-01 ---[v2.11.290]--- * Fixed typo in esdf.f90. -- Mike Towler, 2013-01-31 ---[v2.11.289]--- * Having accidentally set the value of the MAX_CPU_TIME input keyword to be '24h' (i.e. using the 'CASINO format' employed by runqmc), I observed this causes runqmc to crash when it parses the input file. Have now fixed runqmc so it will detect and warn about this, and remind the user to use the 'ESDF format' e.g. 1 day, 24 hr, 1440 min, or 86400 s in the input file. Also updated the keyword definitions of MAX_CPU_TIME and MAX_REAL_TIME in esdf_key and the manual to include this information. -- Mike Towler, 2013-01-31 ---[v2.11.288]--- * Updated utils/simple_modules/run_control.f90 to reflect previous patch. -- Mike Towler, 2013-01-31 ---[v2.11.287]--- * As errstop_master is (or should be) guaranteed to be called by all nodes it is safe for it to use mpi_finalize rather than mpi_abort, hence avoiding all the hideously verbose MPI warnings that are printed when mpi_aborting. -- Mike Towler, 2013-01-31 Also deleted the no-longer-required errstop_quiet routine and all references to it. ---[v2.11.286]--- * Change esdf.f90/esdf_die so that it calls errstop_master instead of errstop_quiet, thus only the master will whine about errors in the input file. -- Mike Towler, 2013-01-31 ---[v2.11.285]--- * The setup_autocontinuation function in runqmc attempts to convert the value of the --walltime flag from CASINO format into seconds, even though this has already been done. Result: runqmc always flags up an error about a missing --walltime flag when attempting to run with --auto-continue on batch machines and refuses to run the calc. Fixed. -- Mike Towler, 2013-01-31 ---[v2.11.284]--- * Fixed twist averaging bug. -- Graham G Spink, 2013-01-30 For HEGs at partial spin polarisations, we need to reoccupy orbitals for each spin separately as we change the twist angle, because the Fermi wave vectors for the spins can be very different. This is now fixed. In some test cases, older results are accurate to about 3 significant figures; other HEGs were unaffected. ---[v2.11.283]--- * Fixed nasty shared-memory bug in bwfdet.f90. There was no barrier to prevent cores proceeding with the QMC calculation before the blip coefficients had been broadcast to the smpmasters when blip coefficients were read from the formatted bwfn.data file. -- Neil Drummond, 2013-01-30 ---[v2.11.282]--- * Made plot_expval issue a warning rather than stop with an error if the spin-density matrix is non-Hermitian. -- Neil Drummond, 2013-01-29 ---[v2.11.281]--- * Fixed typo in esdf_key.f90. -- Mike Towler, 2013-01-27 ---[v2.11.280]--- * Unusual circumstances related to individual cores running out of configs could lead to a DMC segmentation fault. Fixed. -- Mike Towler, 2013-01-26 ---[v2.11.279]--- * Removed some leftover TeX from the README_INSTALL file. -- Mike Towler, 2013-01-24 ---[v2.11.278]--- * Added a set of timing results on Titan to the FAQ, question A3 ('Which Fortran compiler should I use?') -- Mike Towler, 2013-01-24 Runs for H on 50-atom-per-cell graphene slab (MDT 1.2013) on a Cray XK7 (Titan), with CASINO's current standard optimizing compiler flags. VMC Gnu 79.65 seconds -282.890716861446 +/- 0.160222570613 PGF 83.74 seconds -282.895599950580 +/- 0.121131726135 Ifort 84.48 seconds -282.970112923443 +/- 0.128262416613 Cray 87.28 seconds -282.890716855184 +/- 0.160222562116 DMC Gnu 397.20 seconds -284.256578870330 +/- 0.048408651743 Cray 456.63 seconds -284.256578740638 +/- 0.048408642717 Ifort 477.75 seconds -284.252588591933 +/- 0.117686071014 PGF 490.10 seconds -283.915347739145 +/- 0.077180929508 Moral: use the GNU compiler (linuxpc-gcc-pbs-parallel.titan). Note: GNU and Cray answers essentially agree with each other, but Ifort (VMC) and PGF (DMC) are giving significantly different answers. This probably needs to be investigated [NOTE ADDED LATER: the differences are due to me using SP_BLIPS=T i.e. the use of single-precision blip coefficients to save memory]. ---[v2.11.277]--- * Completely rewrote the 'Installation of CASINO' section of the manual (a) to reflect current realities, and (b) to improve the clarity of the description (DA recently suggested he couldn't understand it.). I have also added a de-TeXed version of that section of the manual as a README_INSTALL text file in the CASINO base directory. Justification: many people look for such a thing when trying to install a new code, and often can't be bothered to download, view and search a big PDF file. -- Mike Towler, 2013-01-24 ---[v2.11.276]--- * Following user request, added PLR's documention for the experimental General Jastrow Factor (gjastrow) as the file doc/gjastrow_guide.pdf. Added a reference to this in the manual. -- Mike Towler, 2013-01-23 ---[v2.11.275]--- * Another minor change to arch/data/machine/titan-xk7.arch. -- Mike Towler, 2013-01-23 ---[v2.11.274]--- * Fixed error in detection code written to .bashrc.casino by the install script, which could lead to the default compiler not being the supposedly most preferred compiler defined by the [s] sort option. -- Mike Towler, 2013-01-22 ---[v2.11.273]--- * Fixed typo in arch/data/machine/titan-xk7.arch. -- Mike Towler, 2013-01-22 ---[v2.11.272]--- * Fixed Openmp support on Titan for PGI compiler. -- Mike Towler, 2013-01-22 ---[v2.11.271]--- * Rewrote infinite loop in input_kw_conv utility which was written as 'do i=1,huge(1)' - since the Cray compiler won't accept this. See also patches 2.9.626, 2.9.600, 2.9.259 - how can we get NDD (for it is he) to remember not to do this? ;-) -- Mike Towler, 2013-01-22 ---[v2.11.270]--- * Typo in arch/data/cc/gnu.arch prevented automatic detection of CASINO_ARCHs on many machines because of a problem with gcc C compiler version strings. Fixed. -- Mike Towler, 2013-01-22 ---[v2.11.269]--- * Fixed arch/data/linuxpc-ifort-pbs-parallel.titan.arch so that this CASINO_ARCH can be automatically detected on Titan. -- Mike Towler, 2013-01-22 ---[v2.11.268]--- * Changes to enable CASINO to run on a Raspberry Pi. -- Neil Drummond, 2013-01-21 ---[v2.11.267]--- * Patch 2.11.262 introduced a stray 'write blank line to output' without the required 'if (am_master)' attached to it, resulting in the unnecessary appearance of a mass of .out_node files. Fixed. -- Mike Towler, 2013-01-15 ---[v2.11.266]--- * The possible non-existence of subdirectories specified as command-line arguments to runqmc was not handled correctly. Now it is. -- Mike Towler, 2013-01-14 ---[v2.11.265]--- * Fixed multiple problems similar to that fixed in previous patch (2.11.264), this time in the pjastrow.f90 module. -- Mike Towler, 2013-01-14 ---[v2.11.264]--- * In interactions.f90/ewald_3d, the variable pote is specified in an OpenMP reduction clause, but the IBM compiler refuses to believe that the corresponding line 'pote=pote+sum3-sum2-vc' is actually a reduction operation (and hence it won't parallelize the loop). Luckily it can be conned into thinking so by adding brackets, thus 'pote=pote+(sum3-sum2-vc)' is correctly considered to be a reduction. Fixed. -- Mike Towler, 2013-01-14 ---[v2.11.263]--- * INFORMATION: submitted fix to PWSCF developers: the modern interface to CASINO was developed with molecular dynamics in mind, with the result that PWSCF writes out an xwfn.data after every update of the nuclear positions even during a straightforward geometry relaxation, which is not what is wanted. The interface now distinguishes correctly between MD calcs and structure optimizations. -- Mike Towler, 2013-01-14 Also: note that shared memory is now working again on Blue Joule. No-one knows why (and I did ask). See 2.11.253. ---[v2.11.262]--- * The CASINO out file always claimed that the random number generator was initialized 'from the default seed', whatever the value of the 'random_seed' keyword in input. It now makes clear whether the seed is genuinely the internal default, or if it is derived either from the timer or from an integer value given in input. -- Mike Towler, 2013-01-10 ---[v2.11.261]--- * Fixed typo in previous. -- Mike Towler, 2013-01-10 ---[v2.11.260]--- * Updated opt_crystal utility to work in parallel. -- Mike Towler, 2013-01-10 ---[v2.11.259]--- * Updated the billy Gaussian basis set optimizer to work in parallel. -- Mike Towler, 2013-01-10 ---[v2.11.258]--- * Another minor modification to the runcrystal script. -- Mike Towler, 2013-01-10 ---[v2.11.257]--- * Minor adjustment to arch/data/machine/titan-xk7.arch. -- Mike Towler, 2013-01-10 ---[v2.11.256]--- * Modified reblock to print a warning message about possible catastrophic behaviour if two successive energy data are four standard deviations below the mean in a DMC run. -- Neil Drummond, 2013-01-10 Added "-maxpath 1000000" to the XMGrace call in graphit, to reduce the likelihood of XMGrace complaining that "purging failed". ---[v2.11.255]--- * Made the runcrystal script automatically select the distributed data or the replicated data binary based on the presence or absence of the 'MPP' keyword in the CRYSTAL input file. -- Mike Towler, 2013-01-10 ---[v2.11.254]--- * Minor change to build-tools/bash-pretty.mk. -- Mike Towler, 2013-01-07 ---[v2.11.253]--- * The Hartree Centre people continue to tune the IBM BG/Q Blue Joule, and shared memory mode has now stopped working (I swear it worked fine a few weeks back). I am involved in discussions with the support people to understand why. The way CASINO is set up on Blue Joule means this problem breaks non-Shm calculations as well, since the arch file *always* passes the value of the environment variable BG_SHAREDMEMSIZE as an argument to bgrun (giving it a value of 0 for non-Shm calculations) and this causes the thing to crash. As a fix to allow ordinary (non-Shm) calculations to work, I have tweaked the arch file so that the bgrun command only includes BG_SHAREDMEMSIZE if it is greater than zero (i.e. specified by the user on the command line at runtime using --user.shmemsize. See FAQ question B8). -- Mike Towler, 2013-01-07 ---[v2.11.252]--- * Added support for the new Titan (Cray XK7) machine at Oak Ridge (the new 'fastest machine in the world'). This is an evolution of the old JaguarPF XK6; the old jaguar arch files have therefore been retired to the NO_LONGER_EXISTS directory. Note that Titan is not yet publically available, but as I have recently lost my SecurID key and it is not clear how long it will take to get a new one, it may be that someone will want to run on it before I get access. Hence I have followed the upgrade instructions at www.olcf.ornl.gov/kb_articles/jaguar-to-titan-transition/ to create the new arch files. Please report any problems. -- Mike Towler, 2013-01-06 Note that each of the new Titan nodes will contain an NVIDIA GPU, but CASINO is currently unable to take advantage of this, because my approach to GPU-izing the code just didn't work satisfactorily. Research into this issue continues.. New CASINO_ARCH files: linuxpc-cray-pbs-parallel.titan.arch linuxpc-gcc-pbs-parallel.titan.arch linuxpc-ifort-pbs-parallel.titan.arch linuxpc-pgf-pbs-parallel.titan.arch ---[v2.11.251]--- * Added '--info / -i' option to runqmc and runpwscf. This tells the scripts to echo some basic information about the current machine to the screen (gleaned from the currently active arch file), then to exit without running anything. This is expected to be useful when trying to remember e.g. the number of cores per node, queue-dependent walltime limits, the maximum number of cores etc. for a particular machine. Previously one had to manually check the arch file for such information, but clearly a typical user might not even realize that such a thing exists (and typing runqmc -i is easier for beginners and experts alike). -- Mike Towler, 2013-01-06 ---[v2.11.250]--- * Hash (#) characters in Makefile shell commands may normally be 'escaped' with a \ character so that they are not interpreted as comments. This allows the use of bash constructs such as ${#string} (number of characters in a string) and $# (number of positional parameters). Unfortunately, AIX does not allow escaping of hashes in this way, and they are *always* interpreted as comments. I have therefore rewritten the unpad, size_del_codes, compile_info, and nocompile_info functions in build-tools/bash-pretty.mk in alternative ways that do not use hash characters. One then finds that AIX make almost, but not quite, works, instead of crashing immediately with cryptic errors. I will continue to investigate whether further mods might allow AIX make to work properly. -- Mike Towler, 2013-01-04 ---[v2.11.249]--- * Fixed stupid typo in previous. -- Mike Towler, 2013-01-04 ---[v2.11.248]--- * Updated the runcrystal script to handle parallel versions of the CRYSTAL program - 03, 06 and 09 versions, basic non-batch operation only. (You may be surprised I haven't done this before, but the last time I used CRYSTAL with any regularity was so long ago that the parallel version didn't work!) You can now specify the number of cores with the -np flag, and it will deal with the new input peculiarities (you don't need to rename the input file to be 'INPUT' as you do with ordinary parallel CRYSTAL). Added a discussion of parallel CRYSTAL to the relevant section of the manual. -- Mike Towler, 2013-01-03 ---[v2.11.247]--- * Developed two new arch files for the Cray-XT5 at JAIST, Japan (RM request): linuxpc-path-pbs-parallel.jaist-xt5.arch, linuxpc-gnu-pbs-parallel.jaist-xt5.arch -- Mike Towler, 2013-01-03 ---[v2.11.246]--- * Added two new arch files for the Hitachi SR16000 Model M1 at Tohuku University (IMR) using either the Hitachi ofort90 compiler or the IBM mpxlf95 compiler (with some minor modifications to runqmc/clearup/etc.). Note that while CASINO compiles and runs on the machine, the behaviour of the custom queueing system is bizarre, to say the least, and often at odds with its own inadequate documentation. I surely have misunderstood some aspects of its behaviour, and users are encouraged to edit my (lengthy) sequence of run time tags at the start of the arch files and send the results to me. It may also be the case that the Hitachi optimizing compiler flags could be improved - feel free to browse through the 30000 pages of uninstalled documentation and do some tests. Note also that the administrator refuses to install git, so users should use the CASINO tar.gz distribution rather than the git distribution. Note finally that this is the first AIX system that we officially support in the modern era, and because of minor differences in Unix commands some shell-script utilities and/or build tools may behave in a strange way (obviously those that require git don't work) - please report any faults to me. Note that the official AIX 'make' remains intractable, and while the install script is aware of this, those people who insist on typing 'make' should 'alias make=gmake' first. -- Mike Towler, 2013-01-02 New arch names: aix-hitachi-custom-parallel.hitachi_sr16000.arch aix-xlf-custom-parallel.hitachi_sr16000.arch ---[v2.11.245]--- * The Hitachi ofort90 compiler refuses to compile the s_to_c function in iso_varying_string.f90 because it objects to 'CHARACTER(len(string)) s_to_c'. I have therefore created an alternative iso_varying_string2.f90 file which uses the alternative construct 'CHARACTER(size(string%chars)) s_to_c'. As this is likely more prone to memory leaks, it is to be used only on machines which require it. I have adjusted src/Makefile and update_makefile_tool to manage this, and have added a new make tag 'ISOVAR_VERSION' (default 1) that may be set to 2 on machines that require the alternative version. Note that the iso_varying_string module is only used by casl.f90 (and therefore not by most users) and that PLR apparently intends to remove it soon. -- Mike Towler, 2013-01-02 ---[v2.11.244]--- * Non-standard versions of 'make' available on some machines may not be able to compile CASINO. In such cases, one can use an alternative version of make (such as GNU 'gmake') which we know works. The name of the alternative make may now be flagged in the arch file for a given machine through the use of a new 'MAKE_EXECUTABLE' tag. This has been defined and documented in arch/taglib.sh, arch/README, data/syntax/vim/arch.vim, and the manual. The install script has been appropriately modified to make use of it following user selection of the [c] compile option. Users will clearly still need to set an alias make='gmake' if they wish to compile CASINO by hand by typing 'make' (but the alias is not available to 'install'). -- Mike Towler, 2013-01-01 ---[v2.11.243]--- * Updated doc/PROGRAMMING_GUIDE to reflect current realities. -- Mike Towler, 2013-01-01 ---[v2.11.242]--- * Older Unix variants do not support the conditional variable assignment operator ?= in Makefiles. I have therefore removed this construct throughout the distribution. This change has the following cost: if CASINO_ARCH is not defined, 'make' will no longer attempt to construct one by combining the old QMC_ARCH and QMC_ID environment variables into a new CASINO_ARCH = $QMC_ARCH.$QMC_ID. If this happens to you, it serves you right for not keeping up-to-date. Run the install script. -- Mike Towler, 2013-01-01 ---[v2.11.241]--- * Deleted doc/bashrc.hector and bashrc.jaguar, which were old example files for how to set up CASINO on some big machines. The install script will now do this sort of thing automatically when you save defined CASINO_ARCHs (data is saved in a .bashrc.casino/.cshrc.casino file called automatically from your .bashrc/.cshrc). Modified the advice in the doc/MACHINES file to reflect this. -- Mike Towler, 2013-01-01 ---[v2.11.240]--- * ALLOWED_NCORE runtime arch tag was broken. Fixed. -- Mike Towler, 2013-01-01 ---[v2.11.239]--- * Having encountered a very annoying Japanese Hitachi SR16000 which insists that batch scripts for its custom queueing system are written in C shell, I have rewritten various things so that the CASINO run scripts can output csh batch scripts as well as bash. -- Mike Towler, 2013-01-01 - Added new runtime tag 'SCRIPTCSH' (set = 'yes' in runtime section of arch file to activate csh batch scripts). New tag defined and documented in arch/taglib.sh, arch/README, data/syntax/vim/arch.vim, and the manual. - Added new arch file linuxpc-gcc-pbs-parallel.hector3-csh.arch so that this can be tested on a developer-accessible machine. - Modified runqmc and runpwscf to write csh batch scripts if required. ---[v2.11.238]--- * Changed name of SINGLE_PRECISION_BLIPS keyword to SP_BLIPS (since the former is too long to fit in the available space in the input file). The earlier form is still supported but is no longer mentioned in documentation or examples, and should be considered deprecated. -- Mike Towler, 2012-12-30 ---[v2.11.237]--- * Updated maximum number of cores and the boundary between small and large queues in linuxpc-fujitsu-pjm-parallel.kei.arch to the correct values. -- Mike Towler, 2012-12-30 ---[v2.11.236]--- * Made sure keyword blurbs in input_kw_conv utility conformed to standard defined in examples/generic/input_file_full/input. -- Mike Towler, 2012-12-30 ---[v2.11.235]--- * Update to 2.11.232. -- Mike Towler, 2012-12-29 ---[v2.11.234]--- * The ALLOWED_NNODE run-time tag in the arch files did not work if preceded by an asterisk (i.e. its value should be obtained from multi-line bash code in the arch file whose standard output is the value of the tag). Fixed. -- Mike Towler, 2012-12-29 ---[v2.11.233]--- * Repeated previous two patches in runpwscf script. -- Mike Towler, 2012-12-29 ---[v2.11.232]--- * The runqmc script arbitrarily resets to zero any MIN_NCORE or MAX_NCORE tag which is not an integer multiple of the number of cores per node. Since I know of clusters which have queues for a subset of cores on a single node, I have allowed arbitrary values of MIN/MAX_NCORE if less than the number of cores in one node. -- Mike Towler, 2012-12-29 ---[v2.11.231]--- * Fixed obvious runqmc typo in the following line: ((MIN_NNODE>0)) && info 2 "Evaluated MIN_NCORE=$MIN_NNODE" -- Mike Towler, 2012-12-29 ---[v2.11.230]--- * Fixed harmless uninitialized variable problem in Gaussians cusp setup which could be objected to by a stubborn debugging compiler. -- Mike Towler, 2012-12-28 ---[v2.11.229]--- * Patch 2.11.169 led to the --verbosity flag of runqmc not working correctly (in that not everything supposed to be printed out at a given verbosity level was actually printed). Fixed. -- Mike Towler, 2012-12-28 ---[v2.11.228]--- * Repeated previous in etime.c and added a section to the CASINO programming style guide regarding C routines. -- Mike Towler, 2012-12-27 ---[v2.11.227]--- * Some currently available C compilers still refuse to accept the new-style // comment designator - I have therefore replaced the plethora of instances of this in alloc_shm.c with old-style /* */ comments. -- Mike Towler, 2012-12-27 ---[v2.11.226]--- * AR was not included in the list of allowed Makefile tags in taglib.sh. Fixed. -- Mike Towler, 2012-12-27 ---[v2.11.225]--- * The Makefile will now refuse to compile the git distribution of CASINO if no version of git is actually installed. Justification: the user (who is likely to be a developer) will not be able to read the development log (either through git log or through the DIARY file) nor will he know what version of the code he is running. -- Mike Towler, 2012-12-27 ---[v2.11.224]--- * On some machines, the 'git' installation refers to an obsolete 'GNU Interactive Tools' file manager, rather than the git revision control system, which could lead to severe confusion. The principal Makefile will now detect this, and refuse to compile the git distribution of CASINO (recommending either to install a proper version of git, or to download the CASINO .tar.gz distribution). -- Mike Towler, 2012-12-27 ---[v2.11.223]--- * The expression sed "s/ /\n/"g (replace all spaces with a newline) doesn't work in e.g. BSD/AIX. Modified all instances of this in arch_info.sh using single quotes and literal newlines, which is apparently portable. Suggestions for valid CASINO_ARCHs produced by an install script auto-detection will thus no longer be concatenated on non-GNU systems. -- Mike Towler, 2012-12-25 ---[v2.11.222]--- * Install script didn't work on AIX, since AIX does not supply a functioning 'mktemp' command. Updated arch_info.sh to bypass this problem. -- Mike Towler, 2012-12-23 ---[v2.11.221]--- * Hartree Centre people have modified their system so a page of helpful beginner's advice is echoed to the screen every time a module is loaded. Since CASINO does this every time it compiles a new routine, I've told it to calm down with some helpful redirects to /dev/null/. -- Mike Towler, 2012-12-18 ---[v2.11.220]--- * Added -qmaxmem=-1 to Blue Gene/Q compiler flags to stop it whining about not having enough memory to do optimizations. -- Mike Towler, 2012-12-18 ---[v2.11.219]--- * Allowed use of all-lower-case in addition to CamelCase for make options when choosing which version of the code to compile. Thus one may now type make shm, make openmp, make openmpshm, make shm/debug.clean etc. in addition to make Shm, make Openmp, make OpenmpShm, make Shm/debug.clean etc. This change was made since new users (and Neil) can easily get confused about which letters are required to be capitalized. [REQUEST BY NDD]. -- Mike Towler, 2012-12-17 ---[v2.11.218]--- * Modified runqmc so that the flag for requesting shared memory (currently --shmem[=] or -s ) can also take the value --shm[=]. [REQUEST BY NDD] -- Mike Towler, 2012-12-17 ---[v2.11.217]--- * The ranks of the first group of cores were not being printed to output correctly when using shared memory on fewer cores than the total number of cores per node. Fixed. -- Mike Towler, 2012-12-17 ---[v2.11.216]--- * Eliminated a superfluous newline in the output of runqmc --help. -- Mike Towler, 2012-12-17 ---[v2.11.215]--- * In going from Blue Gene/P to Blue Gene/Q, the environment variable that you need to set to indicate the size of the requested shared memory partition in Shm mode was for some reason changed from BG_SHAREDMEMPOOLSIZE to BG_SHAREDMEMSIZE. This is now reflected in the FAQ (question B8), in the manual, and in arch/data/bluegene-xlf-ll-parallel.bluejoule.arch. -- Mike Towler, 2012-12-17 ---[v2.11.214]--- * Following previous patch, re-enabled mpixlf95_r thread_safe compiler in bluegene-xlf-ll-parallel.bluejoule.arch and reactivated OpenMP. -- Mike Towler, 2012-12-17 ---[v2.11.213]--- * As reported in 2.11.154, Blue Gene/Q machines refuse to compile CASINO using the thread-safe compilers (mpixlf95_r etc..) because of an internal compiler error. It proved possible to bypass this error by rewriting the gauss_per_cusp.f90 and gauss_per_cusp_bf.f90 routines. Basically, the compiler doesn't like lines like the following: s_origin(1:ndim)=matmul(tempvec2(1:ndim),amat(1:ndim,1:ndim)) where ndim is the periodicity of the (periodic) system 1, 2 or 3. If we put the block of statements like this in a 'select case(ndim)' structure, with the 1:ndim explicitly written out as 1, 1:2 or 1:3 then the error is avoided. -- Mike Towler, 2012-12-17 ---[v2.11.212]--- * Modified arch_info.sh so that, when using the install script to interactively create a new CASINO_ARCH, users are asked whether the compute nodes and login nodes have completely different file systems (and hence file staging is required). Appropriate modifications are made to the resulting arch file if the answer is 'yes'. -- Mike Towler, 2012-12-16 ---[v2.11.211]--- * The population explosion recovery facility (DMC_TRIP_WEIGHT) was broken, in that any attempt to restart from a previous block was likely to die immediately. Fixed. -- Mike Towler, 2012-12-14 ---[v2.11.210]--- * Removed superfluous sum_data_loc2 vector from dmc.f90, which is allocated and zeroed but never used. -- Mike Towler, 2012-12-13 ---[v2.11.209]--- * Computation of config multiplicities was not protected against integer overflow. Now it is. Integer overflow is likely to happen only when using a deliberately poor wave function, but at least the code will now die for the correct reason, rather than by bitching about there being a 'Bug in the redistribution algorithm'. -- Mike Towler, 2012-12-12 ---[v2.11.208]--- * Blip setup could crash for the case of a real wave function with singly-occupied bands, since it tries to print out the phase of the singly-occupied bands using a vector which is only defined if the blip data is read from bwfn.data or bwfn.data.b1 (not the new bwfn.data.bin). Implemented a temporary fix for this. -- Mike Towler, 2012-12-11 ---[v2.11.207]--- * Hector machine now has NAG compiler, hence new CASINO_ARCH defined. See: linuxpc-nag-pbs-parallel.hector3. -- Mike Towler, 2012-12-11 ---[v2.11.206]--- * In vmc_block_sampling_stats/vmc.f90 the array iaccept_lev_master was not initialized, which could lead to silly values of the acceptance ratio/floating point errors etc.. Fixed. -- Mike Towler, 2012-12-11 ---[v2.11.205]--- * COMMAND_CHECK_F90 was incorrectly defined in arch/data/f90/nag.arch, meaning that NAG compilers could never be automatically detected as a valid CASINO_ARCH. Fixed. -- Mike Towler, 2012-12-11 ---[v2.11.204]--- * In read_mpc/interactions.f90 a line 'No supercell G-vector matching primitive G-vector n' is printed to output for each non-matched vector n. As this represents potentially tens of thousands of lines of completely uninformative output, I have altered it such that it now merely reports the total number of non-matching vectors. -- Mike Towler, 2012-12-11 ---[v2.11.203]--- * The config.backup files used in dmc explosion recovery were not properly copies of the relevant config.out files (because of the non-blocking redist algorithm). Fixed. -- Mike Towler, 2012-12-11 ---[v2.11.202]--- * Auto-continuation was broken for both VMC and DMC - fixed. -- Mike Towler, 2012-12-10 ---[v2.11.201]--- * Fixed some routine names passed to qmpi_bcast in dmc.f90. -- Mike Towler, 2012-12-10 ---[v2.11.200]--- * Corrected error trapping for failing to open pseudopotential file. -- Neil Drummond, 2012-12-10 ---[v2.11.199]--- * Fixed minor infelicity in runqmc where the original input file wasn't being restored in auto-continuation mode on non-batch machines. -- Mike Towler, 2012-12-10 ---[v2.11.198]--- * Clarified and expanded the definition of LWDMC keyword in manual and esdf_key. -- Mike Towler, 2012-12-10 ---[v2.11.197]--- * Minor modification to the graphit utility such that the xmgrace window no longer needs to be resized. -- Mike Towler, 2012-12-06 ---[v2.11.196]--- * Failed to include some modified files in previous patch but one (2.11.194). Now done. -- Mike Towler, 2012-12-06 ---[v2.11.195]--- * Updated CHANGES file. -- Mike Towler, 2012-12-06 ---[v2.11.194]--- * Trawled through the main source ensuring format conforms to specification in manual (Comments, spacing, order of variable declarations etc. etc.). -- Mike Towler, 2012-12-06 ---[v2.11.193]--- * Fixed several issues in dmc.f90. The use of the qmpi_isend/irecv wrapper routines instead of direct calls to mpi_isend/irecv (in routines redist_recv_dmc and redist_send_dmc) led to miscompilation with the fujitsu compiler - fixed by reintroducing the direct calls. The K computer will now work properly.. Also fixed an indexing problem with moving received configs (will lead to small difference in DMC results). -- Mike Towler, 2012-12-05 ---[v2.11.192]--- * Minor modification to some install script text. -- Mike Towler, 2012-12-04 ---[v2.11.191]--- * Fixed some incorrect checkmpi output messages in parallel.f90. -- Mike Towler, 2012-12-04 ---[v2.11.190]--- * Revised comment about Jastrow factors for external potentials in the manual. -- Neil Drummond, 2012-12-03 ---[v2.11.189]--- * Fixed a minor infelicity in non-blocking MPI send/receive of configs which could, under certain circumstances, result in an undefined array being transferred (this ultimately had its origin in the fact that the '_valid' flag which indicates whether the array is up-to-date is not compatible with non-blocking mode). While harmless, this could cause a picky debugging compiler to object. -- Mike Towler, 2012-12-02 ---[v2.11.188]--- * Fixed similar problems to previous patch elsewhere in dmc.f90. -- Mike Towler, 2012-11-27 ---[v2.11.187]--- * Slave nodes were inadvertently accessing a quantity rtmp defined only on the master node during definition of ebest in readconfigs_dmc. Fixed. -- Mike Towler, 2012-11-27 ---[v2.11.186]--- * exmol: added "expproper_param" pairing orbital -- Jonathan Lloyd-Williams, 2012-11-27 This is an exponential exp(-a*r) where a is an optimizable parameter. This pairing orbital is intended to be used only when waiving the the cusp conditions between oppositely charged particles, which can be achieved through the use of the "waive e-e cusp" and "waive e-n cusp" blocks in gjastrow. ---[v2.11.185]--- * Better debug flags for linuxpc-fujitsu-pjm-parallel.kei. -- Mike Towler, 2012-11-27 ---[v2.11.184]--- * Runqmc lock files were being ignored on machines which require file staging. Fixed. -- Mike Towler, 2012-11-27 ---[v2.11.183]--- * Minor update to linuxpc-fujitsu-pjm-parallel.kei arch file (for the K computer) such that files are cleaned up after the calculation even in the case that CASINO stops with an error message. -- Mike Towler, 2012-11-27 ---[v2.11.182]--- * Updated a warning message in the format_configs utility. -- Mike Towler, 2012-11-26 ---[v2.11.181]--- * Any calc with 'atom_basis_type : nonint_he' would crash during attempt to print out determinant info since this is not defined using the conventional mechanism for this special wave function. Fixed. -- Mike Towler, 2012-11-25 ---[v2.11.180]--- * Fixed multiple confusion between atom_basis_type = non_int_he and nonint_he in monte_carlo.f90. Now the documentation says nonint_he, but internally this is transformed into non_int_he. Either value may now be used in input. -- Mike Towler, 2012-11-25 ---[v2.11.179]--- * Exact orbitals for noninteracting He atom supposedly flagged by 'atom_basis_type : nonint_he' in input, but runqmc assumes 'non_int_he'. Fixed. -- Mike Towler, 2012-11-25 ---[v2.11.178]--- * Documented previous patch in manual (and PLR's similar patch 2.11.95 for the H2 molecule). -- Mike Towler, 2012-11-25 ---[v2.11.177]--- * special_wavefun: added atom basis type 'h3plus' -- Jonathan Lloyd-Williams, 2012-11-25 This is a wave function for the H3+ ion where each orbital is the sum over hydrogen nuclei of a parameter-less exponential centred at each nucleus. ---[v2.11.176]--- * Openmp implementation was broken in pjastrow.f90. Fixed. -- Mike Towler, 2012-11-22 ---[v2.11.175]--- * runqmc: fixed empty gjastrow detection -- Pablo Lopez Rios, 2012-11-22 ---[v2.11.174]--- * Fixed ESDF module to correctly parse string values. -- Pablo Lopez Rios, 2012-11-21 If the value is contained in the keyword (as is most likely to happen with single-character values), the parser would return part of the keyword name rather than the value. Fixed. * exmol: flag application of two-particle cusps for correct pairs -- Pablo Lopez Rios, 2012-11-21 Bug found by JHL. ---[v2.11.172]--- * Updated advice about population explosions in manual. -- Mike Towler, 2012-11-19 ---[v2.11.171]--- * My patch 2.11.169 prevented printout of usage information via 'runqmc --help'. Fixed. -- Mike Towler, 2012-11-19 ---[v2.11.170]--- * Designed an arch file for the K computer at the Riken Institute in Japan - the fastest computer in the world until very recently..! New CASINO_ARCH: linuxpc-fujitsu-pjm-parallel.kei -- Mike Towler, 2012-11-19 ---[v2.11.169]--- * The runqmc script was not able to cope with machines which have completely separate file systems on the login nodes (where the job is submitted) and on the compute nodes (where the job is executed). Such machines require 'staging' of the input and output files, the use of relative rather than absolute pathnames, and a more elaborate clean-up procedure. This behaviour can now be flagged with 'RELPATHNAMES: yes' in the arch file (new tag defined and documented in arch/taglib.sh, arch/README, data/syntax/vim/arch.vim, and the manual). -- Mike Towler, 2012-11-19 ---[v2.11.168]--- * The EMIN_AUTO_VARMIN functionality was removed in 2.11.126 but this was not reflected in the manual or in esdf_key.f90. Now it is. -- Mike Towler, 2012-11-18 ---[v2.11.167]--- * Minor modification to the plot_reblock utility such that the xmgrace window no longer needs to be resized. -- Mike Towler, 2012-11-18 ---[v2.11.166]--- * Added .arch file for the Polaris cluster in Leeds. -- N Drummond, 2012-11-15 ---[v2.11.165]--- * Updated the new arch file for the Blue-Gene/Q at the Hartree Centre introduced in 2.11.154 (bluegene-xlf-ll-parallel.bluejoule) in order that jobs can be correctly submitted and run, and so that shared memory can be used. Extensive negotiations were required with the user support people, since their LoadLeveler filter did not allow the running of batch scripts - nicely negating the way runqmc is supposed to work. They have now rewritten the filter, and hopefully everything is now OK. The CASINO arch file will likely need further modification once they clarify the available queues and time limits and so on. -- Mike Towler, 2012-11-07 Note that as of today the machine still isn't working - there are problems with i/o errors in the filesystem leading to random files in your home directory being corrupted. IBM are on the case.. ---[v2.11.164]--- * Arch file for Darwin westmere partition was broken (could not autodetect from hostname). Fixed. -- Mike Towler, 2012-11-06 ---[v2.11.163]--- * Moved redundant arch files linuxpc-gcc-pbs-parallel.darwin.arch and linuxpc-ifort-pbs-parallel.darwin.arch to arch/NO_LONGER EXISTS archive. -- Mike Towler, 2012-11-06 ---[v2.11.162]--- * Fixed incorrect type declarations in the copy_config_file routine from configs.f90 (ranx_indx_in and ranx_gauss_indx_in are INTEGER not REAL). -- Mike Towler, 2012-11-06 ---[v2.11.161]--- * Changed the suffices of the various files that are output by the jastrow_plot facility from .out to .dat (so they are read by default by xmgrace..). -- Mike Towler, 2012-11-05 ---[v2.11.160]--- * The ability to generate VMC configs on a different number of cores to the number used in a subsequent DMC simulation had been broken due to problems in reading the VMC_SAVED_STATE block of the config file. Fixed. -- Mike Towler, 2012-11-02 ---[v2.11.159]--- * Fixed unused variable in sampling_utils.f90. -- Mike Towler, 2012-11-02 ---[v2.11.158]--- * A user who downloaded the CASINO distribution via git was deleting the git repository before compiling to save disk space. This meant that the Makefile was unable to reconstruct the DIARY and VERSION files (which are not distributed directly with the git version). The lack of a VERSION file (which gets 'included' in main.f90) led to binary characters in the output file. Have now fixed the Makefile so that compilation will be halted if either VERSION or DIARY does not exist and there is no git repository. -- Mike Towler, 2012-11-02 ---[v2.11.157]--- * Added description of undocumented 'make clean' and 'make info' commands to the manual. -- Mike Towler, 2012-11-02 ---[v2.11.156]--- * Added warning for the situation where both bwfn.data and bwfn.data.bin exist. -- Neil Drummond, 2012-10-29 Corrected an error message when CASINO complains about ion-ion energy mismatches. ---[v2.11.155]--- * Bypassed the compiler error in previous by using the non-thread-safe compiler mpixlf95 instead of mpixlf95_r. -- Mike Towler, 2012-10-24 ---[v2.11.154]--- * Added preliminary arch file for the new Blue-Gene/Q at the Hartree Centre in Daresbury. This is preliminary because (1) all the details of how the machine will function have not yet been released and the documentation is incomplete, and (2) the code will not compile because of an internal compiler error ('load_backchain: Assertion `scope_diff > 0' failed' on compiling gauss_per_cusp.f90) which seems difficult to fix without upgrading the compiler. Nevertheless, if anyone wants to try, here is the arch file. Investigations continue. The new CASINO_ARCH is : bluegene-xlf-ll-parallel.bluejoule . -- Mike Towler, 2012-10-23 ---[v2.11.153]--- * The facility (controlled by the CHECKPOINT_NCPU keyword) for reading in config files on multiple CPUs and broadcasting the data in CPU subgroups (as opposed to the default reading on the master only) was broken (again), for the case that NNODES was not exactly divisible by CHECKPOINT_NCPU. Fixed. -- Mike Towler, 2012-10-22 ---[v2.11.152]--- * Added new RUNTYPE : vmc_dmc_equil. This flags a VMC configuration run followed by 1 round of DMC equilibration (with no DMC stats accumulation at all). This is useful on time-limited batch machines when doing big systems with long equilibration times. -- Mike Towler, 2012-10-22 ---[v2.11.151]--- * Made CASINO fail gracefully if an insufficient number of PW orbitals are supplied. -- Neil Drummond, 2012-10-11 ---[v2.11.150]--- * Pathscale compiler does not allow intrinsic calls in specification expressions, such as 'INTEGER :: a(maxval(b))'. Fixed multiple instances of this in gjastrow.f90. -- Mike Towler, 2012-10-02 ---[v2.11.149]--- * Modified make_p_stars so that it can be used to generate p terms appropriate for multiple layers of atoms. -- Neil Drummond, 2012-09-19 Tidied "L_f" variable name in pjastrow.f90. ---[v2.11.148]--- * Updated list of computers that we are not allowed to use on tcm_comps. -- Neil Drummond, 2012-09-11 ---[v2.11.147]--- * Fixed various type-conversion errors found by gfortran. -- Neil Drummond, 2012-08-29 ---[v2.11.146]--- * manual: corrected typo in formula for hard-sphere Jastrow term -- Gareth Conduit, 2012-08-23 * install: minor tweaks -- Pablo Lopez Rios, 2012-08-23 - Clarify instructions for installing syntax highlighting. - Don't claim "you have configured CASINO by hand" when CASINO is in fact unconfigured. ---[v2.11.144]--- * Minor modification to manual. -- Mike Towler, 2012-08-18 ---[v2.11.143]--- * Updated linuxpc-pgf-pbs-parallel.jaguarpf.arch file to remove specific directives to load a PGF compiler after version 12.3 (since this has now become the default). This reverses patch 2.11.86. -- Mike Towler, 2012-08-18 * Modified jaguar-xk6.arch: widow1 removed. -- Neil Drummond, 2012-08-18 ---[v2.11.141]--- * install: offer installation/removal of syntax highlighting -- Pablo Lopez Rios, 2012-08-10 Also: - Removed editor-specific data/syntax/*/README files. - Load syntax highlighting in vim using ~/.vim/ftdetect/*.vim files insted of ~/.vim/filetype.vim. The new method can be easily undone without breaking other custom filetypes. ---[v2.11.140]--- * data/syntax: added gtksourceview support -- Pablo Lopez Rios, 2012-08-09 This covers: - ESDF files (i.e., CASINO and CASTEP input files) - CASINO dot-data files (correlation.data, expot.data, etc) - STARCH architecture files (linuxpc-gcc.arch, etc) - CASL files (i.e., parameters.casl) Instructions to use these syntax files with gtksourceview 2.0 and 3.0 (as used by, e.g., the default GNOME editor 'gedit') are given in the README file under data/syntax/gtksourceview . ---[v2.11.139]--- * Added a utility input_kw_conv to convert between the "new" and "standard" keyword sets. -- Neil Drummond, 2012-08-07 Removed unused parameter from varmin_linjas.f90. ---[v2.11.138]--- * runqmc: fix call to errstopd without directory argument -- Pablo Lopez Rios, 2012-08-04 * monte_carlo: modified USE_GJASTROW default -- Pablo Lopez Rios, 2012-08-04 The default value of USE_GJASTROW is now: - if a JASTROW block is found in parameters.casl, USE_GJASTROW=T - if a JASTROW block is found in correlation.data and not in parameters.casl, USE_GJASTROW=F - if none are found, USE_GJASTROW=T This makes the explicit use of USE_GJASTROW unnecessary. * gjastrow: rewritten e-e-n evaluation routine for speed and added aderivs -- Pablo Lopez Rios, 2012-08-04 ---[v2.11.135]--- * Updated version number of manual for summer school in 2012. -- Neil Drummond, 2012-07-26 * Yet another change to the memory requirements for the Lancaster HEC. -- Neil Drummond, 2012-07-26 (Effectively) removed upper limit on wall-time for the Lancaster HEC. ---[v2.11.133]--- * Line "Stored VMC energy..." in emin.f90 was longer than 80 characters. Used wordwrap instead of wout. -- Neil Drummond, 2012-07-26 Updated dependencies in Makefile. ---[v2.11.132]--- * varmin_linjas: integrated into scratch-space system, added gjastrow support -- Pablo Lopez Rios, 2012-07-26 List of changes: - Rewired varmin_linjas module to make use of common functionality used by other optimization methods, and removed most of the varmin_linjas-specific routines. - Added interface between varmin_linjas and gjastrow. - Tidied main minimization loop of varmin_linjas. - Use labelled_list to print parameters in varmin_linjas. - Removed unused emin_* arguments in get_linear_basis_pjastrow. - Added integer-overflow checks in first set of allocations in varmin_linjas (NB, don't expect varmin_linjas to work on >~ 350 parameters). - Ability to disable rescaling/limiting of parameters in get_params. - Updated Makefile (was already obsolete). ---[v2.11.131]--- * arch: use qsub -r n on Darwin to stop automatic resubmissions -- Pablo Lopez Rios, 2012-07-20 As suggested by NDD. ---[v2.11.130]--- * slater: fixed typo in initialization -- Jonathan Lloyd-Williams, 2012-07-19 ---[v2.11.129]--- * Modified casino.el to allow syntax highlighting for CASL files with emacs. -- Neil Drummond, 2012-07-16 ---[v2.11.128]--- * Fixed text-wrapping problem in abinit_to_casino_pp.f90 (problem reported by Tim Mueller). Allowed lmax<2, since CASINO now allows this. Tidied abinit_to_casino_pp.f90. -- Neil Drummond, 2012-07-15 ---[v2.11.127]--- * Moved following arch files to arch/NO_LONGER_EXISTS : linuxpc-intel-parallel.imperial-cmth-mkl.arch linuxpc-intel-pbs-parallel.cx1.hpc.ic.arch Added the following new arch files (for Tom Poole): linuxpc-intel-parallel.imperial-cmth.arch linuxpc-intel-pbs-parallel.imperial.cx1.arch -- Mike Towler, 2012-07-13 ---[v2.11.126]--- * gjastrow: moved 'print_determined' from internal flag to CASL option -- Pablo Lopez Rios, 2012-07-13 A boolean keyword 'Print determined' directly inside the main 'JASTROW' block in parameters.casl can now be used to specify whether determined parameters in the Jastrow factor should be printed out to the output file and CASL structure. By default this is F. * emin: remove "emin_auto_varmin" funcionality for now -- Pablo Lopez Rios, 2012-07-13 ---[v2.11.124]--- * gbasis: fixed problem with default rules under some circumstances -- Pablo Lopez Rios, 2012-07-09 ---[v2.11.123]--- * The CRYSTAL09 --> CASINO converter was restricted in the extent to which it could use Gaussian f functions, since the vector containing the f function contraction coefficients was not documented in the API (having been added later). I've now figured out where the data is located in the CRYSTAL output, and implemented a fix for this in the converter. -- Mike Towler, 2012-07-06 ---[v2.11.122]--- * Got rid of some unnecessary large files in the examples directory. -- Neil Drummond, 2012-07-06 ---[v2.11.121]--- * Added new keywords OPT_GEMINAL, VMC_SAMPLING, VMC_OPTIMUM_E0, and VMC_OPTIMUM_EW to examples/generic/input_file_full, and OPT_GEMINAL to the manual. -- Mike Towler, 2012-07-05 ---[v2.11.120]--- * geminal: multi-geminal implementation. -- Pascal Bugnion, 2012-07-05 Large-scale re-working of the geminal module, with implementation of a multi-geminal wavefunction. Changes: - geminal.f90 - Various changes one might expect when moving from a single- to a multi-geminal wave function: adding outer loops over the geminals etc. - Removal of the G*dphi, G*d2phi, dphi*G and d2phi*G arrays and associated methods. The pre-calculation of these provided essentially no speed gain at a large cost in memory. Everything can be done through the G*phi and phi*G arrays. (See code for details). - The way geminals are summed is similar to the way multi-dets are summed. ---[v2.11.119]--- * Cray compiler on Jaguar was miscompiling branch_and_redist_send and branch_and_redist_sendrecv in dmc.f90. A minor alteration to the legitimate code cured this. -- Mike Towler, 2012-07-05 ---[v2.11.118]--- * Minor adjustments to documentation following removal of Jaguar pathscale support. -- Mike Towler, 2012-07-03 ---[v2.11.117]--- * Made autotest complain if the out file is incomplete. -- Neil Drummond, 2012-07-03 ---[v2.11.116]--- * Removed support for pathscale compiler on Jaguar (since Cray/OLCF no longer support it). -- Mike Towler, 2012-07-03 ---[v2.11.115]--- * Sped up orbital evaluation in sdw.f90 by reducing the number of trig functions to evaluate. Allowed the magnetization vector to be q=0. -- Neil Drummond, 2012-07-03 ---[v2.11.114]--- * exmol.f90: Implemented p-type orbital. -- Jonathan Lloyd-Williams, 2012-07-03 ---[v2.11.113]--- * monte_carlo: do not disable Jastrow factor in first VMC if using EMIN -- Pablo Lopez Rios, 2012-07-03 * gjastrow: fix for unallocated zion in Wigner crystals -- Pablo Lopez Rios, 2012-07-03 * monte_carlo: default opt_noctf_cycles=0 for all opt_methods -- Pablo Lopez Rios, 2012-07-03 The emin default of opt_noctf_cycles = opt_cycles/2 was useful in the original implementation of emin. Now it appears not only to be unneeded, but also to waste cycles while not optimizing cut-offs. The feature is obscure enough that users of any level of expertise are likely unaware of it and probably interpret the final emin cycles as a signal of convergence. The ability to fix cutoffs for a given number of cycles remains available via explicitly setting opt_noctf_cycles in the input file. ---[v2.11.110]--- * Fixed typo in definition of self term for 2D Ewald interaction, pointed out by James Shepherd. Some tidying of the manual. -- Neil Drummond, 2012-07-03 ---[v2.11.109]--- * If the gamess2qmc tool was used for an all-electron GAMESS calculation, the number of electrons wasn't passed to the resulting gwfn.data file due to a different wording in the output for the two cases. Fixed. [Thanks to Tom Poole for pointing this out]. -- Mike Towler, 2012-07-03 ---[v2.11.108]--- * Fixed serious bug in do_orbmap in bwfdet.f90 affecting spin-polarized systems with multiple k points. Problem encountered by Tim Mueller. -- Neil Drummond, 2012-06-15 ---[v2.11.107]--- * Fixed orbmap problem in pwfdet.f90, encountered by Tim Mueller. -- Neil Drummond, 2012-06-14 ---[v2.11.106]--- * Adjusted soft zero/hard zero tolerances in the FPE handler in slater.f90. -- Mike Towler, 2012-06-13 This fixes the following error reported by Ken Jordan with a Gaussian basis set 21-molecule H2O cluster: ERROR : MOVE_CONFIG Floating-point exception reported when calculating old drift vector. Don't know what to do, so stopping. Please file a bug report. ---[v2.11.105]--- * Minor change to descriptive blurb for NEWRUN keyword. -- Mike Towler, 2012-06-10 ---[v2.11.104]--- * arch: fix autodetection of gcc 4.3 -- Pablo Lopez Rios, 2012-06-10 * arch_info.sh: fixed typo which potentially affects SHM test -- Pablo Lopez Rios, 2012-06-10 * gjastrow: fixed typo causing crashes in HEGs -- Pablo Lopez Rios, 2012-06-10 * Replaced exp with exp_protect in poly_orb in gaussians.f90 to avoid a numerical problem with the Gaussian cusp correction. Little bit of tidying suggested by NAG. -- Neil Drummond, 2012-06-10 ---[v2.11.100]--- * arch: added CASINO_ARCH linuxpc-ifort-pbs-parallel.darwin3 -- Pablo Lopez Rios, 2012-06-09 Also updated machine/darwin.arch to agree with reality. * install: fixed minor glitch in casinoarch function -- Pablo Lopez Rios, 2012-06-09 ---[v2.11.98]--- * Added error trap for ALIMIT<=0. -- Neil Drummond, 2012-06-08 ---[v2.11.97]--- * Fixed typo in previous. -- Mike Towler, 2012-06-05 ---[v2.11.96]--- * Update to description of SDWs in the manual. -- Neil Drummond, 2012-06-05 Some general tidying of the manual. ---[v2.11.95]--- * gjastrow: added internal flag to allow failed constraints -- Pablo Lopez Rios, 2012-06-05 * gbasis: added internal flag to bypass non-zero parameter maps -- Pablo Lopez Rios, 2012-06-05 * gjastrow: print out params per channel to output file -- Pablo Lopez Rios, 2012-06-05 * special_wavefun: added atom_basis_type='h2' -- Pablo Lopez Rios, 2012-06-05 This is a wave function for the H2 molecule where each orbital is the sum over atoms of a parameter-less exponential centred at each atom. * gjastrow: modified effect of "Waive e-* cusp" -- Pablo Lopez Rios, 2012-06-05 "Waive e-* cusp" now causes no coalesce conditions to be applied, instead of applying constraints for cusplessness (or, more in general, for well-behavedness of the kinetic energy at coalesce points). * runqmc: fix minor function argument issue in error message -- Pablo Lopez Rios, 2012-06-05 * gbasis: prevent determined parameter output during optimization too -- Pablo Lopez Rios, 2012-06-05 * autotest: added h_exact -- Pablo Lopez Rios, 2012-06-05 Autotest examples where the system is a Hydrogen atom where the proton and the electron are treated as quantum particles, using the wave function Psi_T = Phi_0 + a Psi_1 , or similar forms, where Phi_0 is the exact ground-state orbital and Psi_1 is a rather poor orbital. This example demonstrates emin's ability to optimize linear parameters exactly in one go, as well as detect problems in VMC and emin calculations where the VMC variance is (nearly) zero. * emin: bugfixes -- Pablo Lopez Rios, 2012-06-05 This includes: - Fixed bug in handling of linear parameters, introduced during my adaptation of JRT's original (correct) modifications to emin that landed in CASINO v2.6. Now emin is again capable of optimizing linear parameters exactly in one go, as it's supposed to. - Removed code specific to the absence of non-linear parameters since it is likely to make optimization worse once close to the minimum. - Fixed bug in matrix manipulation where x=1 was being flagged as a failed search (x=0 is a failed search). - Made the inability to invert S and to obtain valid eigenvectors non-fatal errors - Fixed a couple of crashes in emin and vmc when using exact wave functions. ---[v2.11.86]--- * Upgraded linuxpc-pgf-pbs-parallel.jaguarpf.arch file for PGI compiler on Jaguar such that version 12.4 of the compiler is used by default. -- Mike Towler, 2012-05-31 Versions 12.1 and 12.2 versions of the PGI compiler will refuse to compile CASINO because of an acknowledged compiler bug, which was fixed in 12.3. After nagging, versions 12.2, 12.3 and 12.4 have now finally been installed on Jaguar but 12.1 remains the default when doing 'module load PrgEnv-pgi'. Hence we have to manually upgrade to 12.4 in the arch file. ---[v2.11.85]--- * exmol: restrict coefficient renormalization to correlation.data output -- Pablo Lopez Rios, 2012-05-31 This fixes a bug that caused derivatives wrt term coefficients to give nonsensical values for unnormalized initial coefficients. It also makes the wave function exactly linear in the term coefficients, which is a nice property. * gbasis: implemented 'RPA' basis and 'quasicusp' cut-off -- Pablo Lopez Rios, 2012-05-31 These were the two main missing terms in the gjastrow that are present in the pjastrow. pjastrow-to-gjastrow converter updated to produce these terms too. ---[v2.11.83]--- * manual: documented alternative sampling -- John Trail, 2012-05-30 * alt_utils: bugfixes -- Pablo Lopez Rios, 2012-05-30 - Fixed check_kinetic call with alternative sampling in vmc. - Fixed uninitialized variable issue with use_altsamp in emin. - Fixed vector size mismatch bug in fieller routine in alt_utils. - Protect against weight divergence in varmin. - Protect against negative argument to 'repeat' in varmin. - Do not disable Jastrow factor in first VMC if using alt sampling. - Updated format_configs util to add LOGP support. - Use cmplx(r,0.d0,dp) instead of cmplx(r) in emin and varmin - Explicit handling of zero wave function value in weight_config_vmc in alt_utils. - Added allocation checks to alt_utils. - Removed unused dependencies. - Reduced alt sampling keyword set to: - vmc_sampling (="optimum", "HF optimum", "efficient") - vmc_optimum_{e0,ew} (for vmc_sampling="optimum" or "HF optimum") - Added new module sampling_utils to handle attempts at improving "efficient" sampling (can temporarily be accessed via vmc_sampling="new", but it's nothing exciting so far). - Commented out calls to fieller for the time being - needs to be purged of MPI calls and have its output streamlined. Note that the "Reblocked VMC energy" report will claim that the VMC energy is zero. This will be fixed in the future - the errorbar in this report is accurate though. TODO: - Re-expose vmc_efficient_ndet? * vmc: implemented alternative sampling -- John Trail, 2012-05-30 This implements residual sampling as described in J.R.Trail, Phys. Rev. E 77, 016704 (2008) (here named "optimum sampling"), along with a simplified variant based on HF energies, and a particularly efficient sampling distribution for multi-determinant calculations. ---[v2.11.80]--- * gbasis: stop printing determined parameters to output and to CASL structure -- Pablo Lopez Rios, 2012-05-29 This was being done for consistency checking, but now all issues with contraint application seem to have been resolved by not letting the compiler optimize sensitive linear algebra code. The ability to print determined parameters remains in the code under an internal flag PRINT_DETERMINED in gbasis.f90. * gjastrow: restore non-zero parameter maps -- Pablo Lopez Rios, 2012-05-29 In 2.11.78 I said: " Non-zero parameter maps, which speed up the evaluation of terms many of whose linear parameters are zero, have been temporarily disabled. This slow-down should mosly affect initial VMC runs with empty terms. " "mosly" (meaning "mostly" in my usual typospeak) is a huge understatement in some cases: terms with many zero parameters due to cusp constraints greatly benefit from the maps. Non-zero parameter maps are now generated again, but only taking into account parameters which are constrained to be zero regardless of the value of optimizable parameters. The slow-down mentioned in the above quote now *only* affects initial VMC runs with empty terms. I do not intend to repair this slow-down in the near future, to avoid overcomplicating things for little gain, so I've removed calls to get_all_index_properties during optimization and index properties pbuffers since all the index information is now static. Have also made use of the forced-zero parameter information in a couple of places to speed things up a bit. ---[v2.11.78]--- * gjastrow: implemented analytical derivatives wrt linear parameters -- Pablo Lopez Rios, 2012-05-28 Notes: - Analytical derivatives are calculated in the regular evaluation routines along with the usual values, gradients and Laplacians, and are stored in scratch spaces for later handling. - Since this is the first set of parameters in CASINO with analytical derivatives available via scratch spaces, have had to do minor tweaks to part of the infrastructure (energy_utils and wfn_utils mainly). Emin uses the analytical derivatives directly, while varmin converts them to values at a displaced parameter value as required by NL2SNO. - There exists an internal FORCE_NUMDERIVS flag in the gjastrow module to revert to numerical derivatives, for test purposes. - Analytical derivatives have been used to check the accuracy of numerical derivatives. Numerical derivatives are typically accurate to 5-7 digits, although I've seen instances of just 2-digit accuracy for very small derivative values, as well as numerical derivatives being flushed to zero due to precision issues which the analytical derivatives do not suffer from. - Analytical derivatives are also faster to compute - I've seen speed-ups in the "Computing derivatives" stage of as little as 15% and of as much as 1900% [!]. - Test runs comparing the time required to compute the numerical derivatives of a regular Jastrow factor ("pjastrow") containing U, CHI and F terms with the time required to compute the analytical derivatives of its gjastrow equivalent showed the latter was 400% faster. The gjastrow remains slower in VMC. Further work to land soon: - varmin_linjas support for gjastrow will follow shortly - this requires adapting varmin_linjas to use scratch spaces (possibly as an optional codepath). - The optimized e-e-n evaluation routine does not support analytical derivatives - it needs a bit of a rewrite for speed, so I haven't bothered and have diverted aderiv calls to the generic routine in the meantime. - Non-zero parameter maps, which speed up the evaluation of terms many of whose linear parameters are zero, have been temporarily disabled. This slow-down should mosly affect initial VMC runs with empty terms. ---[v2.11.77]--- * Updated the (rarely-used) DMC_POPRENORM algorithm implemented in subroutine renorm in dmc.f90 - which randomly deletes or copies configs in order to keep the total DMC population constant - such that it takes account of the redist group structure. -- Mike Towler, 2012-05-21 This has two advantages: (1) The cost of renormalization becomes independent of the number of cores. (2) The DMC_POPRENORM facility may be used to maintain a fixed number of configs per core (as was the case originally before the introduction of redist groups in 2.8.108). Even if the total number of configs was fixed by DMC_POPRENORM, the fact that config redistribution was limited to within 500-core redist groups meant that small population imbalances between groups could occur (even though these are largely eliminated by 'shuffling' of the group membership list). Even a single core with 2 configs, when the intention was to have 1 config per core could greatly increase the cost of the calculation because of the time taken to move the extra config (which all the other cores have to wait for). The new algorithm was implemented by replacing the total target weight summed over all cores with an appropriate target weight for each redist group (this is group-dependent since not all redist groups necessarily have the same number of cores). All population imbalances are then guaranteed to be be eliminated by config redistribution inside each group. Note for a constant population per core to be maintained, the value of DMC_TARGET_WEIGHT in input must be an integer multiple of the number of cores (as before, non-integer values of DMC_TARGET_WEIGHT are not allowed when using DMC_POPRENORM). Note also that DMC_POPRENORM is not in general recommended because of the population control errors it can theoretically introduce, though in general these are likely to be small. Feature (2) requested by D. Alfe. ---[v2.11.76]--- * gjastrow: added ability to not impose cusp conditions on given particle pairs -- Pablo Lopez Rios, 2012-05-18 This is specified via new "Wave e-e cusp" and "Wave e-n cusp" blocks which live in the "TERM x" blocks. Example: JASTROW: TERM 1: Rank: [ 4, 0 ] Indexing: Maximum sum: 11 All masks: T e-e basis: Type: natural power Order: 6 e-e cutoff: Type: polynomial Constants: [ C: 3 ] Waive e-e cusp: [ 1-3, 3-4 ] Rules: [ 1=2, 3=4 ] NB, given the Rules imposed, the cusps for pairs 1-4, 2-3, 2-4, 3-3, and 4-4 will be waived in addition to those for 1-3 and 3-4. * gbasis: fixed index generation in presence of "All masks" -- Pablo Lopez Rios, 2012-05-18 Also flag standard_indexing more accurately in the presence of "Maximum sum" or "All masks". * exmol: added "exproper" pairing orbital -- Pablo Lopez Rios, 2012-05-18 This is an exponential exp(-a*r) where a is determined by the Kato cusp value. * gbasis: fixed another output format issue -- Pablo Lopez Rios, 2012-05-18 * emin: print S and H matrices when opt_info>3 -- Pablo Lopez Rios, 2012-05-18 * gjastrow: unfixed unbroken argument declaration -- Pablo Lopez Rios, 2012-05-18 * gjastrow: fixed a typo in previous patch -- Pablo Lopez Rios, 2012-05-18 ---[v2.11.69]--- * Added compiler directive to vmc.f90 to stop Cray compiler from miscompiling vmc_random_step_gauss. -- Mike Towler, 2012-05-18 This is an issue with the Cray compiler over-optimising a section of code in function ranx_gaussian called by function vmc_random_step_gauss in file vmc.f90. In the dt_shift<=0.0d0 branch inside this function, there are three calls to ranx_gaussian. The gcc compiler correctly generates three calls correctly while the Cray compiler generates only one call and (incorrectly) uses common subexpression elimination to eliminate the second and third call. The result of this is we always have three same numbers in dr(1),dr(2), and dr(3) after the call while gcc generates three different numbers. Cray are aware of this and are supposedly fixing the compiler. Thanks to Jason Beech-Brandt for bringing this issue to our attention. ---[v2.11.68]--- * gjastrow: allow for cusps to be applied on higher-order terms -- Pablo Lopez Rios, 2012-05-15 This allows users to define proper single-term Boys-Handy style Jastrow factors without having to add an extra term to enforce the cusp conditions. * gjastrow: added Boys-Handy style index limiting -- Pablo Lopez Rios, 2012-05-15 Implemented constraining indices so that their sum is less than or equal to a given value. This is specified via an "Indexing" block containing a "Maximum sum" keyword whose value should be the desired integer. For terms without explicit cut-off functions and whose functional basis includes phi=1 (e.g. one based on "r/(r+a)" powers), specifying this alone should suffice to reproduce other Boys-Handy Jastrow factors. For terms with explicit cutoff functions or whose functional basis does not include phi=1, one needs to force zero-valued indices to appear in the expansion by using setting keyword "All masks" to true in the "Indexing" block. For example, JASTROW: TERM 1: Rank: [ 2, 2 ] e-e basis: [ Type: natural power, Order: 5 ] e-n basis: [ Type: natural power, Order: 5 ] e-n cutoff: Type: polynomial Constants: [ C: 3 ] Indexing: Maximum sum: 9 All masks: T Notice that our convention is to index basis functions starting at one, so the "Maximum sum" value K that can be found in the literature (where basis functions are often indexed from zero) need to be offset by the number of indices in the linear parameters, i.e., "Maximum sum" = K + n*(n-1)/2 + n*m , where [ n, m ] are as defined in the "Rank" block. The expansion orders should be set to "Order" <= K+1 . * gbasis: fixed two issues -- Pablo Lopez Rios, 2012-05-15 Fixed an indexing problem with channel models, and restored the ability to report vector constants in a single line. * gjastrow: fixed empty Jastrow detection when certain terms are present -- Pablo Lopez Rios, 2012-05-15 Moved flagging of fixed coefficient for unit function below check for parameter presence, so that the latter works when the basis contains the unit function and no cut-off is used (e.g., in the "r/(r+a) power" basis, where phi_1=1 and no cut-off is required in finite systems). ---[v2.11.64]--- * Harmonised my definition of the magnetization density in plot_expval with that most commonly used in the literature on noncollinear spins (includes a factor of 2), and modified plot_expval to write out the magnetization directly. -- Neil Drummond, 2012-05-14 My last change to runqmc assumed that the input file is in the directory in which runqmc is run; however, this is not the case when runqmc is used to put multiple jobs on a single job-submission script. ---[v2.11.63]--- * Fixed minor typo in FAQ. -- Mike Towler, 2012-05-11 ---[v2.11.62]--- * Minor change. -- Mike Towler, 2012-05-11 ---[v2.11.61]--- * Replaced logical variables with integers in the config.in files (hopefully in a fully-backwards compatible fashion). -- Neil Drummond, 2012-05-09 ---[v2.11.60]--- * Tried to reduce danger of integer overflows in vmc.f90. -- Neil Drummond, 2012-05-08 ---[v2.11.59]--- * Time-step optimisation was failing for large systems on large numbers of cores due to an integer overflow. Fixed. -- Neil Drummond, 2012-05-07 Corrected check that NEQUIL is large enough to optimise the time step. Following discussion with Pablo, reduced minimum number of equilibration steps required for time-step optimisation. ---[v2.11.58]--- * Sum spin-flip acceptance ratio over nodes. -- Neil Drummond, 2012-05-06 ---[v2.11.57]--- * Modified plot_expval to allow the spin-density matrix to be plotted. -- Neil Drummond, 2012-05-06 ---[v2.11.56]--- * arch: update for Darwin -- Priyanka Seth, 2012-05-04 ---[v2.11.55]--- * Another minor speed up of Jastrow f function. -- Mike Towler, 2012-05-04 ---[v2.11.54]--- * Modifications to allow the spin-density matrix to be calculated. -- Neil Drummond, 2012-05-03 Record acceptance ratio for spin flips in VMC. ---[v2.11.53]--- * Minor change to linuxpc-pgf-parallel.brutus.arch file. -- Mike Towler, 2012-04-29 * Fixed slater.f90 to allow the use of backflow with noncollinear spins. -- Neil Drummond, 2012-04-29 Removed the (apparently unnecessary) trap that prevented the use of emin for noncollinear-spin systems. ---[v2.11.51]--- * Made a couple of changes suggested by NAG. -- Neil Drummond, 2012-04-22 * Got rid of complex varmin_linjas examples from autotest. -- Neil Drummond, 2012-04-22 * For noncollinear-spin calculations, the spin-dependences of u, p, eta, etc. should be zero, because the Jastrow factor and backflow function ought to be fully symmetric. Moreover the antiparallel-spin Kato cusp condition should be imposed. Previously, CASINO imposed the parallel-spin cusp condition. This is now fixed. Tests have been added to check that the spin-dependences are zero where appropriate. -- Neil Drummond, 2012-04-22 ---[v2.11.48]--- * Added remark about Openmp timing to manual. -- Mike Towler, 2012-04-21 ---[v2.11.47]--- * Implemented big increase in speed for standard Jastrow factor evaluation, which can double the speed of the code for large systems with f functions (largely by quadrupling the speed of the f function evaluation). -- Mike Towler, 2012-04-21 For large systems, the cost of calculating the Jastrow f function can be enormous (it takes 60-70% of the CPU time for a VMC test case run by Dario Alfe last year: H atom on a 50 atom graphene slab i.e. 51 atoms, 201 electrons). Now the obvious solution of course is to not use an f function, but for what it's worth I've now implemented a major speedup, at the usual expense of elegance and readability (slaps wrists..). Results for my test case ------------------------ Evaluation of f function (subroutine timers on): 42.34 sec (OLD) --> 11.48 sec (NEW) = 3.69 x speedup Speed of the full calculation (subroutine timers on): 68.59 sec (OLD) --> 36.20 sec (NEW) = 1.91 x speedup Speed of the full calculation (subroutine timers off): 65.39 sec (OLD) --> 33.60 sec (NEW) = 1.95 x speedup Note that this was implemented for 3D Jastrows only. If anyone actually uses the 2D one for large systems, a similar speedup could be implemented relatively easily. ---[v2.11.46]--- * Added a warning about the poor scaling of Jastrow f functions to the manual. -- Mike Towler, 2012-04-21 ---[v2.11.45]--- * Fixed a few g95 complaints. -- Neil Drummond, 2012-04-19 * Updated memory request for Lancaster HEC cluster. -- Neil Drummond, 2012-04-19 ---[v2.11.43]--- * arch: automatically detect dead nodes in TCM cluster -- Pablo Lopez Rios, 2012-04-18 With this patch, runqmc will automatically run on the available number of cores (e.g. 56 cores if node6 is offline, as is often the case), instead of submitting 64-core runs which queue forever. This check will add a ~2 second pause to the process of submitting jobs. * arch: changed linuxpc-ifort-sge-parallel to use Intel instead of GNU C compiler -- Pablo Lopez Rios, 2012-04-18 This is to work around the fact that GCC 4.3 and earlier does not respond to "gcc -v --version" in the same way later versions do, causing a misidentification of the TCM cluster. Also removed the definition of the C++ compiler since icc fails to compile the C++ utility. ---[v2.11.41]--- * bwfdet: fixed missing OpenMP variable declaration -- Pablo Lopez Rios, 2012-04-17 ---[v2.11.40]--- * Initial commit for geminal wavefunction. -- Pascal Bugnion, 2012-04-15 This commit allows users to use a single geminal for the anti-symmetric part of the trial function. Full vmc/vmc_opt/dmc functionality is included. The geminal wavefunction can be specified in the parameters.casl file with the following syntax: GEMINAL : Geminal 1 : Parameters : g_1,1 : [ 1.d0 , fixed ] g_2,2 : [ 1.d0 , optimizable ] ... Constraints : Symmetrize 1 : [ All : (1:19) ] Equate 1 : [ Diagonal : (3:5) ] 1^g_1,1=1^g_2,2 A sample HEG is available under ~casino/documents/pob24. The following changes have been made to the code: In geminal.f90: Too many changes to detail here. BLAS libraries: Added DSYMM and DSYMV routines to those stored with the codebase. Updated the GENERATED file to reflect this. In store.f90: Added logical variable OPT_GEMINAL. In monte_carlo.f90: - In the part that reads PSI_S-specific input, added a call to subroutine READ_GEMINAL if "PSI_S : geminal" is specified. - Defined the boolean keyword "OPT_GEMINAL" linked to the logical variable in store.f90 - Removed 'geminal' from the check on non-implemented PSI_S. In wfn_utils.f90: - Edited the calls to functions in GEMINAL.F90 to reflect additional parameters beyond those that were defined in the stub Pablo had written (things like "isZero" or "isNaN"). - Added a call to routine UPDATE_GEMINAL_CASL to be run after each optimization cycle. In esdf_key.f90: Added help for the keyword OPT_GEMINAL, and edited the "casinohelp" section for PSI_S to reflect the fact that PSI_S : geminal is now a valid input. In runqmc: - Stopped runqmc returning an error if the keyword psi_s has value geminal. - Added keyword opt_geminal, including a check on whether psi_s is set to "geminal". ---[v2.11.39]--- * Minor change. -- Mike Towler, 2012-04-10 ---[v2.11.38]--- * exmol: fixed symmetry analyzer in the presence of multiple particle families -- Jonathan Lloyd-Williams, 2012-04-10 ---[v2.11.37]--- * Updated linuxpc-pgf-parallel.brutus.arch file to include tuned compiler flags and support for GPU profiling. INFORMATION: I have now purchased a copy of PGI GPU accelerator compiler version 12.3 for use on brutus. Due to compiler bugs, the PGI compiler will not compile CASINO for versions 12.2 and previous. Big machines with GPU support, e.g. Jaguar, may not have installed 12.3 yet - if they haven't, ask them to since it doesn't appear possible to bypass the errors (the Jaguar sysadmins have assured me 12.3 will be installed by 'mid-April'). -- Mike Towler, 2012-04-03 ---[v2.11.36]--- * INFORMATION: Openmp support was broken in the publically-released standard version of CASINO (though not the developer version, which is why the developers didn't notice). This was caused by the script which prepares the standard distribution removing some !$OMP directives which it thought were comments. Thanks to NDD for fixing the script. As this is quite important, I have re-released the standard v2.10.1 distribution as v2.10.2 with this one change. For consistency, the developer distribution has been renumbered to be v2.10.2 though in fact it is unchanged from the previous v2.10.1 version. -- Mike Towler, 2012-04-03 ---[v2.11.35]--- * Added a check for negative S-matrix elements in EMIN.F90 -- Pascal Bugnion, 2012-03-29 If the logarithmic derivative of the wavefunction w.r.to electron positions is constant under changes of any of the parameters, the first basis shift in EMIN_MATRIX_ALGEBRA will shift the relevant diagonal matrix elements of the S-matrix to 0. Roundoff errors may make this negative, which is unphysical and causes problems as the subroutine then takes the square root of the diagonal of the shifted S. I have just added a loop over the diagonal of S in EMIN_MATRIX_ALGEBRA that ensures that all negative elements are shifted to 0. ---[v2.11.34]--- * Free fluid orbital normalisation changed. -- Pascal Bugnion, 2012-03-28 The normalisation (i.e., the integral of the square over the unit cell) was inconsistent, giving unexpected (though not technically wrong) results in multi-determinant and geminal VMC calculations. I have changed this so that the square of all orbitals integrates to a constant value. All the changes are localised to the routine FREE_FLUID_ORB_EVAL in the FREE_ORB module. Further details can be found under ~casino/documents/pob24 in TCM. ---[v2.11.33]--- * casl: added longer string length constant for relative paths to CASL items -- Pablo Lopez Rios, 2012-03-27 This should fix a problem where strings got truncated on writing CASL files. ---[v2.11.32]--- * Fixed misplaced trap for off-diagonal scell_matrix elements in setup_expectation_values, encountered by Tim Mueller. -- Neil Drummond, 2012-03-27 0 -> 0.d0 in min_image.f90. ---[v2.11.31]--- * free_orbs: aesthetics -- Pablo Lopez Rios, 2012-03-23 * Allow more orbitals than electrons in FREE_PARTICLES block. -- Pascal Bugnion, 2012-03-23 In free particle calculations, the number of orbitals was inferred from the number of Slater determinants requested and the number of electrons. This is not suitable for geminal or Pfaffian wavefunctions, for which the number of orbitals is independent of the number of electrons. Following discussions with Pablo, it was decided that this would be handled by an additional keyword, "n_orbitals", in the FREE_PARTICLES block. The changes to the code are as follows: In monte_carlo.f90: - Extended the FREE_ORBITALS routine to read the n_orbitals keyword into the variable FREE_NORB (from the free_orbs module). In free_orbs.f90: - Made the FREE_NORB variable public, and added a logical flag HAVE_VIRTUAL that is set to .true. if there are virtual orbitals defined. The presence of the flag is not strictly necessary, as it can be replaced by (FLUID_EX_NORB>0) in every instance. I find that having this variable cached seems to make a (small but measurable) difference in efficiency. - Extended HEG_FLUID_SETUP to fill in the arrays VIRTUAL_K, VIRTUAL_KVEC, VIRTUAL_KVECSQ and VIRTUAL_USE_REAL if there are more virtual orbitals not resulting from a multi-determinant expansion. - Altered FREE_FLUID_ORB_EVAL so that virtual orbitals are filled in whenever they are present (subject to the mask array etc.). In wfdet_basis.f90: - In GET_WFDET_ORBMAP (which, rather perversely is the routine that fills in WFDET_NORB), I commented an ERRSTOP assertion related to orb_maps. ---[v2.11.29]--- * gbasis: removed workaround for gfortran bug with varying-string vector copying -- Pablo Lopez Rios, 2012-03-21 * iso_varying_string: stop using varying strings, except in casl.f90 -- Pablo Lopez Rios, 2012-03-21 - Purged varying_string from gjastrow, gbasis, numerical and format_utils - Removed dependency on iso_varying_string from utilities (pulled in via format_utils) - In CASL, removed varying_string versions of {get,set}_casl_item, changed varying_string arguments of unique_casl_string and first_unread_child to character strings, and defined public constants CASL_{KEY,VAL}SIZE to help other modules transition to character data types. Have kept varying_string in virtual_line and casl_item definitions, as well as for physically reading the .casl file, so this change hasn't added line/string-length restrictions. - Updated Makefiles After this patch, a calculation that was using 3.6GiB of memory per core after setup requires only 230MiB. Obviously the largest part of this massive leak problem has been fixed, but more varying_string removals may be required in the future if what remains is found to be problematic. ---[v2.11.27]--- * src/Makefile: updated -- Pablo Lopez Rios, 2012-03-16 ---[v2.11.26]--- * slater: move q_one definition from store and allocation from monte_carlo -- Pablo Lopez Rios, 2012-03-16 * format_utils: fixed typo -- Pablo Lopez Rios, 2012-03-16 * gbasis_noopt: added module -- Pablo Lopez Rios, 2012-03-16 The gbasis_noopt module contains routines which are sensitive to loss of numerical precision caused by aggressive compiler optimization. Hoping for improved numerics, reverted to 1e-10 relative tolerance in Gaussian elimination. In the process also did the following: - Added code to differentiate F90 files named *_noopt.f90 from rest in build-tools/update-makefile-tool. - Files named _noopt are now compiled with FFLAGS_NOOPT instead of FFLAGS_$(VERSION) in src/Makefile. - Updated build system to support FFLAGS_NOOPT (which is never set to anything other than '-O0' anyway, like FFLAGS0_libs). ---[v2.11.23]--- * Added linuxpc-pgf-parallel.brutus CASINO_ARCH for my development machine with support for GPU acceleration. -- Mike Towler, 2012-03-15 ---[v2.11.22]--- * gbasis: fixed bug affecting spin-polarized systems -- Pablo Lopez Rios, 2012-03-09 ---[v2.11.21]--- * gbasis: increase tolerance for relative/absolute zeroes in Gaussian elimination -- Pablo Lopez Rios, 2012-03-09 ---[v2.11.20]--- * gjastrow: inconsequential changes -- Pablo Lopez Rios, 2012-03-09 * gjastrow: fixed crash-inducing typo -- Pablo Lopez Rios, 2012-03-09 ---[v2.11.18]--- * pjastrow: gen_gjastrow can now handle W term -- Pablo Lopez Rios, 2012-03-08 This uses the new "natural polynomial vectorial" basis, with the original polynomial in the W term as the single chunk of the gjastrow basis functions. Also fixed spin dependency conversion for U and P terms. * gbasis: added "natural polynomial" and "natural polynomial vectorial" bases -- Pablo Lopez Rios, 2012-03-08 In "natural polynomial", each basis function is a chunk of a polynomial of the requested size. E.g., e-e basis: Type: natural polynomial Order: 3 Constants: k0: 1 Split: [ 3, 1, 4 ] Parameters: Channel 1-1: c_2: [ -1.27167184885013, optimizable ] c_3: [ 1.00389113439664, optimizable ] c_6: [ 0.183413917250347, optimizable ] c_7: [ -3.965712320960453E-002, optimizable ] c_8: [ 3.836445668934829E-003, optimizable ] specifies a polynomial with 8 powers of r (3+1+4 from the values in "Split") starting at r^1 (as given by k0), split into three chunks (since "Order" is 3, which must match the number of components in "Split"), each of which becomes a basis function: - the first 3 powers: phi_1 = r^1 + c_2*r^2 + c_3*r^3, - the next 1 power: phi_2 = r^4 - the next 4 powers: phi_3 = r^5 + c_6*r^6 + c_7*r^7 + c_8*r^8 Notice that the first power in each chunk has coefficient 1 - this is so that there are no redundancies when the linear parameters are applied. The index in the name of a parameter ("c_i") matches the exponent of the power of r it multiplies (r^i). In "natural polynomial vectorial", the above basis functions are multiplied by x/r, y/r and z/r. E.g., the equivalent of the above is: e-e basis: Type: natural polynomial vectorial Order: 9 Constants: k0: 1 Split: [ 3, 1, 4 ] Parameters: Channel 1-1: c_2: [ -1.27167184885013, optimizable ] c_3: [ 1.00389113439664, optimizable ] c_6: [ 0.183413917250347, optimizable ] c_7: [ -3.965712320960453E-002, optimizable ] c_8: [ 3.836445668934829E-003, optimizable ] which would give the following basis functions phi' related to the phi of the example above: - phi'_1 = phi_1 x/r - phi'_2 = phi_1 y/r - phi'_3 = phi_1 z/r - phi'_4 = phi_2 x/r - phi'_5 = phi_2 y/r - phi'_6 = phi_2 z/r - phi'_7 = phi_3 x/r - phi'_8 = phi_3 y/r - phi'_9 = phi_3 z/r The "Order" specified has to be adjusted by a factor of three to account for the dimensionality of the system. This vectorial version is suitable for dot products. Also relabeled internal basis functions identifiers for conciseness and consistency. * gjastrow: reimplemented symmetry handling -- Pablo Lopez Rios, 2012-03-08 - Treat indices, spin-dependencies and basis functions as matrices, such that the basic symmetry operation of interchanging particles or nuclei corresponds to a row/column swap in all of these simultaneously (dropping the incorrect assumption that any two-index swap corresponds to a set of particle/nuclei exchanges, which breaks for e-e-e-e, e-e-n-n [with the exception of the special Van der Waals term] and bigger). - Redefined the signature of a channel as the vectorization of the matrix-sorted spin-dependency matrices (instead of the vector-sorted vectorization of the spin-dependency matrices). - Report basis symmetry properties (even/odd/non-symmetric) from read_e{e,n}_basis, and add proper support for antisymmetric basis functions. - Extended this new scheme to channel generation, signature matching, symmetry- and cusp-constraints generation. - Fix antisymmetric function evaluation and storage so that only one of the two possible signs is used. - Skip unnecessary signature generation and channel lookups during evaluation. The new signature generation is slower than previously, adversely affecting the evaluation of e-e-e terms and larger. By skipping signature generation when not required, the previous evaluation speed is restored, when not improved. - Removed pretty-much-useless internal 'sigrange' feature. * numerical: added integer matrix sorting routines -- Pablo Lopez Rios, 2012-03-08 SORT_MATRIX_RECT sorts a rectangular matrix with respect to row and column exchanges. The result is such that the concatenation of the columns of the sorted matrix would come first by collational order compared to any other row and/or column rearrangement of the original matrix. SORT_MATRIX_SYMM sorts a symmetric matrix with respect to (symmetry-preserving) row+column exchanges. The result is such that the concatenations of the columns of the lower-triangular portion of the matrix would come first by collational order compared to any other row+column rearrangement of the original matrix. These routines expose additional arguments so that multiple calls can be daisy-chained to sort multiple matrices using the same permutations. Matrices after the first call will only modify a previous sort where multiple possibilities exist due to the presence of repeated elements. The full set of all possible permutations that cause a matrix (or group of matrices) to be sorted can be obtained by calling AMB2CAND_SORT_MATRIX_{RECT,SYMM} with the output from SORT_MATRIX_{RECT,SYMM} (which condense their output to avoid factorial memory usage). These routine are intended for use by gbasis.f90. ---[v2.11.14]--- * Fixed multiple instances of calling errstop instead of errstop_master in recent modifications to gaussians.f90 (plus some format tidying). -- Mike Towler, 2012-03-03 ---[v2.11.13]--- * gjastrow: fixed repeated typo -- Pablo Lopez Rios, 2012-03-03 * gaussians: move computation of band_occupancy inside jspin loop so arrays exist [fixed spin-polarized periodic Gaussians broken since v2.9.381]. -- Pablo Lopez Rios, 2012-03-03 band_occupancy was being miscalculated for spin-polarized periodic Gaussians due to spin-dependent arrays being used outside the loop over spins. band_occupancy is only actually used for GPCCs, but the consistency check for band_occupancy would trigger an error that prevented running spin-polarized periodic Gaussian calculations even without GPCCs. * gaussians: skip assignment if array index is zero. -- Priyanka Seth, 2012-03-03 ---[v2.11.10]--- * Updated arch/data/machine/jaguar-xk6.arch and doc/MACHINES file to reflect change in ORNL Jaguar XK6 scheduling policy. -- Mike Towler, 2012-03-02 ---[v2.11.9]--- * Added trap for nuc_nele>aw_nele in awfdet.f90. -- Neil Drummond, 2012-03-02 ---[v2.11.8]--- * Following discussion with NDD, decided *not* to recommend routine use of the T-move scheme. Therefore adjusted the 2.11.7 text in esdf_key and the manual accordingly. It now reads: -- Mike Towler, 2012-02-24 "If USE_TMOVE is T then the Casula nonlocal pseudopotential scheme will be used in DMC. So-called 'T-moves' will be performed in order to give a DMC energy that is greater than or equal to the ground-state energy. This violates the detailed-balance principle at finite time steps, but greatly improves the stability of the DMC algorithm when nonlocal pseudopotentials are used. The advantages of T-moves are that they restore the variational principle and prevent population explosions; the disadvantages of T-moves are that the magnitude of the locality approximation is generally larger (although always positive) and time-step bias is worse. Because of these disadvantages, the default of USE_TMOVE is F and we tend *not* to use them unless we face stability issues." ---[v2.11.7]--- * Improved the rather terse description of USE_TMOVE in esdf_key.f90. -- Mike Towler, 2012-02-22 ---[v2.11.6]--- * Updated description of molorbmods in the manual. -- Mike Towler, 2012-02-22 Also updated question D5 of the FAQ to include information about how to manually fix the problem with the CRYSTAL06/09 converters addressed in patch 2.11.5. ---[v2.11.5]--- * CASINO was giving the wrong energy when calculating spin-polarized molecules with gwfn.data files derived from CRYSTAL06 or CRYSTAL09. Fixed. -- Mike Towler, 2012-02-22 The converters in utils/wfn_converters/crystal0[6,9] were broken for a period of several years. The error was introduced in patch 2.4.41 (July 2009) and only fixed now in Feb 2012 (I have backfixed this into the official 2.10 release). The essence of the problem was that the block of orbital coefficients for the down-spin orbitals was incorrectly just a copy of those for the up-spin-orbitals, rather than being the correct down-spin ones. Note that the problem applied only to non-periodic systems. Apologies for our having taken so long to notice this. ---[v2.11.4]--- * Varmin_Linjas is only implemented for real wave functions. Added a trap for COMPLEX_WF=T. -- Neil Drummond, 2012-02-22 ---[v2.11.3]--- * Fixed typo in doc/MACHINES. -- Mike Towler, 2012-02-22 ---[v2.11.2]--- * Fixed typo in gaussians.f90. -- Mike Towler, 2012-02-22 ---[v2.11.1]--- * Updated CHANGES, README, and doc/changelogs for new series. -- Mike Towler, 2012-02-22 ---[v2.11.0]--- * Created new 2.11 series. -- Mike Towler, 2012-02-22 List of changes in v2.9 series ------------------------------ Released as CASINO v2.10 (15/2/2012). ---[v2.9.674]--- * Minor change to FAQ. -- Mike Towler, 2012-02-16 ---[v2.9.673]--- * Minor change to runqmc to allow PWSCF parallelization flags introduced in patch 2.9.667 to be used as arguments to the runqmcmd molecular dynamics script and the twistav_pwscf twist-averaging script. -- Mike Towler, 2012-02-16 ---[v2.9.672]--- * Added some .arch files for Imperial College: linuxpc-intel-parallel.imperial-cmth-mkl linuxpc-intel-parallel.imperial-cmth -- Mike Towler, 2012-02-16 ---[v2.9.671]--- * The entire CASINO pseudopotential library had ceased functioning with the CRYSTAL09 program - because of a very minor format change the CRYSTAL authors made to accommodate the possibility of g functions. I have therefore changed all the zillion files in the online pseudopotential library, and in the CASINO examples, to reflect this change. The modified pseudopotential files will work both with CRYSTAL09 and with older versions of CRYSTAL. Note that all CRYSTAL input files all around the world associated with CASINO will now be broken, and people will have to update them, which is kind of boring. To publicize this I have updated the manual, the FAQ, the CHANGES file, and the online library. See in particular the CASINO FAQ question D4 for a detailed discussion of what you need to do. -- Mike Towler, 2012-02-15 ---[v2.9.670]--- * Some statements in expot.f90 were longer than 80 characters. Introduced wordwrap where appropriate (and in a couple of other modules). -- Neil Drummond, 2012-02-15 ---[v2.9.669]--- * pwfdet,bwfdet: removed redundant real orbital indexing (pointed out by NDD). -- Priyanka Seth, 2012-02-13 ---[v2.9.668]--- * Further update to runpwscf script. -- Mike Towler, 2012-02-13 ---[v2.9.667]--- * Added fine-grained control over PWSCF parallelism to runpwscf script. One may now specify the number of images, pools, task groups, and linear algebra groups on the runpwscf command line, using new --image, --npool, --ntg, and --ndiag flags. Type 'runpwscf --help' (on a parallel machine) for detailed instructions on what this actually means. -- Mike Towler, 2012-02-13 ---[v2.9.666]--- * autotest: updated psh example to account for JRT's latest patch -- Pablo Lopez Rios, 2012-02-12 ---[v2.9.665]--- * Undid changes to indexing of real blip orbitals introduced in 2.9.645, apart from the gamma_only case, which is now indexed the same way as the complex case. -- Neil Drummond, 2012-02-12 To summarise recent changes to this: 1. Complex indexing was broken prior to 2.9.645. Hence excitations were broken for both real and complex wave functions (since real wave functions require the complex orbitals). 2. In patch 2.9.645 we fixed both (i) complex indexing and (ii) real indexing for the Gamma-only case, but broke real indexing for the non-Gamma-only case. 3. In patch 2.9.654 I fixed real indexing for the case where no orbitals were occupied at just one out of k and -k. But it was still broken for cases where orbitals were occupied at k but not at -k. 4. Here I undo the breaking of real indexing for the non-Gamma-only case in 2.9.645. This necessitates separating off the Gamma-only case. Hopefully that makes sense... ---[v2.9.664]--- * gaussians: fixed parameter optimisation; use parameter redundancy -- John Trail, 2012-02-11 * gaussians: fixed regression caused by 2.9.611 -- Pablo Lopez Rios, 2012-02-11 Patch 2.9.611 intended to fix EMIN with cusp-corrected Gaussian orbitals when optimizing orbital modifications in parallel runs, but it didn't, and caused a regression outside optimization for this case. The regression is now fixed. The original EMIN problem should be fixed too (provided the concept of 2.9.611 is sound). * gjastrow: increase default expansion orders of e-e and e-n terms to 9 -- Pablo Lopez Rios, 2012-02-11 ---[v2.9.661]--- * varmin: fixed bug in computing weight variance (print-out only) -- John Trail, 2012-02-11 * energy_utils: fixed initialization issue -- John Trail, 2012-02-11 ---[v2.9.659]--- * pwfdet,bwfdet: allocation fix for multidet systems. -- Priyanka Seth, 2012-02-10 ---[v2.9.658]--- * Formatting. -- Mike Towler, 2012-02-09 * Partially fixed updating of rorbidx in bwfdet.f90 for multideterminant calculations. The handling of phase angles for blip orbitals occupied at k but not -k is broken, however. -- Neil Drummond, 2012-02-09 ---[v2.9.656]--- * Got rid of the background fill from plot_reblock and graphit. Set y-axis minimum to zero in plot_reblock. -- Neil Drummond, 2012-02-09 ---[v2.9.655]--- * Fixed allocation problem with lkedge vector in previous patch. -- Mike Towler, 2012-02-09 ---[v2.9.654]--- * Fixed bug in updating of rorbidx counters (blip module). -- Neil Drummond, 2012-02-09 ---[v2.9.653]--- * arch: more compatible defaults for PBS queues, fixes for Jade CASINO_ARCH. -- Pablo Lopez Rios, 2012-02-09 ---[v2.9.652]--- * arch: added CASINO_ARCH linuxpc-ifort-impi-pbs-parallel.jade for Jade at CINES. -- Pablo Lopez Rios, 2012-02-08 ---[v2.9.651]--- * lib: fixed problem with compiling against external linear algebra libraries. -- Pablo Lopez Rios, 2012-02-08 ---[v2.9.650]--- * Fixed minor bug in clearup relating to .runqmc.lock files. -- Neil Drummond, 2012-02-08 ---[v2.9.649]--- * Minor adjustments to gcc and cray *hector3.arch files. -- Lucian Anton, 2012-02-07 ---[v2.9.648]--- * alloc_shm.c: removed AFFINITY code -- Pablo Lopez Rios, 2012-02-07 Also removed the code from the SHM test in arch_info.sh. ---[v2.9.647]--- * Final set of changes to documentation etc. for 2.10 release candidate 2. -- Mike Towler, 2012-02-07 ---[v2.9.646]--- * install: added functionality and fixes -- Pablo Lopez Rios, 2012-02-07 Includes: - Ability to list details of CASINO_ARCHs during autodetection. - Added prompt about emailing new CASINO_ARCH to developers. - Added prompt for CFLAGS_OPENMP_yes in compiler flag review mode. - Removed tip about C compiler allowing SHM when TYPE=single. ---[v2.9.645]--- * Blip excited state calculations had ceased to function. Now fixed (this is my completion of an earlier partial patch by NDD). -- Mike Towler, 2012-02-07 ---[v2.9.644]--- * Keeping a complete list of all CASINO users in the doc/CASINO_USERS file is probably against some data protection act or other, and since many CASINO users are nerdy-geek types who know about such things, it's probably best to remove it from the distribution. So I have. -- Mike Towler, 2012-02-06 ---[v2.9.643]--- * Altered warning in bwfdet.f90. -- Mike Towler, 2012-02-06 ---[v2.9.642]--- * arch: consistency and fixes -- Pablo Lopez Rios, 2012-02-06 - Renamed CFLAGS_etime to CFLAGS_ETIME for consistency with CFLAGS_SHM. - Fixed CFLAGS_OPENMP_yes handling: - Amended variable list in arch/README, arch/taglib.sh and data/syntax/vim/arch.vim to support CFLAGS_OPENMP_yes and {F,C,LD}FLAGS_OPENMP_no - Added CFLAGS_OPENMP_yes to arch/data/cc/*.arch. - Added CFLAGS_OPENMP_yes to machine-specific .arch files which define their own FFLAGS_OPENMP_yes (under the assumption that the flags will be the same for the Fortran and C compilers). - Remove CC, CXX from files in arch/data/f90. - Fixed typo in intelmac-gcc description. - Added arch/data/{f90,cc,cxx}/cray.arch for the Cray compiler suite. - Added -h/-help/--help output and exit status to integration info from install script. - Added input redirection to compiler tests so the compiler doesn't try to be interactive (after finding a compiler "usefully" opening a manpage when invoked with --version). * runqmc: -l and -1 now trigger an error when cross-compilers are in use -- Pablo Lopez Rios, 2012-02-06 * runqmc: use --user.var instead of --user.VAR for convenience/aesthetics -- Pablo Lopez Rios, 2012-02-06 Modified other parts of the distribution to document this correctly. ---[v2.9.639]--- * arch_info.sh: --gen offered OpenMP support choices "yes" and "yes" - fixed -- Pablo Lopez Rios, 2012-02-06 ---[v2.9.638]--- * Added details of user-definable options to manual. -- Mike Towler, 2012-02-06 If you type 'runqmc --help' you may see appended to the regular option list a set of additional user-definable options - these all take the form of '--user.option' (and obviously a CASINO_ARCH must be defined in order to see these). Such options are defined in the relevant .arch file using the syntax of Appendix 5 of the manual. The arch system was designed to be readily extensible on a per-machine basis without having to modify any part of the script system that handles it, and thus only variables associated with core functionality are pre-defined, e.g. even the (widely applicable but Linux-specific) nice value of a job on a workstation is handled as --user.nice. [A list of such options follows]. ---[v2.9.637]--- * Extended descriptions of new --user.shmemsize options in the two Blue Gene arch files. -- Mike Towler, 2012-02-06 ---[v2.9.636]--- * Spelling. -- Mike Towler, 2012-02-06 ---[v2.9.635]--- * Updated the FAQ to reflect patch 2.9.629. -- Mike Towler, 2012-02-06 ---[v2.9.634]--- * Extended descriptions of new --user.messagesize options in the two Blue Gene arch files. -- Mike Towler, 2012-02-06 * install: fixed not ignoring output from compiled executables in tests -- Pablo Lopez Rios, 2012-02-06 Properly implement the system for ignoring output produced by compiled executables, which affected C and C++ compilation tests where ignoring output had explicitly been requested and C cross-compiler tests. This system now allows independently ignoring output for the cross-compiler and native compiler by explicit request and applies the setting to C and C++ compilers too. This should fix problems reported by MDT on two different machines. * install: bugfixes -- Pablo Lopez Rios, 2012-02-06 This includes fixes to a series of issues reported by MDT: - Fixed duplicate entries on re-running autodetection. - Reworded 'compile' prompt: mention of and removed, added instead. - Reworded output to stop claiming to know which MPI version a cross-compiler uses. - Rewritten all COMMAND_CHECK_{F90,CC}* to handle potential wrapper noise, fixing autodetection of certain compilers. Also check for exit status of --version|-v|-V commands when possible to avoid false positives. - Reworded COMMAND_CHECK_* mismatch message when --explain-all is used. - Fixed bash error message after choosing to add first CASINO_ARCH from automatic detection. Also included: - Added support for GNU C and C++ compilers with LLVM, and coded proper LLVM detection for these and their Fortran counterpart. - Print "1 match" not "1 matches" in automatic detection progress report. * src/Makefile: fixed typo in comment -- Pablo Lopez Rios, 2012-02-06 * runqmc: reverted v2.9.580 -- Pablo Lopez Rios, 2012-02-06 Rationale: short-style options in runqmc do not support optional arguments to avoid ambiguities in some circumstances, while long-style options do. Option --shmem optionally takes an integer argument, and its short-style counterpart could either take a compulsory integer argument or assume the default. Since the long-style option exists to offer the functionality, it makes most sense for the short-style option to work not take an argument to make the most of its shortness. * arch: reimplemented patches v2.9.581-583 using &USER.*& variables -- Pablo Lopez Rios, 2012-02-06 Also removed some definitions covered by default values from Challenger and Intrepid .arch files. Rationale: the arch system was designed to be readily extensible on a per-machine basis without having to modify any part of the script system that handles it. Only variables associated with core functionality are pre-defined, e.g., even the (widely applicable but Linux-specific) nice value of a job on a workstation is handled as &USER.NICE&. "shmemsize" and "messagesize" obviously do not fall in the "core" category. * taglib.sh: fixed missing IFS restore -- Pablo Lopez Rios, 2012-02-06 * CASINO_ARCH linuxpc-cray-pbs-parallel.jaguarpf now requires NEED_ETIME=yes following recent Jaguar revamp. Fixed. -- Mike Towler, 2012-02-04 ---[v2.9.626]--- * Removed another example of the 'do i=1,huge(1)' method of doing infinite do loops in quad_fit.f90 - since the Cray compiler won't accept this. Also corrected a couple of typos in arch/arch_info.sh. -- Mike Towler, 2012-02-04 ---[v2.9.625]--- * Fixed minor typoes in the install script. -- Mike Towler, 2012-02-04 ---[v2.9.624]--- * Modified ve_helper so that it will not be perturbed by missing error bars. -- Neil Drummond, 2012-02-03 ---[v2.9.623]--- * install: navigation, cross-compilers, SHM/BLAS/LAPACK automation -- Pablo Lopez Rios, 2012-02-03 - Added 'IMPORTANT' warnings at beginning of guided configuration - Implemented meta-menu with ability to go back to an earlier configuration step and abort guided configuration; pressing Ctrl-D at an empty prompt invokes the meta-menu; many user-provided data are remembered when prompted for the second time - De-implemented automagic MPI library search facility. This made it easy to produce non-working configurations due to factors not taken into account. - Added undocumented --debug-compiler option (applicable to both arch_info.sh and install) to help with automated compiler tests. - Added cross-compiler support. - Added ability for the user to explicitly decide if their MPI library (e.g. HP-MPI) requires mpirun (or its differently-named equivalent) to run binaries compiled against it. - Added ability to carry on with the guided configuration mode ignoring problems with automated compiler tests, which should be useful in the event of idiosincratic set-ups. - Fixed minor problem where some results from automated ETIME check could be ignored. - Reuse Fortran MPI configuration with the C compiler. - Automated SHM configuration, now correctly indicating that this needs an MPI wrapper around the C compiler as well. - Removed unneeded CXX*_NATIVE variables from arch system. - Added required CFLAGS_F90_INTERFACE_NATIVE variable to arch system. - Removed ability for installer to allow configuration of C/C++ flags and of external BLAS/LAPACK - there's little to no point in tweaking these in general, and their presence only increase the potential for disaster. - Added check for BLAS/LAPACK inclusion by Fortran wrapper. - Added install option to specify the name of a CASINO_ARCH to add to the machine's configuration, even if it does not match the machine's specification (there are obvious problems this may cause; but the user is warned about them). * arch: added CASINO_ARCH=linuxpc-gnu-llvm-parallel. -- Pablo Lopez Rios, 2012-02-03 This adds support for GCC with the LLVM backend (dragonegg GCC plug-in). * lib: minor cosmetic change to Makefile. -- Pablo Lopez Rios, 2012-02-03 * manual/src/Makefile: do not trigger make error on inability to make manual. -- Pablo Lopez Rios, 2012-02-03 * gbasis: fixed blatant omission in basis-sharing handling. -- Pablo Lopez Rios, 2012-02-03 The code would crash if the same e-e or e-n functional basis was used for different gjastrow terms, and the expansion order of the term encountered second was greater than that of the term encountered first. Now fixed. * Trailing whitespace fixes. -- Pablo Lopez Rios, 2012-02-03 * Changes. -- Mike Towler, 2012-02-03 * Revert "The 'install' script does not support cross-compilers." -- Pablo Lopez Rios, 2012-02-03 This reverts the temporary patch 2.9.597 (commit 9ff0abe..) since I've now implemented this. ---[v2.9.615]--- * Fixed a large number of errstop --> errstop_master and other formatting issues in bwfdet.f90. -- Mike Towler, 2012-02-03 ---[v2.9.614]--- * Changed errstop --> errstop_master in mdet.f90/read_tokens. -- Mike Towler, 2012-02-03 ---[v2.9.613]--- * Added the answer to the following question to the CASINO FAQ: "B9. How come binary blip wave function files (bwfn.data.bin or b1) produced in different ways for the same system have very different files sizes?" -- Mike Towler, 2012-02-03 The answer is: The authors of the various interfaces between CASINO and plane-wave codes such as PWSCF/CASTEP/ABINIT make different assumptions about which unoccupied orbitals should be included in the file. For example, with CASTEP/ABINIT you always have to produce a formatted pwfn.data file as a first step, then this must be transformed into a formatted blip bwfn.data file using the blip utility, then when this is read in by CASINO, this will be transformed into a much smaller bwfn.data.bin file (if keyword WRITE_BINARY_BLIPS is T, which is the default). With PWSCF, you may produce any of these files (pwfn.data, bwfn.data or old format bwfn.data.b1) directly with the DFT code without passing through a sequence of intermediaries. In the CASTEP case, the unstated assumption is that the formatted file is kept as a reference (either pwfn.data or the larger bwfn.data depending on whether disk space is a problem) and that this contains all the orbitals written out by the DFT code. When converting to binary, only the orbitals occupied in the requested state are written out. If later, you want to do a different excited state, then the bwfn.data.bin file should be regenerated for that state. In the PWSCF case, because the formatted file need never exist, then all orbitals written by the DFT code are included in the binary blip file (old format bwfn.data.b1) including all unoccupied ones. Thus these files can be considerably larger than ones produced through the ABINIT/CASTEP/blip utility/CASINO route. In general one should control the number of unoccupied orbitals in the blip file through some parameter in the DFT code itself. For example, you might try the following: CASTEP : Increase 'nextra_bands' to something positive. Note that CASTEP has a help system just like CASINO's casinohelp. Type 'castep -help nextra_bands'. PWSCF : Play with the 'nbnd' keyword. ABINIT : Play with the 'nband' keyword. See http://www.abinit.org/documentation/helpfiles/for-v6.8/input_variables/varbas.html#nband Note that it is planned to tidy this system considerably in a future release of CASINO (including making the blip utility write in binary directly from the pwfn.data, without bwfn.data ever having existed). ---[v2.9.612]--- * Added autotest example input for PsH and emin with orbmods and standard cusp corrections. -- Mike Towler, 2012-02-03 ---[v2.9.611]--- * Code was crashing in emin when doing Gaussian cusp corrections with orbmods. Caused by need to recompute cusp correction after changing shape of the orbitals. By default this is done in parallel with subsets of the cores doing different orbitals/nuclear positions etc. However, the requirement to recompute the cusp is not universal over all cores, and so the mpi_allreduces in cusp_setup were clashing with mpi_allreduces in emin and blowing up with mismatched vector sizes. Solution: don't parallelize cusp corrections when they're being recomputed on the fly with USE_ORBMODS activated (but retain the parallelization when doing ordinary calcs). -- Mike Towler, 2012-02-03 ---[v2.9.610]--- * Gaussian molecular orbital modifications were not working when combined with gpcc corrections because of a problem with GAUSS_ORBMASK. Fixed. -- Mike Towler, 2012-02-02 ---[v2.9.609]--- * Translated the input files for examples/TEST/Input/psh series (H- and positron) into the proper modern style, and added titles etc. -- Mike Towler, 2012-02-02 ---[v2.9.608]--- * Minor edit to runqmc. -- Mike Towler, 2012-02-01 ---[v2.9.607]--- * The ve utility (used for extracting energies etc. from VMC output files) was crashing if the output file was produced with VMC_NTWIST>0. Now fixed. -- Mike Towler, 2012-01-31 ---[v2.9.606]--- * Clarified the definitions of VMC_NTWIST and VMC_NBLOCK in monte_carlo.f90, esdf_key and the manual to make it clear that the value of VMC_NBLOCK is ignored during internal twist-averaging [recalling that the internal averaging can only be done for electron(-hole) fluid phases]. -- Mike Towler, 2012-01-31 ---[v2.9.605]--- * Fixed typoes in the definition of VMC_NTWIST in esdf_key.f90. -- Mike Towler, 2012-01-30 * alloc_shm.c : added error checks for two malloc calls; string concatenation simplified. -- Lucian Anton, 2012-01-30 ---[v2.9.603]--- * Another unused variable. -- Mike Towler, 2012-01-30 ---[v2.9.602]--- * Removed unused variable from energy_utils.f90. -- Mike Towler, 2012-01-30 ---[v2.9.601]--- * The rvec vector was mistakenly passed through to the Gaussian evaluation routines in gauss_per_cusp.f90 and gauss_per_cusp_bf.f90. Fixed. -- Mike Towler, 2012-01-30 ---[v2.9.600]--- * Rewrote infinite loop written as 'do i=1,huge(1)' in blip utility - since the Cray compiler doesn't like it. See also 2.9.259. -- Mike Towler, 2012-01-30 ---[v2.9.599]--- * Minor change to .gitignore file. -- Mike Towler, 2012-01-30 ---[v2.9.598]--- * Moved int2log and log2int functions from numerical.f90 to format_utils.f90 module. -- Mike Towler, 2012-01-30 ---[v2.9.597]--- * The 'install' script does not support cross-compilers (that is, different Fortran compilers on login and compute nodes). It will be updated by PLR to do so at some point. However, in the meantime, its method of not supporting cross compilers is very confusing, in the sense that it will just sit there repeatedly iterating through a 'The Fortran compiler does not work' infinite loop. I have therefore modified it, so that when it detects the Fortran compiler does not work, it will ask the user if there is a cross-compiler on the machine. If the answer is affirmative it will offer the following advice, then carry on as normal. -- Mike Towler, 2012-01-30 "The install script does not yet support cross-compilers and the bit of the arch file that refers to them will need to be defined manually. This will hopefully be changed shortly. You should therefore continue the install procedure as normal from this point, and you should end up with a .arch file that will compile CASINO, but it will not compile the utilities that are to be used on the login nodes. On completion of this script you should then adjust the resulting .arch file manually to define the properties of the cross compiler. In order to do this you should read the stuff in CASINO/arch/README (or Appendix 5 of the manual) - search for the word 'native' and define the relevant environment variables that it specifies there. Examples of similar .arch files in the CASINO/arch directory are given by anything with 'hector','jaguar','challenger' or 'intrepid' in the filename. See e.g. linuxpc-pgf-pbs-parallel.hector3.arch and look for the bit at the bottom about 'Stuff for compiling utilities with native compiler'. I will continue, assuming that the name of the Fortran compiler given above is the appropriate compiler on the compute nodes, which this script is not able to test. You should control-C exit if this is not the case." ---[v2.9.596]--- * Minor documentation. -- Mike Towler, 2012-01-30 ---[v2.9.595]--- * Fixed typo. -- Mike Towler, 2012-01-30 ---[v2.9.594]--- * Added the answer to the following question to the CASINO FAQ. -- Mike Towler, 2012-01-30 "To use CASINO in shared memory mode on a Blue Gene system, I need to set (at runtime) an environment variable BG_SHAREDMEMPOOLSIZE to be the size of the shared memory partition. How do I do this, why do I need to do it, and what value should I set it to?" To anyone who has been following progress on Intrepid, there was a suggestion that shared memory on this machine didn't work at all. However, this turned out to be because the failing calculations were done with a bwfn.data.bin file produced from an old-format bwfn.data.b1 with an earlier buggy version of the code. If the bin file is deleted and regenerated with the current code, then everything appears to work as expected. ---[v2.9.593]--- * Fixed typo. -- Mike Towler, 2012-01-30 ---[v2.9.592]--- * Implemented better way of doing patch 2.9.590. In the case of a git-cloned repository without a DIARY file, the DIARY will now be wholly reconstructed from the git log back to the latest patch in doc/changelogs (thus avoiding the need to carry around a full copy of the DIARY and change it in every commit). This will lose any spelling corrections and other formatting done by the maintainer on the DIARY file, but that doesn't matter, since the few people who work with git-cloned repositories probably only read the git log anyway. The DIARY file that goes into the public .tar.gz distribution files will always be the properly-corrected one (since in that case only the descriptions of the most recent commits that have never been pushed to the repository are pulled from the git log, when the maintainer publishes the changes). -- Mike Towler, 2012-01-30 ---[v2.9.591]--- * Fixed problem with FFLAGS_all in the BLAS Makefile (already correct in the Lapack one). -- Mike Towler, 2012-01-29 ---[v2.9.590]--- * My recent patch 2.9.577 allowing the DIARY to be edited by the maintainer did not allow the DIARY to be updated if it didn't exist already (as it won't if the distribution is git cloned directly from the repository, as opposed to picking up the tar.gz file). Fixed. -- Mike Towler, 2012-01-29 ---[v2.9.589]--- * Upgraded Jaguar arch file to reflect entry into phase 5 (299008 cores). -- Mike Towler, 2012-01-28 ---[v2.9.588]--- * Fixed mistaken attribution in DIARY file. -- Mike Towler, 2012-01-27 ---[v2.9.587]--- * Intrepid and Challenger Blue Gene/P systems are in fact capable of using MPI-2 (despite an earlier belief to the contrary possibly arising from experience with other Blue Genes). Updated the .arch files to reflect this. -- Mike Towler, 2012-01-27 ---[v2.9.586]--- * Another minor update to the DIARY file. -- Mike Towler, 2012-01-27 ---[v2.9.585]--- * Changed dates and version numbers in various files. -- Mike Towler, 2012-01-27 ---[v2.9.584]--- * Updated version number in consent forms for new release. Updated CASINO_USERS file. -- Mike Towler, 2012-01-27 ---[v2.9.583]--- * Changed a runqmc default. -- Mike Towler, 2012-01-27 ---[v2.9.582]--- * Added --messagesize command line option to runqmc. -- Mike Towler, 2012-01-27 Many machines use different protocols for sending MPI messages between cores depending on the message size. For example, on Blue Gene P, messages below default 1200 bytes are sent using the 'eager' protocol, whilst larger messages use the 'rendezvous' protocol (details unimportant, but only in the former case are non-blocking messages truly asynchronous i.e. communication and computation are done simultaneously). Since my CASINO mechanism for load balancing requires asynchronous sending of configs that are around 1-10kb in size (and there may be more than one of them in a message), then it is important to be able to change the default size if CASINO is to exhibit perfect parallel scaling out to hundreds of thousands of cores. This flag allows you to define a 'message size' which may be used in different ways on different machines (depending on what is defined in the .arch file). For example, on Blue Gene, this is used to define a runtime environment variable DCMF_EAGER which allows you to change the default of 1200 bytes mentioned above. Note that is in bytes not Mb. ---[v2.9.581]--- * Added --shmemsize command line option to runqmc. -- Mike Towler, 2012-01-26 Some machines (well only IBM Blue Gene that I know of ) require you to set the size of the shared memory partition when launching a job (done e.g. on Blue Gene through an environment variable BG_SHAREDMEMPOOLSIZE passed to mpirun). The value of this number (in Mb) may now be set on the command line through the --shmemsize argument; what exactly is done with it depends on the settings in the relevant CASINO .arch file. Updated bluegene-xlf-cobalt-parallel.challenger.arch and bluegene-xlf-cobalt-parallel.intrepid.arch files to reflect this. The babel machine may also benefit from this but I don't have login access and it has a different setup, so they'll have to change this themselves. Also allowed clearup to delete core.0, core.1 etc. files. ---[v2.9.580]--- * Short form of runqmc --shmem argument (that is, -s) would not take an integer argument. Now it does. -- Mike Towler, 2012-01-26 ---[v2.9.579]--- * Fixed all the spelling mistakes etc. in the DIARY, just because I can. -- Mike Towler, 2012-01-26 ---[v2.9.578]--- * Fixed long-standing error in version number written to output file. -- Mike Towler, 2012-01-26 The Makefile and the runqmc script both employ the CASINO/VERSION file to find the version number of the current code which gets included in the CASINO output. The contents of the version file is something like : CASINO v2.9.568-2-gf1ba295 [Mike Towler] (25 January 2012) where the number indicates that this is version 2.9.568 on top of which Mike Towler has made two git commits, the last of which has a hash number beginning with gf1ba295. Once I have pushed these commits into the main repository, though, the version string should be updated to 2.9.570, and this was not happening. Now it is (following some modifications to the build-tools/update-version script). ---[v2.9.577]--- * Allowed DIARY file to be edited by the maintainer (moi). -- Mike Towler, 2012-01-26 Since 2.9.77/2.9.83, the DIARY file has been completely regenerated from the git log every time a new commit is pushed to the repository by the maintainer. While convenient, this has the unfortunate side effect of not allowing the maintainer to edit the DIARY file to correct e.g. spelling mistakes, misalignment of tables due to reformatted git log entries, and so on. Therefore changed build-tools/release and build-tools/update-version scripts so that only currently unpublished git commits are formatted into DIARY entries when updating the repository. All commits prior to the current one are simply copied from the previously existing DIARY file. In general this facility should only be used to maintain readability of the DIARY file -- rather than retrospective editing or justifications - since we wish the DIARY and the git log to be in as close harmony as possible. ---[v2.9.576]--- * Spelling. -- Mike Towler, 2012-01-25 * Added GAMESS examples to examples/wfn_generation directory. -- Mike Towler, 2012-01-25 ---[v2.9.574]--- * Fixed error with --override-dirty option in build_tools/update_version. -- Mike Towler, 2012-01-25 * Added PWSCF example to examples/wfn_generation directory. Ran dos2unix on a few stray Dario Alfe Mac files (see 2.9.473). -- Mike Towler, 2012-01-25 ---[v2.9.572]--- * Restored possibility to do all-electron Gaussian calculations using wave function files produced by the GAMESS program. -- Mike Towler, 2012-01-25 ---[v2.9.571]--- * Added a note to the FAQ regarding "This numeric constant is out of range" compilation warnings produced by the pathscale compiler on encountering the Fortran TINY function. This appears to be a compiler/glibc bug and can be safely ignored. -- Mike Towler, 2012-01-25 ---[v2.9.570]--- * Internal runqmc tests regarding the value of MAX_CPU_TIME and MAX_REAL_TIME couldn't cope with Fortran-style numbers with es and ds in them e.g. 10.d0 Fixed. -- Mike Towler, 2012-01-25 ---[v2.9.569]--- * Same as previous patch, but for plane-wave orbitals. -- Neil Drummond, 2012-01-25 ---[v2.9.568]--- * Modified bwfdet.f90 so that the system is only proclaimed to be a metal or insulator if it looks likely that the calculation is for the ground state. -- Neil Drummond, 2012-01-24 ---[v2.9.567]--- * Fixed spin-dependence bug in bwfdet.f90. -- Neil Drummond, 2012-01-24 ---[v2.9.566]--- * Added modified linuxpc-path-pbs-parallel.hopper-nersc.arch from Tim Mueller. Updated couple of errstop calls in bwfdet.f90 that should be master only. -- Mike Towler, 2012-01-24 ---[v2.9.565]--- * Redid 2.9.561, this time correctly. -- Mike Towler, 2012-01-24 ---[v2.9.564]--- * Fixed error in do_orbmap (bwfdet.f90) for restricted open-shell systems. -- Mike Towler, 2012-01-24 ---[v2.9.563]--- * Made sure avc_norb (the dimension of the avc array) is correctly computed in all circumstances (including restricted open-shell) in bwfdet.f90. -- Mike Towler, 2012-01-24 ---[v2.9.562]--- * Repeated previous fix in plane-wave module. -- Mike Towler, 2012-01-24 ---[v2.9.561]--- * Fixed error in blip module leading to format/variable-type mismatch for spin-polarized metallic systems. -- Mike Towler, 2012-01-24 ---[v2.9.560]--- * Blip read/setup did not allow for possibility of restricted open-shell systems when reading formatted or old binary-format blip wave functions (since 2.9.268). Fixed. -- Mike Towler, 2012-01-23 ---[v2.9.559]--- * Restored ability to read logicals written by any compiler by any same-endianness other compiler in old format binary blip files (this was introduced as a feature in 2.9.358 and removed in 2.9.480.) -- Mike Towler, 2012-01-22 ---[v2.9.558]--- * Revamped logging system on Intrepid and Challenger Blue Gene machines (no more cobaltlog files). Removed a minor machine-dependency that had crept into runqmc. -- Mike Towler, 2012-01-22 ---[v2.9.557]--- * Fixed bug in automatic translation of reduced-periodicity systems in blip.f90 (from 2.9.471). -- Neil Drummond, 2012-01-22 ---[v2.9.556]--- * arch: added linuxpc-intel-parallel.dirac -- Pablo Lopez Rios, 2012-01-21 * runqmc: fix for multi-command RUN_{SINGLE,PARALLEL,CLUSTER} -- Pablo Lopez Rios, 2012-01-21 * arch/taglib.sh: fixed substitution problem -- Pablo Lopez Rios, 2012-01-21 * install: minor fixes -- Pablo Lopez Rios, 2012-01-21 - Use letters instead of numbers for main menu - Ability to remove all configured CASINO_ARCHs - Fixed problem with output of .bashrc.casino --csh ---[v2.9.552]--- * Added warning to manual about external electric fields: it is assumed that the particles have charge -1, and the electrostatic energy of nuclei is not calculated. I will change this at some point soon. -- Neil Drummond, 2012-01-21 ---[v2.9.551]--- * Tidied up the output of VMC for the case of one configuration per core. -- Neil Drummond, 2012-01-20 ---[v2.9.550]--- * New autotest example: PsH. Also includes a test of molorbmods, which is broken (or, perhaps, more broken than it was). -- Neil Drummond, 2012-01-19 Fixed bug where all processors (not just master) write out "EIONION from file". Fixed bug whereby CASINO attempted to calculate the ion-ion energy when ions lie on top of one another. Gzipped autotest correlation.data and xwfn.data files. ---[v2.9.549]--- * Fixed bug affecting Gaussian backflow calculations with GPCC for molecules, introduced in 2.9.235. -- Neil Drummond, 2012-01-19 * *wfdet: gather and pass orbital descriptors to wfdet_basis. -- Priyanka Seth, 2012-01-19 The different wave function types and their descriptors as currently implemented are listed in the table below. WFN TYPE: DESCRIPTOR ---------------------------------------------------------- awfdet n, l, m bwfdet k, eigenvalue (extended orbitals only) dwfdet n, |m|, m exwfdet NONE free_orbs k (fluid phase only) gaussians k, eigenvalue (periodic systems only) pwfdet k, eigenvalue sdw k, theta special_wavefun NONE stowfdet NONE ---[v2.9.547]--- * Clarified the manual and esdf_key regarding the NHU and NHD keywords. -- Neil Drummond, 2012-01-18 ---[v2.9.546]--- * Added error trap for attempts to use expval.data with a non-diagonal supercell matrix scell_matrix. (Nothing wrong with this in principle, except that the format of expval.data would need to be changed.) -- Neil Drummond, 2012-01-18 ---[v2.9.545]--- * Updated the manual to include the new SCELL_MATRIX keyword. -- Neil Drummond, 2012-01-18 ---[v2.9.544]--- * gpcc: fixed orbmask array size issue caught with gfortran -- Priyanka Seth, 2012-01-18 ---[v2.9.543]--- * Minor edit. -- Mike Towler, 2012-01-18 * Removed trailing whitespace from files all over the distribution. -- Pablo Lopez Rios, 2012-01-18 Also removed unneeded definitions in linuxpc-cray-pbs-parallel.jaguarpf.arch, deleted two temporary files and replaced tabs with spaces. * bwfdet: use arguments, not module variables, to return phase_angle()'s results -- Pablo Lopez Rios, 2012-01-18 * runqmc: allow vmc_decorr_period=0 (broken by my patch 72733b3b in v2.9.1). -- Pablo Lopez Rios, 2012-01-18 ---[v2.9.539]--- * Replaced the npcell vector with a 3x3 integer matrix scell_matrix such that the supercell lattice vectors are amat=scell_matrix.pmat, where pmat is the matrix of primitive-cell lattice vectors. For example, if you are studying an FCC crystal, this will let you use the conventional cubic unit cell as the simulation supercell. I have introduced a new input keyword, SCELL_MATRIX, which is a block holding this 3x3 matrix. If, instead, the NPCELL block is supplied then SCELL_MATRIX is diagonal, with the diagonal elements being given by the NPCELL block. -- Neil Drummond, 2012-01-17 ---[v2.9.538]--- * bwfdet: fixed error introduced in 66e1d9b9. -- Priyanka Seth, 2012-01-16 * free_orbs: restructured arrays for excitations so they are spin-independent. -- Priyanka Seth, 2012-01-16 Also added 2 additional excited HEG examples to the autotest suite. ---[v2.9.536]--- * free_orbmap: further changes -- Priyanka Seth, 2012-01-14 ---[v2.9.535]--- * New CASINO_ARCH : bluegene-xlf-cobalt-parallel.challenger for the Challenger Blue Gene P at Argonne. -- Mike Towler, 2012-01-13 ---[v2.9.534]--- * free_orbs: variable clean up following patch 2.9.532. -- Priyanka Seth, 2012-01-13 ---[v2.9.533]--- * Updated compiler debug flags in the two Blue Gene arch files. -- Mike Towler, 2012-01-13 ---[v2.9.532]--- * free_orbs: Fixed bug with excited heg calcs introduced in 2.9.231 -- Priyanka Seth, 2012-01-13 Further cleanup will be commited in a separate patch. ---[v2.9.531]--- * Removed examples/generic/OLD directory containing extremely old obsolete input files used in early versions of CASINO (no longer relevant). Also gzipped some example files that should be compressed but weren't. -- Mike Towler, 2012-01-13 ---[v2.9.530]--- * Redid previous, this time correctly. -- Mike Towler, 2012-01-13 ---[v2.9.529]--- * Added Slater orbital example to autotest suite. -- Mike Towler, 2012-01-13 ---[v2.9.528]--- * Minor corrections to Slater orbital module stowfdet.f90. -- Mike Towler, 2012-01-13 ---[v2.9.527]--- * Following user misunderstanding, made it even more clear in the manual that the twistav_pwscf script allows you to run the full set of (fast) PWSCF wave function generation calculations on one machine, then the full set of (slow) QMC calculations on another more powerful machine (use the --dft_only and --qmc_only flags). -- Mike Towler, 2012-01-13 ---[v2.9.526]--- * Fixed typo in previous. -- Mike Towler, 2012-01-12 ---[v2.9.525]--- * Following user request, clarified precisely what 'number of electrons' means for periodic systems in the definitions of input keywords NEU and NED (esdf_key and manual). -- Mike Towler, 2012-01-12 ---[v2.9.524]--- * Fixed minor issue with writing random buffer in configs.f90 (this won't affect the answer, but some compilers could complain). -- Mike Towler, 2012-01-11 ---[v2.9.523]--- * config: removed unused variable -- Priyanka Seth, 2012-01-11 * bwfdet: removed unused variables -- Priyanka Seth, 2012-01-11 * gaussians: minor clean up of unused variables -- Priyanka Seth, 2012-01-11 * gauss_mol*: fixed bug -- Priyanka Seth, 2012-01-11 This bug appeared when number of spin up and down electrons were equal, but orbitals were spin polarized. ---[v2.9.519]--- * runqmc: fix inability to run caused by patch 2.5.918. -- Pablo Lopez Rios, 2012-01-11 Also fixed a number of formatting issues (lines > 80 chars, trailing whitespace, indentation) and fixed a number of uses of ( ) instead of { ; } when attempting to group commands together. ---[v2.9.518]--- * Added runqmc error trap for the case where the user defines MAX_CPU_TIME and/or MAX_REAL_TIME with only 1 block (which is pointless). -- Mike Towler, 2012-01-10 ---[v2.9.517]--- * The --auto-continue option for runqmc was never implemented for machines with batch queues. I have now done so. -- Mike Towler, 2012-01-10 To use it you need to supply a value for the --walltime flag. If --auto-continue is flagged, then runqmc will set max_cpu_time (and max_real_time if it is present in input) to 0.9 of this value, and the script will loop over any necessary continuations until the job is finished. Note that you need to use more than one block as CASINO can only emergency stop at the end of a block (and will do so if it sees there isn't enough time left to do at least one more block). ---[v2.9.516]--- * Added useful CHECKPOINT keyword to example input files. -- Mike Towler, 2012-01-10 ---[v2.9.515]--- * The --auto-continue feature of runqmc (currently functional only on non-batch machines) did not work in combination with the --force option. Fixed. -- Mike Towler, 2012-01-10 ---[v2.9.514]--- * When emergency stopping due to running into a MAX_CPU_TIME limit, CASINO writes out continuation data - including suggestions for new values for keywords such as the remaining number of blocks to do. This is then read and carried out by the runqmc script when invoking the '--continue' option. However, because no-one has looked at this in a while, the continuation data always contained the old keyword set - meaning it was not possible to continue most modern calculations. The code now determines whether you're using the old or the new set, and writes out its continuation data accordingly. This completes the restoration of the non-functioning '--continue' option. -- Mike Towler, 2012-01-10 ---[v2.9.513]--- * Fixed typo. -- Mike Towler, 2012-01-10 ---[v2.9.512]--- * Some recently introduced error traps were blocking continuation mode (i.e. use of the '--continue' flag) in runqmc. Fixed. -- Mike Towler, 2012-01-10 ---[v2.9.511]--- * Made CHECKPOINT=0 option safe for VMC calcs (already done for DMC in patch 2.9.443). With this option the config.out file is not written out after every block, but only at the end. Obviously this runs the risk of running out of time with the job incomplete with no config.out file to restart from. Hence I've now coupled it with the MAX_CPU_TIME keyword - now CHECKPOINT=0 means 'write out the config file either after the final block OR when I run out of time and the code is emergency-stopping. -- Mike Towler, 2012-01-10 For reference here's a table explaining when the config file is written out for various combination of VMC RUNTYPE, VMC_NCONFIG_WRITE and CHECKPOINT. All runs are 5 blocks so e.g. NNNNY means the config file is only written out in the last block. The vmc_opt entries give two blocks of YNs - the first being a config generation VMC run, the second being a postfit VMC run. RUNTYPE VMC_NCONFIG_WRITE CHECKPOINT WRITE_CONFIG? (5 block VMC run) vmc 0 -1 NNNNN vmc 0 0 NNNNY vmc N 0 NNNNY vmc 0 1 YYYYY vmc N 1 YYYYY vmc_dmc N -1 NNNNN vmc_dmc N 0 NNNNN vmc_dmc N 1 NNNNY vmc_opt N -1 NNNNN NNNNN vmc_opt N 0 NNNNN NNNNY vmc_opt N 1 NNNNY NNNNY vmc_dmc 0 all Error (correct) vmc_opt 0 all Error (correct) Also made sure that CHECKPOINT=-1 really does mean no config files ever written out ever, even for optimization runs etc. You really should use this if you don't suffer from time limits, and you know how long your run should be. Will save a lot of time with big systems. ---[v2.9.510]--- * Patch v2.9.501 ("configs: fixed recent breakage of continuation runs on fewer cores than original") worked -- as it says - only for fewer cores than original. Now fixed so that the continuations work for more cores than the original as well. -- Mike Towler, 2012-01-09 ---[v2.9.509]--- * comms_serial: fix single-processor compilation broken in v2.9.497. -- Pablo Lopez Rios, 2012-01-09 ---[v2.9.508]--- * Rewrote parts of writeconfigs_dmc in dmc.f90 to make it more obvious what it does. -- Mike Towler, 2012-01-09 ---[v2.9.507]--- * Added NCONFIG_PRELIM and DMC_NCONF_PRELIM to the list of old and new keywords that can't appear in the same input file together. -- Mike Towler, 2012-01-09 ---[v2.9.506]--- * Added 1D Gaussian polymer example (polyacetylene) to autotest test cases with VMC and DMC restarts. -- Mike Towler, 2012-01-08 ---[v2.9.505]--- * Modified autotest so that it allows restarts using symbolic links to files (vmc.hist, config.out) in another directory. -- Mike Towler, 2012-01-08 ---[v2.9.504]--- * Modified various examples/TEST inputs for autotest so that they take less time to run. Also updated a number of these files to use the modern keyword set. -- Mike Towler, 2012-01-08 ---[v2.9.503]--- * Modified quad_fit.f90 to offset x data in order to avoid numerical precision problems. -- Neil Drummond, 2012-01-08 ---[v2.9.502]--- * gjastrow: fixed misplaced assignment causing crash in certain optimizations. -- Pablo Lopez Rios, 2012-01-08 ---[v2.9.501]--- * configs: fixed recent breakage of continuation runs on fewer cores than original. -- Pablo Lopez Rios, 2012-01-06 ---[v2.9.500]--- * Added an example for the CRYSTAL program to the new examples/wfn_generation directory. Modified the manual to mention the existence of these examples. -- Mike Towler, 2012-01-06 ---[v2.9.499]--- * Deleted multiple instances of 'call checkmpi' following calls to various 'qmpi' wrapper routines (since the wrappers already include a call to checkmpi). -- Mike Towler, 2012-01-06 * Modified modify_inputs utility so that it can be used to modify input files that are gzipped. -- Neil Drummond, 2012-01-06 ---[v2.9.497]--- * Forced CASINO to give same answer, independently of the number of restarts, by making sure the random number sequence is not affected by the restart procedure. -- Mike Towler, 2012-01-06 We would like e.g. a 1000 move VMC run, and two 500 move VMC runs linked together by a restart, to give the same answer, in the sense that we end up with the same vmc.hist file. Unfortunately they do not in general since the pseudorandom number sequence is affected by the restart. This is because random numbers are generated something like 63 at a time and stored in a buffer until needed (this buffer being refilled when neccessary). In the normal way of saving a point in the random number sequence, any unused numbers in the buffer are discarded, which means the final answer will be different to the unrestarted case (unless the buffer is coincidentally empty). If the new keyword RNG_RESTART_SAFE is T (which is actually now the default) then the state of the current buffer is saved in the final config.out file as well as the current state of the random sequence (necessarily fixed at the end of the current buffer). This allows multiple step runs to give the same answer as single step runs, at the expense of slightly larger config files (hence the keyword allowing you to turn this off). This achieves the aim of NDD's patch 2.2.179 "Flush the random-number buffer so that the RNG state is restored identically when continuing a run so we can reproduce a VMC run exactly block-by-block". That patch was reverted by me in patch 2.9.405, both because it no longer worked, and because it made the energy incorrectly depend on the number of blocks (checkpoints). Final answer is now correctly independent of both the number of blocks and the number of restarts. ---[v2.9.496]--- * Minor renaming and gunzipping of bits of the previous patch (CASINO input files need to be unzipped so that 'modify_inputs' will work, READMEs are generally unzipped). Also rewrote the examples/README file which hadn't been updated in some time. -- Mike Towler, 2012-01-05 * Added an example set of CASTEP input files for an FCC neon crystal, together with a README file leading the user through the use of CASTEP, CASTEP2CASINO, BLIP AND CASINO. -- Neil Drummond, 2012-01-05 ---[v2.9.494]--- * (i) Added a suggestion to check the NPCELLS block in input if CASINO detects that the k vectors are incorrect and (ii) added a section to the manual summarising how to set up one's input files for periodic calculations. -- Neil Drummond, 2012-01-05 ---[v2.9.493]--- * Completed repairs to blip utility. Cannot rename DOUBLE PRECISION FUNCTION to REAL(dp) FUNCTION if dp is not available (it is not generally made available by a USE statement within the function). Fixed. -- Mike Towler, 2012-01-03 ---[v2.9.492]--- * Some changes to the blip utility in patch 2.9.471 led to problems - fixed. -- Mike Towler, 2012-01-03 ---[v2.9.491]--- * Documented two undocumented features in esdf_key and the manual: (1) automatic determination of optimum VMC_DECORR_PERIOD (set VMC_DECORR_PERIOD=0), and (2) maximization of diffusion constant with respect to DTVMC (set OPT_DTVMC=2) - latter useful for VMC_METHOD=3 only. -- Mike Towler, 2012-01-03 ---[v2.9.490]--- * Updated runpwscf script as in 2.9.488. -- Mike Towler, 2012-01-03 ---[v2.9.489]--- * Modified clearup utility to reflect previous. -- Mike Towler, 2012-01-02 ---[v2.9.488]--- * Modified bluegene-xlf-cobalt-parallel.intrepid.arch in order that output and stderr are sent to the right places, and that the bizarre local behaviour is ignored. -- Mike Towler, 2012-01-02 * Modifed taglib.sh and runqmc so that the names of the output and stderr files may be used as substitutable variables by the arch system. -- Mike Towler, 2012-01-02 ---[v2.9.486]--- * Changed gpcc.f90 to avoid an ifort 12 compiler bug. -- Neil Drummond, 2012-01-02 ---[v2.9.485]--- * Fixed miscellaneous spelling mistakes. -- Neil Drummond, 2012-01-02 ---[v2.9.484]--- * Tidied manual and fixed typo in history.f90. -- Neil Drummond, 2012-01-02 ---[v2.9.483]--- * Fixed more errstops referring to wrong routines in bwfdet.f90. -- Mike Towler, 2011-12-30 ---[v2.9.482]--- * Creation of complex orbital mask in bwfdet_setup causes segfault if number of localized blip orbitals is greater than zero. Fixed. -- Mike Towler, 2011-12-30 ---[v2.9.481]--- * When using CASINO-produced bwfn.data.b1 files, the read_old_binary routine used a vector that had not yet been defined to loop over the number of orbitals of each spin when reading in the blip coefficients, with the result that the blip coefficients were all random noise and the result was infinite. Fixed. This and the previous patch seem to correct the bwfn.data.b1 error referred to in patch 2.9.479 (and introduced in patch 2.9.307). -- Mike Towler, 2011-12-30 ---[v2.9.480]--- * In read_old_binary in bwfdet.f90, the variables spin_polarized, gamma_only, ext_orbs_present, and single_precision_blips in a bwfn.data.b1 file were incorrectly read in as integers and subsequently converted to logical, even though in PWSCF-produced bwfn.data.b1 files and CASINO 2.8 (and earlier) binary conversions of formatted bwfn.data files these are native logical variables. -- Mike Towler, 2011-12-30 The same was true of the vector 'occupied' in bwfn.data.b1. However, there is a complication here. It turns out that PWSCF *incorrectly* writes this as as an integer vector, whilst CASINO 2.8 and earlier write this a logical vector when converting bwfn.data files. I've modified read_old_binary so that it detects the source of the bwfn.data.b1 file, and either reads integer and converts to logical, or directly reads logical as appropriate. ---[v2.9.479]--- * Part 2 of the fix for general real blip wave functions (see patch 2.9.478). -- Mike Towler, 2011-12-29 This involved a complete rewrite of the phase angle evaluation for states whose k is on the Brillouin zone edge. The phase angles are now computed 'on the fly' when required during orbital map generation, rather than attempting to precompute them using a non-existent orbital map. This means that all blip calculations using a bwfn.data or bwfn.data.bin file should now work. Unfortunately, I've now discovered an additional bug preventing old-format bwfn.data.b1 files from working - this will hopefully be fixed shortly. ---[v2.9.478]--- * Real blip wave function evaluation (except gamma_only) was broken in patches 2.9.268 and 2.9.358. Fix part 1: the second call to bwfdet_setup (to compute the phase angles) in both read_formatted and read_old_binary should be done 'if(.not.complex_blip_wf)' rather than if(complex_blip_wf). -- Mike Towler, 2011-12-28 The second part of the fix is more complicated and will be done in a subsequent patch. Namely: to construct an orbmap (in routine do_orbmap) you require the phase angles cosphase etc.. The phase angles are previously computed in bwfdet_setup, by calling a routine which computes the orbitals and which has now been modified to require an orbmap, which is not yet available. This circular dependence leads to a segfault. For the moment, be aware that general real blip wave functions do not work, and that we are working on a fix. ---[v2.9.477]--- * Multiple errstop/check_alloc/checkmpi calls in bwfdet.f90 referenced the wrong subroutine. Fixed. -- Mike Towler, 2011-12-28 ---[v2.9.476]--- * The change "Removed fixed-length string shm_msg from shalloc_{,non}smp in favour of using integer vector smp_nodes directly for print-out in main.f90." (part of patch 2.9.358) was not correct. This is supposed to print out the ranks of the first group of cores in Shm calculations. In fact it printed out data for all cores e.g. on 120000 cores: 0 1 2 3 4 5 6 7 8 9 10 11 12 0 0 0 ... [119982 zeroes] ... 0 0 0 This has now been fixed so that it correctly prints: 0 1 2 3 4 5 6 7 8 9 10 11 12 -- Mike Towler, 2011-12-28 ---[v2.9.475]--- * Bit more tidying of blip utility. -- Neil Drummond, 2011-12-23 ---[v2.9.474]--- * Fixed issue with Cray compiler on Jaguar. -- Mike Towler, 2011-12-23 Previously in patch 2.9.451, I said "There remains a problem with the Cray compiler in that when invoked with the -target=native flag, it stops and complains about the missing BLAS routine dgemv in extrapolate_tau.f90. The extrapolate_tau utility does not in fact require BLAS and the error is triggered by an ordinary Fortran matmul call. This issue is being investigated." A solution to this is to swap in the module xtpe-istanbul instead of xtpe-interlagos. This works, but the advertised 'ftn -target=native' option does not work due to some bug in the Jaguar setup. Implemented in arch/linuxpc-cray-pbs-parallel.jaguarpf.arch . ---[v2.9.473]--- * Implemented additional error checking in the runpwscf script. -- Mike Towler, 2011-12-23 Added check for existence of the full set of PWSCF pseudopotential files (located in directory 'pseudo_dir' as specified in input). Also implemented full dos2unix conversion of any in.pwscf, pw2casino.dat or pseudopotential file found to contain DOS newlines. Note - this is part of an ongoing scheme of 'Dario Alfe proofing' - if you get sent any file by Prof. Alfe it will cause CASINO or PWSCF to crash because of invisible characters that you can't see, which is likely to cause confusion. After some investigation, I have understood that this is due to a bug in the 'Apple Mail' program which he uses, which results in the newlines of plain text files sent as attachments being changed to DOS format by some Unix email clients (such as pine/alpine). The solution (for him) is to gzip plain text files before attaching them, or to not use 'Apple Mail' (snowball's chance in hell). I think now that both runqmc and runpwscf offer complete protection against the DOS newline problem, but be aware of this issue if (like Dario) you refuse to use fancy scripts supplied with the CASINO distribution to run your code. ---[v2.9.472]--- * Fixed cockup in previous patch. -- Neil Drummond, 2011-12-22 ---[v2.9.471]--- * Modified blip so that reduced-periodicity systems can (optionally) be translated into the middle of the blip region in the non-periodic directions. Hence, for example, users no longer need to place the centre of a molecule in the middle of the cell defined by the lattice vectors. Various other bits of tidying of blip and gpcc.f90. -- Neil Drummond, 2011-12-22 ---[v2.9.470]--- * Arch: linuxpc-cray-pbs-parallel.jaguarpf, NEED_ETIME = yes -- Mike Towler, 2011-12-18 ---[v2.9.469]--- * Fixed edit descriptor in utils/plot_2D/findmax.f90 that ifort was warning about. -- Mike Towler, 2011-12-18 ---[v2.9.468]--- * arch: fixed several problems introduced in v2.9.250-260 -- Pablo Lopez Rios, 2011-12-18 ---[v2.9.467]--- * Manual edit. -- Mike Towler, 2011-12-15 * gjastrow: fix over-constraining in the presence of anisotropic functions -- Pablo Lopez Rios, 2011-12-15 The cusp conditions were too restrictive in the presence of anisotropic functions. Now fixed as follows: - Each basis function in gbasis now reports an anisotropy_index, which at the same time distinguishes between isotropic (=0), directional (>0) and other anisotropies (<0), and identifies identical angular dependencies for different functions in the same functional basis. - Stopped returning zero values and derivatives at the origin for anisotropic functions in gbasis, provide correct values instead. - Rewritten comment about anisotropy in gbasis to better define how to obtain the quantities that need to be returned for each basis function. - gjastrow was systematically eliminating parameter multiplying functions which displayed any type of anisotropy at the origin. Don't do this anymore, since this should be handled by constraint equations, but keep the ability to eliminate parameters around since I have an use in mind for the very near futurer; facility renamed to "parameter removal". - Cusp-imposing routines now take anisotropy into account to determine which equation a parameter goes in in a given sub-system, so that basis functions with different angular parts are handled separately. - Stopped assuming the same right-hand side should be used for all equations in the same sub-system of constraint equations. This allows Kato cusps to be imposed via functional basis containing both isotropic and anisotropic functions (not that this will be used much in practice). - Decide if a constraint on the value, on the derivative or on both is required on a per-parameter basis, and allow both types of equation to be interleaved in the constraint matrix. - Dot-product constraints create a rather special case regarding constraints, since at coalescence points the term is entirely directional and no distinction should be made between the angular parts of any of the basis functions. This is handled internally. Also in this patch: - Simplified constraint matrix construction routines. - Reverted to applying make_fixed via param_optable flag, which is a better approach. - Renamed .not.is_anisotropic to is_cusp_friendly in gbasis to clarify its purpose. - Now query_eqprod in gbasis correctly ignores which_unity property in the presence of cutoffs. ---[v2.9.465]--- * Fixed error in init_vmc_counters caused by my patch 2.9.393. -- Mike Towler, 2011-12-15 Also - clarified meaning of CHECKPOINT = 1 for VMC case in esdf_key and the manual (previously this was unclear). ---[v2.9.464]--- * The cryapi_inp_c0x routines in wfn_converters/crystal06 and wfn_converters/crystal09 contained literal strings of lengths greater than the length of the variable being initialized. Fixed. -- Mike Towler, 2011-12-14 ---[v2.9.463]--- * In the case where MPI broadcast of both Ebest and Eref is necessary (i.e. almost always) this is done using two separate calls of mpi_bcast. Merged these into one bcast operation, which will likely be more efficient on many cores. -- Mike Towler, 2011-12-14 ---[v2.9.462]--- * Modified clearup script to delete logging files produced by cobalt on Intrepid. -- Mike Towler, 2011-12-14 ---[v2.9.461]--- * Spelling. -- Mike Towler, 2011-12-14 ---[v2.9.460]--- * In patch 2.9.276 the default optimization level for gfortran on Hector was downgraded from -O3 to -O1 on account of a problem with compiling singleton.f90. The latest version apparently doesn't have a problem with this so I have un-downgraded it, if that's a proper word. -- Mike Towler, 2011-12-14 ---[v2.9.459]--- * Added BLAS_no, LDBLAS_no, LAPACK_no, LDLAPACK_no to list of acceptable Makefile tags in taglib.sh. -- Mike Towler, 2011-12-13 ---[v2.9.458]--- * Added cross-compiler support (which I understand is becoming quite popular nowadays) for IBM Blue Gene/P (Intrepid). CASINO_ARCH = bluegene-xlf-cobalt-parallel.intrepid As the Fortran utilities now work, this machine should now be fully supported (though it is relatively untested - let me know of any issues). -- Mike Towler, 2011-12-13 ---[v2.9.457]--- * Updated runtime data in arch/data/machine/hector.arch, plus documentation for Hector phase 3 in doc/MACHINES. -- Mike Towler, 2011-12-13 ---[v2.9.456]--- * Previous change required changes to all new Jaguar and Hector arch files. -- Mike Towler, 2011-12-13 ---[v2.9.455]--- * Another fix to new cross-compiler build system. -- Mike Towler, 2011-12-13 ---[v2.9.454]--- * Modified Hector .arch files to accommodate new Phase3 XE6 system (like Jaguar this also now uses a cross-compiler). Moved old hector2b scripts to arch/data/NO_LONGER_EXISTS directory. New CASINO_ARCHs: linuxpc-cray-pbs-parallel.hector3.arch linuxpc-gcc-pbs-parallel.hector3.arch linuxpc-pgf-pbs-parallel.hector3.arch linuxpc-path-pbs-parallel.hector3.arch Note there is no ifort compiler set up on this machine - perhaps someone should encourage them to do so. -- Mike Towler, 2011-12-13 ---[v2.9.453]--- * Cross compiler build system: lib/LAPACK/Makefile and lib/BLAS/Makefile need to define HAVE_BLAS_NATIVE and HAVE_LAPACK_NATIVE = yes, otherwise all machines will try to compile a NATIVE library even if the .arch file doesn't specify one. -- Mike Towler, 2011-12-13 ---[v2.9.452]--- * Added result of a compiler speed test on Cray XK6 (Jaguar) to FAQ and doc/MACHINES. -- Mike Towler, 2011-12-13 examples/crystal/blips/silicon on 16 cores with the following keywords changed: vmc_nstep : 800 #*! Number of steps (Integer) vmc_nconfig_write : 800 #*! Number of configs to write (Integer) dmc_equil_nstep : 20 #*! Number of steps (Integer) dmc_stats_nstep : 20 #*! Number of steps (Integer) dmc_target_weight : 800.d0 #*! Total target weight in DMC (Real) Total CPU time DMC energy Ifort : 54.6394 seconds -63.253019810592 +/- 0.007612017376 Gnu : 62.6400 seconds -63.253019816018 +/- 0.007612049672 Pathscale : 67.8962 seconds -63.259034999613 +/- 0.011000738147 PGF : 72.9000 seconds -63.245897141026 +/- 0.009693089487 Cray : 84.0300 seconds -63.192701255463 +/- 0.006393938977 Thus Intel Ifort wins hands down, which is interesting since no-one has been able to use it on a Cray-XXX machine until I implemented support for it about 20 minutes ago. The usual default (PGF) is considerably slower. Note the last three are giving different answers to Ifort/Gnu. The Cray answer is well outside error bars - need to check this.. ---[v2.9.451]--- * Rewrote the following .arch files to allow compilation of the utilities with the native compiler on Jaguar XK6. linuxpc-cray-pbs-parallel.jaguarpf.arch linuxpc-gcc-pbs-parallel.jaguarpf.arch linuxpc-path-pbs-parallel.jaguarpf.arch linuxpc-pgf-pbs-parallel.jaguarpf.arch -- Mike Towler, 2011-12-13 Added a new arch file so that the Intel compiler can be used on Jaguar: linuxpc-ifort-pbs-parallel.jaguarpf.arch There remains a problem with the Cray compiler in that when invoked with the -target=native flag, it stops and complains about the missing BLAS routine dgemv in extrapolate_tau.f90. The extrapolate_tau utility does not in fact require BLAS and the error is triggered by an ordinary Fortran matmul call. This issue is being investigated. Apart from that, the new Jaguar XK6 is now fully supported. ---[v2.9.450]--- * Fixed error in new cross-compiler build system (2.9.438). The LAPACK and BLAS Makefile did not reference the FFLAGS_all(_NATIVE) flags; on the system I'm testing this meant that the libraries were always compiled with the cross-compiler. -- Mike Towler, 2011-12-13 ---[v2.9.449]--- * Fixed error in new cross-compiler build system (2.9.438). The Makefiles for plot_expval and localizer utilities always referenced the cross-compiler LAPACK libraries rather than the native ones. -- Mike Towler, 2011-12-13 ---[v2.9.448]--- * build-tools/make-wrappers: fix for UTILS_MODE=native -- Pablo Lopez Rios, 2011-12-13 * {p,g}jastrow: fixed further problems along the lines of 2.9.407 (g5097dd9) -- Pablo Lopez Rios, 2011-12-13 * plot_2D: added -noclean option -- Pablo Lopez Rios, 2011-12-13 This prevents deletion of the temporary .gnubatch file, which can then be modified by the user to tweak it as necessary and reuse it with "gnuplot .gnubatch". Also corrected format for findmax output so it does not overflow to '********'. ---[v2.9.445]--- * Now the Jaguar Cray XT5 partition at Oak Ridge has been definitively retired and replaced with the XK6 partition, I reverted the new linuxpc--pbs-parallel.jaguarpf-xk6 CASINO_ARCHs to linuxpc--pbs-parallel.jaguarpf. The XT5 jaguarpf arch files have been placed in a new CASINO/arch/data/NO_LONGER_EXISTS directory, which is intended in the future as a dump for old arch files for individual machines that have been axed. Also updated doc/MACHINES and doc/bashrc.jaguar to reflect this change. -- Mike Towler, 2011-12-12 ---[v2.9.444]--- * Adding entry to FAQ discussing the message "warning: the use of 'mktemp' is dangerous, better use 'mkstemp'" which appears hundreds of times when compiling CASINO with certain compiler/software/hardware combinations. -- Mike Towler, 2011-12-12 ---[v2.9.443]--- * Improved flexibility of DMC checkpointing system; improved efficiency of DMC equil --> DMC stats transition. Reading, writing and broadcasting config.out files can take a lot of time for big systems and on many processors; the potential for reducing this has been greatly improved. -- Mike Towler, 2011-12-12 (1) Previously default (CHECKPOINT>0) was to write config.out at end of every block but purely for checkpointing purposes - the config data was always stored in the configs module from block to block and never read from disk *except* at the transition from DMC equil to DMC stats accumulation. I have changed things so that the config data is now kept in memory even across this transition (which saves a file read). (2) Made CHECKPOINT=0 option safe. With this option the config.out file is not written out after every block, but only at the end. Obviously this runs the risk of running out of time with the job incomplete with no config.out file to restart from. Hence I've now coupled it with the MAX_CPU_TIME keyword - now CHECKPOINT=0 means 'write out the config file either after the final block OR when I run out of time and the code is emergency-stopping.' This can be used in conjunction with the --auto-continue option of runqmc (if it worked on batch machines ; I will make it do so shortly).. (3) Introduced new CHECKPOINT=-1 option. With this, the config files are never written out ever in DMC. Clearly this value should be chosen only if you *know* that the job will fit in any imposed time limit, and that such a run will be long enough to give an acceptably small error bar, since it will be impossible to subsequently continue the run. This is useful on machines with no time limits, or on time-limited machines when, for example, you are doing lots of similar calculations and know how much time is required. With CHECKPOINT=1 or 2 (write configs at end of every block), or with DMC_TRIP_WEIGHT activated (which overrides CHECKPOINT = -1 or 0) then you can save time in config writes simply by using fewer DMC blocks. ---[v2.9.442]--- * Added more sensible default values for some of the keywords in the examples inputs (e.g. dmc_target_weight=10.d0 is not a sensible default for the total number of configs summed over all processors ; generally reduced the number of VMC and DMC blocks). -- Mike Towler, 2011-12-12 ---[v2.9.441]--- * gjastrow: re-add "user" constraints, implement dot-product. -- Pablo Lopez Rios, 2011-12-11 Re-added static "user" constraints for internal use, and made "Dot product" indexing trigger relevant linear constraints to keep the xx/yy/zz indices equal. ---[v2.9.440]--- * Lines altered in patch 2.9.437 are read by runqmc when doing auto-continuation, and changing them will break this feature. Reverted. -- Mike Towler, 2011-12-09 ---[v2.9.439]--- * Incorporated modifications to build system documentation from last patch into manual. -- Mike Towler, 2011-12-09 ---[v2.9.438]--- * build system: allow different compilers for src and utils -- Pablo Lopez Rios, 2011-12-09 This has been implemented to support machines which use cross-compilers for code to be run on compute nodes which are of a different architecture from the login nodes. On these machines the utilities are of course still required to be compiled so that they run on the login nodes. A new set of _NATIVE variables (e.g. F90_NATIVE, FFLAGS_opt_NATIVE, etc) are available to use compilers / compiler options / environments for the utilities different from those used for the main binary. This set of variables will be used for the utilities instead of the usual ones if the new variable UTILS_MODE is set to 'native' in $CASINO_ARCH.arch. The full list of available variables can be found in arch/README. The 'install' script will be updated to take advantage of these. Notice that 'include'd compiler-specific .arch files like f90/intel.arch etc will not affect _NATIVE variables, so all such options need to be specified in full when using this new facility. Also fixed a few inconsistencies in the utils Makefiles, where not all compiler flags were working as advertised (e.g. FFLAGS_all was not being appended to FFLAGS_opt in many cases), and added missing tags to taglib.sh. ---[v2.9.437]--- * Changed values of RUNTYPE recommended for continuation run to non-obsolete values when the code force-quits because the elapsed time is approaching MAX_CPU_TIME. -- Mike Towler, 2011-12-09 ---[v2.9.436]--- * 'Time taken in block' printed in output file had been temporarily changed to not include the config.out write. Restored it to previous position. -- Mike Towler, 2011-12-08 ---[v2.9.435]--- * More manual updates. -- Mike Towler, 2011-12-08 ---[v2.9.434]--- * gauss_mol: fix to previous patch -- Priyanka Seth, 2011-12-08 ---[v2.9.433]--- * Updated keyword definitions. -- Mike Towler, 2011-12-08 It has come to my attention that new students often get very confused by the meaning of some of frequently-used CASINO keywords (usually because of not understanding what happens in parallel calculations). There have been recent instances where many days have been wasted because of such misunderstandings - and the official descriptions are indeed less than clear. I have therefore extensively rewritten and expanded the definitions of the following keywords in both the manual and esdf_key: VMC_EQUIL_NSTEP, VMC_NSTEP, VMC_NBLOCK, VMC_DECORR_PERIOD, VMC_AVE_PERIOD, VMC_NCONFIG_WRITE, DMC_EQUIL_NSTEP, DMC_EQUIL_NBLOCK, DMC_STATS_NSTEP, DMC_STATS_NBLOCK, DMC_TARGET_WEIGHT, DMC_AVE_PERIOD The aim is to state precisely what will happen under all circumstances, on one or multiple cores. (I note also that a few remarks in the previous definitions were actually incorrect). * gauss_mol*: fixed gaussian cusp correction indexing -- Priyanka Seth, 2011-12-08 ---[v2.9.431]--- * Manual update. -- Mike Towler, 2011-12-07 * gjastrow: use a looser relative tolerance for parameter checks (1E-7 -> 1E-5). -- Pablo Lopez Rios, 2011-12-07 * gjastrow: fixed problem with anisotropy detection misfiring. -- Pablo Lopez Rios, 2011-12-07 Also, apply make_fixed via is_problematic rather than via opt flags. * free_orbs: fix write overflow for length/area/volume. -- Pablo Lopez Rios, 2011-12-07 * arch: fix some more typos in arch/README. -- Pablo Lopez Rios, 2011-12-07 ---[v2.9.426]--- * Rewrote the 'installation' section of the manual, including - in response to Luddite user requests - adding a new section describing how to install and compile the code manually (rather than using the fancy new 'install' script). -- Mike Towler, 2011-12-07 Also added full documentation of the syntax of the .arch files in a new Appendix 5 (this is essentially a copy of arch/README). ---[v2.9.425]--- * Added support for IBM Blue Gene/P machine 'Intrepid' at Argonne. CASINO_ARCH = bluegene-xlf-cobalt-parallel.intrepid -- Mike Towler, 2011-12-07 Note that some more advanced features remain to be tested, and that this suffers from the same cross-compiler problem as the new Jaguar XK6 (see patch 2.9.418) i.e. the fortran utilities cannot currently be compiled automatically with the CASINO build process. This will be fixed shortly. Also renamed existing ibm_bgp.babel arch as bluegene-xlf-ll-parallel.babel which follows the standard convention. Created softlink so the old name still works. ---[v2.9.424]--- * Changed default CRYSTAL_ARCH in runcrystal script to Linux-ifort, and added setup advice for TCM people. -- Mike Towler, 2011-12-07 ---[v2.9.423]--- * Changed maximum number of processors on Jaguar-XK6. -- Mike Towler, 2011-12-07 * arch: fix Hector with Cray compiler, which has OpenMP on by default -- Pablo Lopez Rios, 2011-12-07 Also fixed some typos in arch/README. ---[v2.9.421]--- * Fixed multiple minval(minloc.. constructs in gbasis.f90 and gjastrow.f90 which would give compiler errors in debug mode with pgf90/pathf90 compilers. Can fix by replacing with sum(minloc.. (since the purpose of the sum/minval is to convert the supposedly array output of minloc to a scalar, and the compilers seem to like 'sum'). -- Mike Towler, 2011-12-07 ---[v2.9.420]--- * A maxval(maxloc.. construct in gaussians.f90 was being miscompiled by the pgf compiler leading to an error-message-free crash on Cray XK6. Fixed. -- Mike Towler, 2011-12-07 ---[v2.9.419]--- * Updated Jaguar XK6 arch file for pathscale : compiler will not produce a working executable unless we specify optimization level -O3 (?!). Therefore altered FFLAGS_debug to change the default -O0 (no optimization) to -O3. Also, -trapuv option for trapping uninitialized variables seems to lead to crashing at exp() underflows - which is presumably not its intention.. If anyone can find a better way to produce a quickly compiling debug executable, let me know. -- Mike Towler, 2011-12-07 ---[v2.9.418]--- * Introduced support for the new Jaguar XK6 machine at Oak Ridge. This will be coexisting with the old XT5 machine for the next week or so - thus the arch/data files are the same as the old 'jaguarpf' files with the string 'jaguarpf' replaced by 'jaguarpf-xk6'. I will revert them back to jaguarpf (with xk6 softlinks) once the old machine is decommissioned. See doc/bashrc.jaguar for shell setup, and doc/MACHINES for more information. -- Mike Towler, 2011-12-06 Note : the functionality is not complete, since this machine introduces a cross-compiler, and fortran utilities compiled with the cross-compiler won't work on the login nodes. Work is in progress that will allow the build system to deal with this. ---[v2.9.417]--- * Rewrote enumerate_plot_slater in slater.f90 and enumerate_plot_wfn in wfn_utils.f90 in order to avoid a bizarre pathscale compiler bug. -- Mike Towler, 2011-12-06 ---[v2.9.416]--- * Fixed typo in 'Installation' section of manual (arch files are in arch/data not data). -- Mike Towler, 2011-12-06 ---[v2.9.415]--- * runqmc,clearup: fix handling of .casino_finished and .runqmc.lock -- Pablo Lopez Rios, 2011-12-05 - runqmc now removes existing .casino_finished before starting a run. - runqmc now does not create .casino_finished on every errstop[d]. - Fixed non-functional "exit 1" in MD/twistav runqmc code due to the use of subshell-spawning parentheses () instead of command-grouping curly braces {}. - clearup now honours the presence of .runqmc.lock, and has a --force|-f option to explicitly ignore it. - clearup now clears .runqmc.lock (with -f only), .casino_finished and bwfn.data.bin (with -a only). * esdf: check for duplicated block names correctly -- Pablo Lopez Rios, 2011-12-05 Setting "runtype : plot" and having "%block plot" in the input file caused the message INPUT ERROR: Label "plot" is multiply defined in the input file. to be printed due to the wrong strings being compared between the two records. Now fixed. Fixed code for the opposite check too. ---[v2.9.413]--- * gjastrow: implemented map covering non-zero parameters, for speed. -- Pablo Lopez Rios, 2011-12-05 * gbasis: flush relative zeroes to zero in backwards_substitution. -- Pablo Lopez Rios, 2011-12-05 * gjastrow: redesigned parameter index handling. -- Pablo Lopez Rios, 2011-12-05 - Parameter indices are now computed once and buffered. - Replaced several indexing routines in gbasis.f90 with a single index-generating/naming routine whose output is stored. - Added incremental evaluators in gjastrow.f90 to avoid code duplication. - Removed 1_x routine in favour of x_x. - Removed "with0" Jastrow evaluation routines - "non0" and "with0" are now unified. - Split iterate_{nuclei,electron}_indices in gbasis.f90 into {,_fix} versions. - Split zeroing of parameters multiplying "problematic" functions out of the cusp-imposing routines, which is advantageous since such equations are immutable as parameter values change. - Rewrote cusp/value and symmetry contraint routines to use buffered indices. - Made anisotropy information optional arguments to the query_cusp_* routines in the gbasis module. - Dropped support for "user" constraints, which were accessed via a "Constraints" block inside "TERM x". The only available constraint was "e-n dot product", which has been absorbed into the new "Dot product" indexing constraint, see below. - Removed support for "Number of indices" and "Modulo" indexing constraints. - Added indexing constraints "Dot product" and "No repeat". "Dot product" will eliminate all indices but two, and their values will skip combinations where the index values modulo the dimensionality differ. "No repeat" is only applicable if "Dot product" is present, and it will cause pairs of indices containing a repeated electron or nucleus to be omitted as well. A sensible Van der Waals-like term would be specified this way: TERM 5: Rank: [ 2, 2 ] e-e basis: [ Type: natural power, Order: 3 ] e-n basis: [ Type: natural power vectorial, Order: 12 ] e-n indexing: Dot product: T No repeat: T e-n cutoff: Type: polynomial Constants: [ C: 3 ] Rules: [ 1=2, n1=n2 ] * gjastrow: modified relative tolerance for checking read-in parameters. -- Pablo Lopez Rios, 2011-12-05 A tolerance of 1E-8 was triggering errors in what otherwise looks like a fine calculation, so have increased the tolerance to 1E-7. * gbasis: minor fix in definition of "natural power vectorial" basis. -- Pablo Lopez Rios, 2011-12-05 * plot: work around bug in nagfor compiler. -- Pablo Lopez Rios, 2011-12-05 A bug in nagfor causes a runtime error when passing character pointer vectors as arguments when their character length is determined by another argument, and when the calling routine lives in a different module, e.g.: $ cat bugmod.f90 MODULE bugmod PUBLIC CONTAINS SUBROUTINE bug(n,c) IMPLICIT NONE INTEGER,INTENT(in) :: n CHARACTER(n),POINTER :: c(:) INTEGER i if(associated(c))print *,(trim(c(i)),i=1,size(c)) END SUBROUTINE bug END MODULE bugmod $ cat test.f90 PROGRAM test USE bugmod IMPLICIT NONE CHARACTER(64),POINTER :: c(:)=>null() allocate(c(5)) c='hello' call bug(64,c) END PROGRAM test $ nagfor -c bugmod.f90 NAG Fortran Compiler Release 5.2(649) [NAG Fortran Compiler normal termination] $ nagfor -o test test.f90 bugmod.o NAG Fortran Compiler Release 5.2(649) [NAG Fortran Compiler normal termination] $ ./test Runtime Error: bugmod.f90, line 7: Invalid reference to procedure BUGMOD:BUG - Dummy POINTER C has CHARACTER length 64 but actual argument has length -2020588347 Program terminated by fatal error Aborted Moving subroutine 'bug' above into test.f90 works correctly, printing 'hellohellohellohellohello'. Have worked around this limitation by rewiring the plot facility to use allocatable vectors instead. Sigh. * gjastrow: fixed bug affecting plots involving gjastrow derivatives. -- Pablo Lopez Rios, 2011-12-05 * stowfdet: fixed runtime issues detected by nagfor compiler. -- Pablo Lopez Rios, 2011-12-05 ---[v2.9.405]--- * VMC energy for a fixed number of moves incorrectly depended on the number of times we chose to checkpoint the energy (i.e. on the value of vmc_nblock). Fixed. -- Mike Towler, 2011-12-02 This was broken due to NDD's patch 2.2.179 "Flush the random-number buffer so that the RNG state is restored identically when continuing a run so we can reproduce a VMC run exactly block-by-block" i.e. he is trying to allow us to split a VMC run in two, and restart the second half from the first half, and we end up with the same answer as if we had run the whole thing as one continuous calculation. Unfortunately the current code doesn't do that either (both because of not using the first 24 numbers, and because of PLR's more recent introduction of a separate Gaussian-distributed random number buffer) so we may as well restore the independence of the VMC energy on the number of checkpoints by reverting 2.2.179. I will add a separate patch later to achieve NDD's original aim about restarts (this is significantly more complicated, since at the end of every block the state of the random number generator is saved to config.in as if we were at the end of the current random buffer, whereas we will usually be somewhere in the middle of it. And you can't just flush the buffers since that makes the energy dependent on block-length as above). ---[v2.9.404]--- * Fixed broken CHECKPOINT_NCPU facility for reading in configs on multiple CPUs. -- Mike Towler, 2011-12-02 Further investigation of the CHECKPOINT_NCPU facility revealed that, in fact, the original version (implemented in 2009) simply didn't work at all. My two recent patches 2.9.400 and 2.9.401 were correct, but they relied on the assumption that the underlying stuff worked. In fact, this was only the case for the default CHECKPOINT_NCPU=NCORES (read config.in on the master only and broadcast to the slaves) and -- probably, though I didn't check carefully -- CHECKPOINT_NCPU=1 (read config.in file on all cores, no broadcast). If CHECKPOINT_NCPU > 1 and < NCORES then the code simply hung, and even if it didn't, some of the data would have been sent between wrong pairs of cores. The freeze may result from some weird and possibly incorrect behaviour of MPI_COMM_SPLIT i.e. we split the full set of cores into N groups, and the MPI routine is supposed to return an integer MPI_COMM_GROUP which denotes what group you're in.. However, this is always the same on all cores no matter how many groups there are (?). Anyway, I've now reimplemented the whole thing using a different method (MPI_COMM_GROUP-->MPI_GROUP_INCL-->MPI_COMM_CREATE) and fixed the other errors in the original implementation. Summary of improvements (including patches 400 and 401]: - Doesn't fail if CHECKPOINT_NCPU /= NCORES or 1. - Works if NCORES is not exactly divisible by CHECKPOINT_NCPU. - Better selection of submasters for efficiency. - Faster on machines with many cores Note that this means that any previous conclusions about the benefits of this need reevaluating with some timing tests. ---[v2.9.403]--- * Update to src/Makefile. -- Mike Towler, 2011-12-02 ---[v2.9.402]--- * Modified format_configs to allow incorporation of buffer information into the RANDOM section of the config file (required for forthcoming patch). -- Mike Towler, 2011-12-01 ---[v2.9.401]--- * In the previous patch I maintained LA's original convention that the set of N 'master cores' doing the broadcasting have MPI ranks 0:N-1. In fact, given that on multi-core nodes sequential MPI ranks are usually placed on the same node, it is likely to be more efficient to assign sequential ranks from 1 onwards to all the cores that node 0 has to broadcast to, and so on. The make_chkpoint_groups routine has therefore been altered to do that. -- Mike Towler, 2011-12-01 ---[v2.9.400]--- * The facility (controlled by the CHECKPOINT_NCPU keyword) for reading in config files on multiple CPUs and broadcasting the data in CPU subgroups (as opposed to the default reading on the master only) was broken, for the case that NNODES was not exactly divisible by CHECKPOINT_NCPU. Previously, the 'remainder' formed their own subgroup, which is not only less than optimally efficient, but could lead to the code hanging in the case that the remainder was 1 (as this lonely core waited for the non-existent other members of its subgroup to get in touch). Have therefore completely rewritten 'make_chkpoint_groups' such that the remainder is now evenly distributed over the NNODES/CHECKPOINT_CPU subgroups. Thus some of the subgroups may now have CHECKPOINT_NCPU+1 cores rather than the advertised CHECKPOINT_NCPU cores - this point has been clarified in esdf_key and the manual. -- Mike Towler, 2011-12-01 ---[v2.9.399]--- * Format_configs utility had ceased to function when converting formatted config.out files to binary ones. Fixed. -- Mike Towler, 2011-11-30 ---[v2.9.398]--- * Various input-related changes. -- Mike Towler, 2011-11-28 - Re-ordered randomly jumbled keywords in set_input_parameters (monte_carlo.f90) into the 'correct order' i.e. grouped into the various sets like SYSTEM, RUN, VMC, DMC, OPTIMIZATION etc. This makes the routine much easier to read. Also separated the 'old-style' keywords from the 'new style' ones as it wasn't clear which was which. - Re-ordered keywords in examples/generic/input_file_full to correspond with those in set_input_parameters (I must be bored). The values of the input keywords in this file now correspond exactly to the 'default values' as defined in monte_carlo.f90 (except where there is no default, in which case judicious use is made of asterisks). This file therefore should now be considered the reference as to what these values are (not everyone has the full source code to check..). If you change a default value in the future, then please also change this example input file. - Deleted the whole directory examples/generic/input, which contained a short example input file, and the wave function file in examples/generic/input_file_full (since they're pointless). ---[v2.9.397]--- * Initialized expindx_ee to zero in name_linear_parameters (gjastrow.f90). Not strictly necessary, but stops various compilers whining about uninitialized variables.. -- Mike Towler, 2011-11-28 ---[v2.9.396]--- * Added the following paragraph to the manual, FAQ, and casino2upf instructions. -- Mike Towler, 2011-11-28 Note the following pitfall. The casino2upf utility marks any UPF files it creates as having been generated using Hartree-Fock (since they generally are). If you do not supply a value for the 'input_dft' keyword in the 'system' section of the PWSCF input file, then PWSCF will attempt to use the functional specified in the pseudopotential file i.e. it will try to do a Hartree-Fock calculation, and -- given that this is only possible with PWSCF if you compiled it having invoked 'configure' with the '--enable-exx' flag -- then the code may stop and whine about not having been compiled with support for hybrid functionals. This can be confusing. Solution: specify 'input_dft' in the input file. ---[v2.9.395]--- * gpcc: streamlined orbital access. -- Priyanka Seth, 2011-11-28 Arrays now depend on iorb instead of (ie,ispin), and the orbmask is now used for selecting orbitals for each spin. NB, for excited-state Gaussian calculations it has not been possible to compare results with old calculations since these have been re-enabled only recently - the code has been thoroughly reviewed and seems correct though. ---[v2.9.394]--- * Fixed bug in OpenMP directive - dimensionality moved from private to shared list. -- Lucian Anton, 2011-11-28 ---[v2.9.393]--- * Added trap for integer overflow in init_vmc_counters (vmc.f90) - reordered the operations to make it less likely to overflow. -- Mike Towler, 2011-11-28 ---[v2.9.392]--- * Have DMC_REWEIGHT_CONF and DMC_SPACEWARPING values echoed to the output file. -- Mike Towler, 2011-11-28 ---[v2.9.391]--- * Added runqmcmd error traps for LWDMC and JASBUF. -- Mike Towler, 2011-11-28 ---[v2.9.390]--- * Changed build-tools/release script so that FAQ is automatically published to web site. -- Mike Towler, 2011-11-26 ---[v2.9.389]--- * Added a new "Using CASINO with external programs" section to the FAQ. This is intended for advice on how to compile e.g. PWSCF/CASTEP etc. on particular machines, or how to fix problems encountered when using them. This information may go out of date, but it's generally useful to have. -- Mike Towler, 2011-11-26 Two entries to start with: (1) Currently none of the four compilers on Hector will compile PWSCF if you follow the instructions (mostly for no readily apparent reason). Following a certain amount of screwing around, I finally found a magical incantation that persuaded gfortran to work. Now in the FAQ. (2) When using an xwfn.data file produced by PWSCF, I get a CASINO error: ERROR : CHECK_KPOINTS Two k points (1 and 2) are equivalent. Why? Various versions of PWSCF from summer 2011 produce an apparently miscompiled executable, which when told to print out a list of k points in the output file (or in xwfn.data), just prints out a string of zeroes i.e. all k points are listed as (0.0 0.0 0.0). Having dug around in the PWSCF source code, it seems that the k point grid was being defined before the reciprocal lattice vectors, hence all the k points really were zero. I have no idea why no-one noticed this - you would think it would be pretty fundamental. Looking at the latest (26/11/2011) this has now been fixed. EDIT: later investigation showed this problem was extant between commit 8051 and commit 8121. Solution : upgrade your PWSCF. ---[v2.9.388]--- * As since patch 2.9.297 it has been illegal to write onto the end of a vmc/dmc.hist file if newrun=T in input, then I added error traps to the runqmc script to that effect (previously only CASINO itself would complain about this). -- Mike Towler, 2011-11-24 ---[v2.9.387]--- * Following changes to the [vd]mc.hist mechanics in patch 2.9.297, the reblock utility would no longer report the number of equilibration lines correctly in the case of a dmc.hist files containing *only* equilibration lines (as resulting from 'runtype : dmc_equil' in input. Fixed. -- Mike Towler, 2011-11-24 ---[v2.9.386]--- * Error traps for population explosion recovery referred to obsolete keywords TRIP_POPN and NCONFIG, instead of the modern DMC_TRIP_WEIGHT and DMC_TARGET_WEIGHT. Fixed. -- Mike Towler, 2011-11-23 ---[v2.9.385]--- * Added missing error trap to runqmcmd. -- Mike Towler, 2011-11-21 ---[v2.9.384]--- * Update to manual. -- Mike Towler, 2011-11-21 * gauss*: fixed orbmap and changed array sizes. -- Priyanka Seth, 2011-11-21 - Fixed orbmap construction and made corresponding changes to evaluation routines. - Select orbitals based on spin_type_in (spin dependency in gwfn.data file) rather than spin_type_gs (defined in setup). - To go with above, changed coefficient array rck and cck sizes to spin_type This will save memory in the cases where the data that was read in from the gwfn.data file was spin_restricted but the system actually is polarized (eg. an ion). * gaussians: removed support for deprecated pre-2001 gwfn.data file format. -- Priyanka Seth, 2011-11-21 * gaussians: restructured module. -- Priyanka Seth, 2011-11-21 Changes made: - Moved variables that were not shared between gaussians and gauss_* out of gaussdefs. - Moved the excited state setup from gwfdet_prescreen to gwfdet_setup. gwfdet_prescreen now only does the geometry setup. - Introduced band_occupancy and other arrays so gwfdet_setup better resembles pwfdet_setup and bwfdet_setup. This is needed to make the gpcc setup spin-independent. ---[v2.9.380]--- * Suppressed output for wave function derivative test from all but twelve cores when checkwfn=T. Having runqmc cat the output from 120000 cores on the end of the output file is a bad idea, especially since it ought to be possible to have this flag on routinely. -- Mike Towler, 2011-11-20 ---[v2.9.379]--- * Missing dollar sign in earlier minor edit to runqmcmd script caused it to always exit immediately, which doesn't make it very useful. Fixed. -- Mike Towler, 2011-11-20 ---[v2.9.378]--- * Corrected information about ABINIT in the manual - specifically that it still referred to the parallel version as a separate code, which as of several versions ago is no longer the case. -- Mike Towler, 2011-11-20 ---[v2.9.377]--- * Final version of twist-averaging with PWSCF requires the input keyword 'verbosity' to be set to 'high' in order that the required information is printed to the output file. This has now been pointed out in the documentation, and the keyword added to the example input. -- Mike Towler, 2011-11-20 ---[v2.9.376]--- * Incorporated recent SB fix for segfault in the casino2upf/upf2casino PWSCF pseudopotential conversion utilities in utils/pseudo_converters/pwscf. -- Mike Towler, 2011-11-20 ---[v2.9.375]--- * Flagged as REDUNDANT old 'parallel_keywords' input keyword (which makes certain old keywords NMOVE etc. behave like the new set VMC_NSTEP etc.) If you want to do that, just use the new keywords. -- Mike Towler, 2011-11-20 ---[v2.9.374]--- * Removed leftover debugging statement. -- Mike Towler, 2011-11-19 ---[v2.9.373]--- * Added new utility 'twistav_pwscf' to do automatic twist-averaging calculations on real systems using CASINO in collaboration with the PWSCF code. This is now fully documented in the manual (see the twist-averaging bit at the end) and in CASINO/utils/twist/PWSCF/README). This has various advantages over the equivalent twistav_castep script, mainly because it is fully integrated into the CASINO architecture system (meaning it should run automatically on any system, batch or otherwise) and the full range of run-time runqmc/runpwscf options are available. PWSCF itself by default works only with binary bwfn.data.b1 files which obviates the need for using huge bwfn.data files as in castep, and no multi-step conversions involving e.g. castep2casino and blip utilities) are required. Also modified the clearup_twistav script so that it deals with PWSCF files. Further testing may reveal some bugs - since this is quite complicated. -- Mike Towler, 2011-11-19 ---[v2.9.372]--- * arch: added Kan Balam cluster in UNAM -- Pablo Lopez Rios, 2011-11-17 ---[v2.9.371]--- * Warning message in patch 2.9.368 should advise multideterminant or twist-averaging. Fixed. -- Mike Towler, 2011-11-16 ---[v2.9.370]--- * Description of the 5 or 6 input keywords controlling VMC/DMC twist-averaging (both in esdf_key and in the manual) was unclear and incomplete (in particularly it did not make it clear that this works only for HEG fluid phases). Updated. -- Mike Towler, 2011-11-16 * autotest: changed number of points in neon_atom/<1D>_plot to 16. -- Priyanka Seth, 2011-11-16 The autotest will now work when running in parallel on 4 cores. ---[v2.9.368]--- * bwfdet: prevent multiple warnings advising multideterminant calculations. -- Pablo Lopez Rios, 2011-11-15 ---[v2.9.367]--- * Moved Neil's 'Reducing the computational expense of DMC equilibration' section of the manual into the DMC section, rather than in some random place near the end. -- Mike Towler, 2011-11-15 ---[v2.9.366]--- * autotest: fixed error in h2o multidet examples. -- Priyanka Seth, 2011-11-15 ---[v2.9.365]--- * As the definition of the new bwfn.data.bin has been around the block a bit, I added a definitive list of the benefits of the new format over the old bwfn.data.b1 to the manual (under 'List of principal input files'). -- Mike Towler, 2011-11-15 To summarize here (following PLR discussion): - Extensible and flexible, by using labels for groups of data and a format version string at the start of the file (instead of by means of hacks). - Portable between different compilers on same-endianness machines. - Detection of different-endianness machines. - Reduced size of up to 50% for spin-polarized systems (not, as stated in patch 2.9.268, through de-duplication of redundant orbitals, but because e.g. the old avc array of blip coefficients had a "spin" index, and the orbital index was 1:maxval(num_nonloc), while the new avc array does away with the spin index and its orbital index is 1:sum(num_nonloc), so you save abs(neu-ned)*product(nr) entries in the array (x4 bytes/entry for dp real coeffs, etc), both in memory and in the binary blip file. - Up to 4 times faster to write (to quote a figure, the actual amount will vary depending on the case) ---[v2.9.364]--- * Fixed nasty compiler segfault error with Intel ifort 12.1. -- Mike Towler, 2011-11-15 For some mysterious reason, the segfault goes away if I replace the perfectly legitimate line : pt_to%pt_ageelec(1:netot)=pt_from%pt_ageelec(1:netot) in copy_config_dmc (dmc.f90) with do i=1,netot pt_to%pt_ageelec(i)=pt_from%pt_ageelec(i) enddo Bizarre. ---[v2.9.363]--- * Fixed some typos in examples and run scripts. -- Mike Towler, 2011-11-14 ---[v2.9.362]--- * Input files for new twistav examples used old-format keywords. Changed to new format. -- Mike Towler, 2011-11-14 ---[v2.9.361]--- * Minor edit. -- Mike Towler, 2011-11-14 ---[v2.9.360]--- * Following previous blip patch, old format .b1 files were still being converted to .bin files by default (though this could be changed by setting write_binary_blips to F - this keyword also controlled the formatted bwfn.data-->bwfn.data.bin conversion). As the advantages of doing this for .b1 are less clear than for .bin, and as .bin is still unsupported by PWSCF, I added a new keyword CONV_BINARY_BLIPS which controls the bwfn.data.b1-->bwfn.data.bin conversion. Unlike WRITE_BINARY_BLIPS, this is F by default. -- Mike Towler, 2011-11-14 ---[v2.9.359]--- * bwfdet: fix location of an errstop in read_old_binary. -- Pablo Lopez Rios, 2011-11-14 ---[v2.9.358]--- * bwfdet: restored evaluation speed, restored b1 reading speed, bugfixes. -- Pablo Lopez Rios, 2011-11-14 - Reversed order of IR loops in evaluation routine. - Moved IORB index from back to front of [c]avc_{s,d}p, as it was in v2.8, since this is hugely advantageous. - Extended blip coefficient arrays are now written in chunks to .bin, as was done with the old .b1 format, to avoid writing/reading past the maximum record lenght of the Fortran compiler. This does not affect reading or writing speed. - Moved blip copying and multiplication code to dedicated, optimized routines, where all grid handling (e.g. wrapping around the edges of the grid, etc) now takes place. - Replaced the use of orbmasks with index ranges to aid spin-polarized calculations (which is applicable to other xwfdet modules). Range computation lives in a new get_numerical_orbrange routine in the numerical.f90 module. - get_omp_index_range will now divide loops running from istart to iend (which are INTENT(inout) now) instead of from 1 to n. - Fixed race condition in bwfdet OpenMP code (first race condition I come across; it's "fun" to re-run the exact same calculation and obtain completely different answers..). - Removed OpenMP errstop on ne{u,d}13GiB in size and the binary file is of about 2GiB in size: - bwfn.data file is read in 33% less time than in v2.8. And judging by a separate test, the master-only reading scheme is cutting about 67% off the time CASINO waits for I/O while reading on 48 cores. - bwfn.data.bin is written in 25% of the time it took for v2.8 to write the bwfn.data.b1 file. - bwfn.data.bin is read in about the same time (+- 5%) as bwfn.data.b1. - bwfn.data.b1 is read in about 30-50% more time than it took v2.8 to read it. - blips are now evaluated 5-10% faster than in v2.8. There is some evidence that gradient and Laplacian computation is somewhat slower and values are computed faster, but there is contradictory evidence pointing at both being faster. Your kilometrage may vary. * arch: added CASINO_ARCH linuxpc-sun-parallel.tcm -- Pablo Lopez Rios, 2011-11-14 * runqmc: force use of OpenMP binary if --tpp|-t in command line (even if =1). -- Pablo Lopez Rios, 2011-11-14 * install: fix check for mktemp version. -- Pablo Lopez Rios, 2011-11-14 * bwfdet,pwfdet: bug fix. -- Priyanka Seth, 2011-11-14 * pwfdet: removed de-duplication ; all orbitals are now indexed. -- Priyanka Seth, 2011-11-14 * bwfdet: modify read routine to remove conversion from .b1 to. bin files. -- Priyanka Seth, 2011-11-14 De-duplication of orbitals by comparing k-vectors and eigenvalues is removed; all orbitals are read and indexed. Also reinstated write_binary_blips keyword (.true. by default) to convert bwfn.data or bwfn.data.b1 files to bwfn.data.bin files. * Added example for twistav_pwscf (CASINO/examples/crystal/twistav/PWSCF). -- Mike Towler, 2011-11-14 ---[v2.9.350]--- * Various improvements to runqmc and runqmcmd scripts. -- Mike Towler, 2011-11-13 - Update runqmc/runqmcmd so that they work seamlessly with upcoming twistav_pwscf script. - The splitqmc facility in runqmcmd had got broken. Fixed. ---[v2.9.349]--- * Foolproof handling of logical variables in pw2casino.dat for runqmcmd. -- Mike Towler, 2011-11-12 ---[v2.9.348]--- * Rewrote the manual section on twist averaging. -- Mike Towler, 2011-11-10 * Fixed typo. -- Neil Drummond, 2011-11-10 ---[v2.9.346]--- * Accidentally omitted utils/Makefile from patch 2.9.344. Fixed. -- Mike Towler, 2011-11-09 ---[v2.9.345]--- * Added example for twist-averaging of real systems with CASINO and CASTEP (see examples/crystal/twistav). PWSCF example to be added later. -- Mike Towler, 2011-11-09 ---[v2.9.344]--- * Updated directory structures, Makefiles and utility titles to allow for twist-averaging of real systems using DFT codes other than CASTEP. Added placeholders for PWSCF twist-averaging utilities (to be written). Name changes: 'twistav' becomes 'twistav_castep' and the auxiliary program 'twistoffset.f90' becomes 'twistoffset_castep.f90'. Similar conventions to be followed for other codes. The clearup_twistav script will be universal, and trained to recognize the presence of i/o from different codes. -- Mike Towler, 2011-11-09 * Modified twistoffset to avoid a gfortran compiler bug. -- Neil Drummond, 2011-11-09 ---[v2.9.342]--- * Moved contents of CASINO/examples/test_results (one file containing some CRYSTAL wfn converter tests) into CASINO/data. Deleted the test_results directory. -- Mike Towler, 2011-11-09 ---[v2.9.341]--- * The 'runcrystal' script still believed internally that it was called 'run' (as it used to be) - so that it printed out things like 'Usage : run -a -b -c' etc. Fixed. -- Mike Towler, 2011-11-09 ---[v2.9.340]--- * Original instructions for using git in examples/TEST/README were not correct. Fixed. -- Mike Towler, 2011-11-09 ---[v2.9.339]--- * Documentation of autotest feature in examples/TEST/README was not updated following patch 2.9.315. Fixed. -- Mike Towler, 2011-11-09 ---[v2.9.338]--- * Some improvements to runpwscf and runqmcmd scripts. -- Mike Towler, 2011-11-09 (1) When divining values of PWSCF input keywords, both scripts now deal correctly with cases where the same keyword is defined multiple times in a PWSCF input file. This would be either a mistake (multiple uncommented lines - which the script needs to deal with before PWSCF reads it) or not (multiple instances of the same keyword, all but one of which is commented out). The previous incarnation of this did not deal with comments correctly. (2) runqmcmd now behaves as expected with the --background/-B flag, that is, the bit of the script which loops over all the different calculations to be done has been made into a bash function which is put in the background on request, and the script then exits immediately. The --background/-B flag is still passed to runqmc and runpwscf as before. ---[v2.9.337]--- * Added extended CASINO_ARCH file linuxpc-intel-pbs-parallel.cx1.hpc.ic.arch to the database (for the CX1 cluster at Imperial). -- Mike Towler, 2011-11-04 ---[v2.9.336]--- * PWSCF contains a small bug whereby the pw2casino.dat file is not read if the user sets the input keyword 'outdir' (the directory where the output files are put) to be anything other than '.' (the current directory). Rather, it expects the pw2casino.dat file to be present in outdir, which is a bit silly. The practical upshot of this is that when using PWSCF to generate CASINO wave function files it always produces the default (a bwfn.data.b1 file with double precision blip coefficients) and ignores any user requests to do otherwise. This will be fixed in PWSCF, but in the meantime (and for people who never upgrade their PWSCF) I have implemented a workaround in runpwscf whereby the script detects the value of outdir and copies the pw2casino.dat file (if it exists) to outdir. -- Mike Towler, 2011-11-04 * PWSCF input files are a bit too flexible for their own good - added a better function for grabbing values of PWSCF input keywords from the input file (based on a PLR code fragment) to runpwscf and runqmcmd. This should work regardless of punctuation, or how many keywords are present on a single line of input. -- Mike Towler, 2011-11-04 ---[v2.9.334]--- * Major revision of the manual, which had become increasingly out of date. -- Mike Towler, 2011-11-03 Substantially altered or added stuff : the whole "How to run CASINO section"; the "Installing CASINO" section ; how to use runqmc ; DMC-MD ; dmc.status ; on-the-fly reblocking ; autotest ; dwfn.data ; files used by CASINO figure ; Style guide ; hard sphere interactions ; modern review articles in the bibliography ; better section references. Lots of other minor edits. Also changed the various examples files referred to in "How to run CASINO" which no longer matched the descriptions given. ---[v2.9.333]--- * Fixed bug giving rise to MPI error if trying to use varmin_linjas to optimize the non-linear u_RPA or three-body W terms in the Jastrow. -- Mike Towler, 2011-11-03 This was presumably not trapped out since u_RPA and W were added after the development of varmin_linjas. ---[v2.9.332]--- * Redid previous patch, this time correctly. -- Mike Towler, 2011-11-03 ---[v2.9.331]--- * Fixed typo in history.f90. -- Mike Towler, 2011-11-03 ---[v2.9.330]--- * Added a new figure 'prog3_new.pdf' to manual/src/figs, which will be used in the new version of the manual (this is the picture showing the relationship between all the input and output files). -- Mike Towler, 2011-11-03 ---[v2.9.329]--- * Fixed a nasty bug (in init_vmc_counters in vmc.f90) which could occur when writing out configs, incorrectly leading to whining about"Have not reached the total number of configs yet". -- Mike Towler, 2011-11-03 Turned out be a roundoff error encountered in working out a number used to evaluate which steps should write out a config. The expression was nwrsteps = INT ( nblock * nmove * nvmcave / nwrcon ) where the four quantities inside the brackets were all previously converted to double precision numbers (e.g. 1.d0 * 834.d0 * 1.d0 / 834.d0 ). Often this could give e.g. 0.999999999999999999999 which INT then helpfully truncates to 0, instead of the intended 1, meaning that no configs were ever written out. Fixed by evaluating the expression with integer arithmetic. ---[v2.9.328]--- * Added 'dimer' to list of possible values of ATOM_BASIS_TYPE in esdf_key.f90. -- Mike Towler, 2011-11-02 ---[v2.9.327]--- * Added example for DMC-MD in examples/md/h2o, including both PWSCF and CASINO input files. Example is water molecule with 1 stretched bond. Run using 'runqmcmd' -- Mike Towler, 2011-11-01 ---[v2.9.326]--- * CASINO USERS. -- Mike Towler, 2011-11-01 * gauss_per: removed unused but imported routines. -- Priyanka Seth, 2011-11-01 * autotest: ignore "Using binary named ..." in diff. -- Priyanka Seth, 2011-11-01 ---[v2.9.323]--- * Data written to 'out' file concerning result of DMC_REWEIGHT_CONFIGS and DMC_SPACEWARPING was not formatted correctly. Now it is. -- Mike Towler, 2011-10-31 ---[v2.9.322]--- * bwfdet: read_old_binary fix for bug reported by MDT. -- Priyanka Seth, 2011-10-31 It turns out that computed_occupancy was not obsolete. Renamed to uncomputed_occupancy, which is more logical. ---[v2.9.321]--- * Stopped DMC from automatically writing out 'Time spent on reweighting and space warping' whenever these options are activated (it's always effectively zero anyway). -- Mike Towler, 2011-10-31 ---[v2.9.320]--- * bwfdet: add timer for write_binary. -- Pablo Lopez Rios, 2011-10-30 * runqmc: do not grep entire blip files. -- Pablo Lopez Rios, 2011-10-30 ---[v2.9.318]--- * bwfdet: fix a crash with complex blip orbmap computation. -- Pablo Lopez Rios, 2011-10-29 ---[v2.9.317]--- * bwfdet: indentation fixes. -- Pablo Lopez Rios, 2011-10-28 ---[v2.9.316]--- * Added error / warning if a finite system is not placed in the middle of the blip grid in finite-periodicity blip calculations. -- Neil Drummond, 2011-10-28 ---[v2.9.315]--- * autotest: use runqmc to run CASINO -- Pablo Lopez Rios, 2011-10-28 This removes the need for all types of machine-dependent work-arounds, avoids brokenness under some set-ups, gets slave-node output into the main 'out' file, and a myriad of other benefits. Also added the ability to pass options to runqmc directly using the syntax '-- '. This allows, for example, running SHM and OpenMP autotests, controlling the size of parallel autotests, etc. Also made all long-style options start with '--' instead of '-' (e.g., '--library') for conformance with runqmc. Also removed '--verbose', '--time', '--checkwarn' and '--version' from the list of available options: the first three are now the default, and the last is accessible via runqmc options. * comms_parallel: divide into _mpi1 and _mpi2 versions -- Pablo Lopez Rios, 2011-10-28 - Implemented alternative mpi_gather_in_place using MPI-1 in comms_parallel_mpi1. This allows CASINO to be compiled with an MPI-1 library again (after 3 years requiring MPI-2). - Added an MPI_VERSION variable (with default 2) to the build system to allow selecting which type of library we are linking against. - Made the install script allow MPI-1 libraries when creating new CASINO_ARCHs. - Added CASINO_ARCHs linuxpc-ifort-parallel.tcm-lam and linuxpc-ifort-parallel.tcm-mpich for use in TCM, mostly to help with testing of MPI-1 compilations. - Fixed a problem in CASINO_ARCH linuxpc-ifort-parallel.tcm where CC was defined to be Intel's C compiler but the parameters for GCC were imported instead. ---[v2.9.313]--- * alloc_shm.c: formatting and indentation. -- Pablo Lopez Rios, 2011-10-26 ---[v2.9.312]--- * Updated CHANGES and README files in preparation for 2.10 release. -- Mike Towler, 2011-10-26 ---[v2.9.311]--- * install: add *csh support, allow choosing "save" with unmodified config. -- Pablo Lopez Rios, 2011-10-25 The .cshrc.casino file simply calls .bashrc.casino. There is no facility to change CASINO_ARCHs like there is for bash. * Minor edit. -- Mike Towler, 2011-10-25 ---[v2.9.309]--- * arch: added intelmac-g95. -- Pablo Lopez Rios, 2011-10-25 ---[v2.9.308]--- * Fixed recently broken DMC pair-correlation calcs. -- Mike Towler, 2011-10-25 Patch 2.9.297 introduced various error traps related to the presence or absence of the dmc.hist file under various circumstances - which unfortunately ignored the fact that PCF accumulation requires two full DMC calculations (with and without a fixed electron) whilst the same dmc.hist file is present. CASINO has now been reminded of this. ---[v2.9.307]--- * bwfdet: restore support for reading bwfn.data.b1. -- Priyanka Seth, 2011-10-25 The bwfn.data.b1 binary file will be read on the master node, then bwfn.data.bin will be written and re-read by the usual routine. This is the simplest approach, but will be slower on first run - and the recent DMC-MD functionality critically depends on first-run read speed. Further refinement will be necessary. bwfdet cosmetic changes and minor fixes also included. Minor corrections by PLR. ---[v2.9.306]--- * gauss_per*: reinstated sparse matrix multiplier -- Pablo Lopez Rios, 2011-10-24 This finishes the work started in a previous patch, extending the new multiplier to gauss_per{,_bf,_cusp,_cusp_bf}. For the nio444 example (which involves the gauss_per.f90 module), the WFDET timer indicates that the new code is 7% faster than the mxmb-based old-interface code, and 55% faster than before this commit (same compiler and machine as previous patch). * Minor tweaks. -- Mike Towler, 2011-10-24 ---[v2.9.304]--- * wfn_check: fixed bug introduced in 2.9.257 (g24eef2) which made autotest fail. -- Pablo Lopez Rios, 2011-10-21 * monte_carlo: removed unused USEd routine. -- Pablo Lopez Rios, 2011-10-21 * src: auto-updated Makefile. -- Pablo Lopez Rios, 2011-10-21 * gauss_mol*: restore specialized sparse Gaussian matrix multiplier. -- Pablo Lopez Rios, 2011-10-21 Created a 'multi_ddot_s' function to perform the operation previously carried out by mxmb. It uses pre-computed sparsity (as opposed to mxmb's on-the-fly sparsity detection), 1x6 blocking (as opposed to mxmb's 2x5 blocking), accepts the orbmask as an argument, and is much nicer to read. For the particular example of Si2H6 with which the routine was tuned, evaluation of molecular Gaussian orbitals is now 49% faster than before this patch, and 11% faster than before the new Gaussian interface was implemented [this refers to WFDET timers]. Changes to gauss_per* will follow. Timings gathered to determine optimal method (without orbmask) [s]: -------------------------------- Old interface 64.85 mxmb, no sparsity 74.36 mxmb 65.73 ddot + loop 87.05 ddot_s + loop 73.98 multi_ddot_s 65.96 2x5-blocked multi_ddot_s 60.56 -------------------------------- Timings gathered to determine blocking size (with orbmask) [s]: ----------------------------------------------- XSIZE YSIZE 3 4 5 6 7 8 1 63.04 60.82 59.80 58.60 60.22 60.56 2 64.83 62.36 60.30 60.17 61.69 63.58 3 66.83 64.06 62.78 4 69.36 66.12 66.79 ----------------------------------------------- The above numbers might incur errors of order 1 second. The compiler is ifort 11.1 and the machine is a 4-core Woodcrest. * autotest: added '-notwith' and '-onlywith' options -- Pablo Lopez Rios, 2011-10-21 These option allows one to select tests depending on which files they use. E.g. 'autotest -onlywith gwfn' will only run those tests that use Gaussian orbital files gwfn.data, while 'autotest -notwith casl' will skip all runs with parameter.casl files. ---[v2.9.299]--- * Minor edit. -- Mike Towler, 2011-10-21 ---[v2.9.298]--- * Fixed typo in patch 2.9.288 -- for 'colon' read 'equals sign'. -- Mike Towler, 2011-10-21 ---[v2.9.297]--- * Various aspects of the history mechanism which writes the dmc.hist file were untidy or misleading. Now fixed. -- Mike Towler, 2011-10-19 A clean dmc.hist file ought to have the the following structure with a monotonically increasing sequence number at the beginning of each line. HEADER # Raw QMC data 1 equil data line 1 2 equil data line 2 #### START STATS 3 stats data line 1 4 stats data line 2 Existing mechanism had the following 3 problems (though note that these are only errors in the strictly literal sense, since reblock and all the utilities were designed to cope with them. Problem (2) could be a serious error in the sense that there was nothing to stop you appending onto an old hist file completely unrelated to the present calculation.). (1) dmc_equil calculation wrote '#### START STATS' onto the end of the hist file. This assumes that the run won't be continued by another dmc_equil or by dmc_dmc which is not necessarily true. Solution: made sure it writes out '#### START STATS' only when it actually starts writing out the stats bit. (2) In the case of newrun=T and an already existing dmc.hist file, the new data would get added onto the end with sequence numbers starting again from 1, and multiple instances of '#### START STATS'i.e. HEADER 1 equil data line 1 2 equil data line 2 #### START STATS 3 stats data line 1 4 stats data line 2 1 equil data line 3 2 equil data line 4 #### START STATS 3 stats data line 1 4 stats data line 2 This could potentially be a serious problem if you have a tendency to leave old dmc.hist files lying around. Solution: get the code to errstop, if newrun=T and dmc.hist exists. (both in CASINO itself and in runqmc). Note that a NEWRUN=T calculation should still not be allowed to append to dmc.hist for restarted, different nuclear configurations on a DMC-MD trajectory (since the header would be wrong for a start). The runqmcmd utility therefore creates a separate dmc.hist file for each restarted configuration, and renames them as dmc.0, dmc.1, etc. Functionality will be added to plot_hist or whatever so that the energies from the different hist files can be plotted in a single graph. (3) Problem if we created a dmc.hist file which includes some stats accumulation, then continued with NEWRUN=F and any one of dmc_dmc/dmc_equil/dmc_stats. Although the sequence numbers in the resulting hist file would be correct, there may be (a) multiple instances of '#### START STATS', and (b) equilibrium data after stats data. Solutions: - if doing equilibration, attempting to write a dmc.hist file already containing '#### START STATS' is now treated as an error. - if we are doing stats accumulation, the file already contains '#### START STATS', so don't write it again. ---[v2.9.296]--- * Removed all the many redundant appearances of the IACCUMULATE keyword in the examples/TEST inputs. -- Mike Towler, 2011-10-19 ---[v2.9.295]--- * Reverted patch 2.9.200 ("make errstop* use mpi_finalize instead of mpi_abort"). Unfortunately mpi_finalize needs to be invoked on all the cores, so if errstop is invoked only on the master (which it frequently is) then this will cause the code to hang. -- Mike Towler, 2011-10-19 ---[v2.9.294]--- * Fixed typo in previous. -- Mike Towler, 2011-10-19 ---[v2.9.293]--- * Clarified meaning of the deprecated but still common usage 'runtype : dmc' in esdf_key and in the manual (i.e. that it is equivalent to dmc_dmc, unless the now-deprecated iaccumulate is used). -- Mike Towler, 2011-10-19 ---[v2.9.292]--- * bwfdet: prevent false positives in orbital de-duplication by checking band index. -- Pablo Lopez Rios, 2011-10-19 ---[v2.9.291]--- * Documentation for previous. -- Mike Towler, 2011-10-18 ---[v2.9.290]--- * Added some very simple scripts runqmcmd/extr_casino and runqmcmd/extr_pwscf that grab the sequence of energies (and error bars) from the output of a DMC-MD run, and write them to plot files. -- Mike Towler, 2011-10-18 ---[v2.9.289]--- * Revert "bwfdet: routine to read old binary file" -- Pablo Lopez Rios, 2011-10-18 This reverts the last part of patch 2.9.284, which accidentally crept into the repository a couples of days ago. ---[v2.9.288]--- * Extraction of nmdstep from PWSCF input file by runqmcmd could fail if there was not a space either side of the colon as in 'nstep : 100'. Fixed. -- Mike Towler, 2011-10-17 ---[v2.9.287]--- * Fixed obscure bug in runqmcmd script which occurs only in "MD trajectories" of length 1. -- Mike Towler, 2011-10-17 ---[v2.9.286]--- * Added dos2unix functionality to runqmcmd after receiving weirdo Mac files from Dario Alfe. -- Mike Towler, 2011-10-17 ---[v2.9.285]--- * Please note - the 'reading in old bwfn.data.b1' files patch just added in 2.9.284 completely does not work (i.e. it won't even compile). Do not use this version of the code until further notice. -- Mike Towler, 2011-10-17 ---[v2.9.284]--- * Previous change should also have been made at another place in runqmc, and also in runpwscf. Done. -- Mike Towler, 2011-10-17 * runqmc: only use setsid if it exists -- Pablo Lopez Rios, 2011-10-17 * bwfdet: routine to read old binary file -- Priyanka Seth, 2011-10-15 This will read the old bwfn.data.b1 binary on the master node, write bwfn.data.bin and then re-read bwfn.data.bin and broadcast the data to slave nodes. By doing it this way, calls to mpi_broadcast do not need to be repeated and we can be sure data is communicated and arrays allocated in the correct order. * Minor correction to manual/README. -- Mike Towler, 2011-10-15 ---[v2.9.280]--- * Added description of how to do coupled DFT-DMC molecular dynamics calculations to the manual (Note that since patch 2.9.268, the MD facility is effectively broken since the bwfn.data.b1 data format which PWSCF produces was deleted and replaced by bwfn.data.bin. Work is under way to restore the ability to read old bwfn.data.b1 files). -- Mike Towler, 2011-10-14 ---[v2.9.279]--- * Added full description of runqmc with all options near the beginning of the manual (useful reference for older users since all these options have changed since the last release). -- Mike Towler, 2011-10-14 ---[v2.9.278]--- * Redid previous patch in a better way. -- Mike Towler, 2011-10-14 ---[v2.9.277]--- * Parallel C compilation was broken on the following CASINO_ARCHs, meaning that 'make Shm' would not work (since the introduction of the new ARCH system post-2.8). Fixed. linuxpc-absoft-parallel, linuxpc-g95-parallel, linuxpc-gcc-parallel, linunxpc-ifort-parallel, linuxpc-path-parallel, linnuxpc-sun-parallel -- Mike Towler, 2011-10-13 ---[v2.9.276]--- * Code failed to compile on hector with gcc compiler, hitting an 'internal compiler error' on singleton.f90. This was cured by downgrading the optimization level from -O3 to -O1 in linuxpc-ifort-pbs-parallel.hector2b.arch. Effect on speed untested but at least it compiles now. -- Mike Towler, 2011-10-13 * Changed default C compiler on linuxpc-ifort-parallel.tcm.arch and linuxpc-ifort-parallel.brutus.arch from gcc to mpicc, so that 'make Shm' now works. This probably needs a wider fix. -- Mike Towler, 2011-10-13 ---[v2.9.274]--- * Fixed typo in previous. -- Mike Towler, 2011-10-13 ---[v2.9.273]--- * PGF compiler on hector failed to compile perfectly legitimate ion_dist utility. Rewrote the utility in simpler manner until it started working. -- Mike Towler, 2011-10-13 ---[v2.9.272]--- * Fixed an uninitialized variable problem in gbasis.f90 which was causing some compilers to whine. -- Mike Towler, 2011-10-13 ---[v2.9.271]--- * Removed references to deleted keywords from the manual, and rewrote the relevant sections pertaining to blip files. -- Mike Towler, 2011-10-13 * Removed deleted keywords NUM_CPUS_IN_GROUP and USE_MPIIO from example input files. -- Mike Towler, 2011-10-13 ---[v2.9.269]--- * Variable orb_m had incorrect 'INTENT out' attribute in blip3dgamma and blip3dloc (bwfdet.f90) since it was initialized in the calling routine. -- Mike Towler, 2011-10-13 ---[v2.9.268]--- * bwfdet: some tidying up of blip module. -- Pablo Lopez Rios, 2011-10-12 - Split write_binary out of read_formatted. - Made erroring out on failed binary reads actually work. - Gathered post-failed-read deallocations in separate routine. - Added a stub for 'read_old_binary' to restore support for bwfn.data.b1 files, which will be implemented shortly. * wfdet_basis: removed temporary dual wfdet/wfdet2 structure. -- Priyanka Seth, 2011-10-12 Now that all orbital types are handled via the new interface, have done the following tidy-up: - Removed variable wfdet_new_interface. - Removed use of wfdet routine and removed the routine itself. - Renamed wfdet2 to wfdet. * bwfdet: moved to wfdet2 interface, de-implemented unneeded features, cleaned up. -- Priyanka Seth, 2011-10-12 This includes: - Removed NUM_CPUS_IN_GROUP facility and associated functionality; this keyword is now redundant and ignored. - Removed MPI-IO and associated functionality; the keyword USE_MPIIO is now redundant and ignored. - Keyword WRITE_BINARY_BLIPS is now redundant and ignored - binary blip file is always written. - Removed wfdet_synchronize routine and mpi_types module. - Redesigned binary blip file: - The binary file is called bwfn.data.bin. - Its format is now extendable thanks to the use of data labels. - Files are portable between same-endianness machines and compilers. This is done by avoiding writing logical variables directly, which are represented differently by each compiler (see new log2int and int2log functions in numerical module). Where portability is not possible, CASINO should now be able to error out nicely thanks to an endianness check now included in the binary file. - Orbitals read from bwfn.data are de-duplicated based on their eigenvalues and k-vectors, which means that the binary file should now be of about half the size of the old bwfn.data.b1 for typical spin-polarized calculations. - bwfn.data* files now only read on master node, and then broadcast. - Deprecated bwfn.data.mpi_bin and bwfn.data.b{2,3,...} binary files, instructing the user what to do to run the calculation correctly in the event of trying to use them. - Reordered indices of blip coefficient arrays to match the order in bwfn.data, so that this file is faster to read. - Optimized orbital evaluation by buffering indices in loops. - Stopped using 'CONTAINS' in blip evaluation routine to avoid messing up variables - all three blip3d* routines are now separate and independent. - Tidied up setup routine. - Removed nhit and nmiss counters. - Added 4-dimensional version of relevant routines in parallel.f90 and shalloc_*.f90. - Added a copy_rmap_orb_to_det routine to convert sparsity map to multideterminant-column shape alongside orbitals. In the process, fixed: - A 3-year old bug preventing the use of localized orbitals in some test cases. - OpenMP support, which was entirely broken. Note, however, that there exists an issue with OpenMP where multi-threaded blip calculations seem to give different kinetic energies from those their single-threaded counterparts evaluate. This needs to be looked into in the near future. - Minor inconsistencies between real/complex shalloc_smp routines. Also in this patch: - Fixed generate_mpc_data.f90 which did not support wfdet2 interface. ---[v2.9.265]--- * Orbital sequence number in error message about being 'outside range for ideal polynomial curve' during Gaussian cusp setup was computed incorrectly. Fixed. -- Mike Towler, 2011-10-12 ---[v2.9.264]--- * Fixed error in format_timer_output (in run_control.f90) whereby number of hits was printed out incorrectly in the timing report if a particular routine was called more than 10^12 times. -- Mike Towler, 2011-10-12 ---[v2.9.263]--- * Fixed minor error in extrapolate_tau.f90. -- Mike Towler, 2011-10-12 ---[v2.9.262]--- * Density plotting in 3D in plot_mpc utility was broken. Fixed. -- Mike Towler, 2011-10-12 ---[v2.9.261]--- * The Jastrow q term was not being evaluated correctly in the case where only the value and the first derivative were required. Fixed in pjastrow.f90. -- Mike Towler, 2011-10-12 ---[v2.9.260]--- * Fixed long-existing error in evaluating F-term for 2D Jastrow factor (pjastrow.f90). -- Mike Towler, 2011-10-12 ---[v2.9.259]--- * The Cray compiler doesn't like someone's tendency to write infinite loops using e.g. do i=1,huge(1) and it whines about "The magnitude of the final value of the DO variable is too large", this being a fatal error or a warning depending on the context. -- Mike Towler, 2011-10-12 Fixed in the following: utils/converters_2.0/update_hist src/format_utils.f90 src/medt.f90 ---[v2.9.258]--- * Added new linuxpc-cray-pbs-parallel.hector2b.arch file - enabling use of Cray compiler on Hector (Cray XE6) machine in addition to the pathscale, pgf and gnu compilers. -- Mike Towler, 2011-10-12 Apparently the pathscale compiler is being deprecated on Hector since it won't be able to generate the new instructions used by the new AMD chip one on the Hector Phase III machine, so one has to choose between pgf, gnu and cray. (Note that this presumably accounts for all the nonsense in 2.9.256.) One issue which I'll look at later. I've disabled OpenMP support for the Cray compiler has been turned off, bizarrely because it is *enabled by default*, and so we turn it off with -h noomp by default in FFLAGS_opt. Need to investigate how to convince the build system to turn it on again. ---[v2.9.257]--- * Fixed problem in wfcheck.f90 which could lead to "An OPTIONAL actual argument is not allowed in this context" compiler error. -- Mike Towler, 2011-10-12 ---[v2.9.256]--- * Fixed broken pathscale compilation on Hector machine. -- Mike Towler, 2011-10-12 Code was failing to compile on hector using pathscale compiler with an apparent sudden inability to deal with MPI2 calls. Turns out to be because the new default MPI library xt-mpt/5.3.1 was released without Pathscale support. The obvious substitute xt-mpt/5.3.2 requires pathscale/4.09 which is not installed on hector, so we can't use that. Solution is therefore to downgrade to xt-mpt/5.3.0 with module swap xt-mpt xt-mpt/5.3.0 but then you find this doesn't work, because it can't find some sci_istanbul library. So if we add module swap xt-libsci xt-libsci/10.5.02 then it compiles, albeit whilst repeatedly whining about 'the use of mktemp being dangerous, better use mkstemp', which is probably harmless. Relevant arch file upgraded accordingly. Sigh. Love the module system. ---[v2.9.255]--- * pwfdet: fixes -- Priyanka Seth, 2011-10-12 - Added missing orbmask check. - Orbital uniqueness check now takes eigenvalues into account. ---[v2.9.254]--- * Updated doc/MACHINES and doc/bashrc.hector/jaguar to reflect current realities. -- Mike Towler, 2011-10-12 * Removed some redundant arch files. * Fixed error in arch/data/linuxpc-ifc-pbs-parallel.teragrid.arch * Fixes to runqmcmd, runqmc, and runpwscf to run DMC-MD calculations in a more user-friendly way. - Allowed DFT calc to be done on a different number of cores to the QMC ones (use the --nproc_dft flag to runqmcmd). - The runqmcmd script now works properly on batch machines. Added --splitqmc and --startqmc flags to runqmcmd which allow (1) splitting of long chains of DMC-MD jobs into multiple runqmc submissions on batch machines, and (2) restarting interrupted chains of MD jobs from specified points. - Fixed a few script bugs. ---[v2.9.253]--- * Updated doc/MACHINES file with current information. -- Mike Towler, 2011-10-04 ---[v2.9.252]--- * arch: improve support BSD-based and SunOS-based systems. -- Pablo Lopez Rios, 2011-10-03 This includes: - Added arch/data/os/freebsd.arch and a sample arch/data/freebsd-gnu.arch. - Stopped using tput -S where not available. - Removed unused tput codes from build-tools/bash-pretty.mk. - Resort to "tput ce" if "tput el" returns nothing. - Fixed Makefiles for a couple of utilities which assumed that lines after a comment line ending in \ would be understood to be a continuation of the comment (an error for BSD 'make'). - Added CORES_PER_NODE detection for FreeBSD, Mac OS X and SunOS. - Fixed scripts using 'find' with implicit path (in which case GNU 'find' defaults to '.' but BSD 'find' errors out). - Harmonized use of GNU and Sun 'nm' by using 'nm -p'. - Split use of GNU and Sun 'ld' to account for their different output format. Generic fixes: - Modified 'find'/'locate' arguments to search for mpif.h. - Fixed problem with generated .bashrc.casino whereby CASINO_ARCH would fail to be set on login on an architecture without automatic CORES_PER_NODE detection. - Added two missing (exit 0) to avoid bash fd leak. An outstanding issue about "interrupted system call" errors from shell scripts in FreeBSD is being investigated - likely, it would require redesigning some sections of these scripts to properly solve. ---[v2.9.251]--- * arch: fixed problems with BSD mktemp once and for all. -- Pablo Lopez Rios, 2011-10-02 ---[v2.9.250]--- * arch: updated Darwin/woodcrest data. -- Pablo Lopez Rios, 2011-10-01 ---[v2.9.249]--- * arch: fix typo in previous patch. -- Graham G. Spink, 2011-09-30 ---[v2.9.248]--- * arch: fixes for HP-MPI in CASINO_ARCH creation. -- Pablo Lopez Rios, 2011-09-29 HP-MPI behaves differently from other MPI libraries in that it requires mpirun to run single-process binaries. This is now correctly taken into consideration by the install script. NOTE: the installation of HP-MPI I've had the opportunity to look at (annoyingly) has its include files under $INSTALL_DIR/include/64 and its libraries under $INSTALL_DIR/lib/path64 - this is not supported by the automagic library search in the install script (hint for future improvement). Of course automagic search is unnecessary if there exists an "mpif90" wrapper, or if one looks up the -L/-I/-l flags in the documentation of the library/cluster. * arch: fix PathScale autodetection -- Pablo Lopez Rios, 2011-09-29 ---[v2.9.246]--- * main: corrected typo. -- Priyanka Seth, 2011-09-26 ---[v2.9.245]--- * bwfdet: fixed OpenMP support. -- Pablo Lopez Rios, 2011-09-26 ---[v2.9.244]--- * Removed extra whitespaces from all files. -- Priyanka Seth, 2011-09-26 ---[v2.9.243]--- * install: improvements to CASINO_ARCH generation. -- Pablo Lopez Rios, 2011-09-24 - Save results of "find" when probing MPI libraries, for speed. - Autodetect extra LD_LIBRARY_FLAGS when probing MPI libraries (this makes manual library selection work on Darwin, for instance, without loading any "modules"). - Prevent infinite loop when failing final_test for MPI library. - Pass -t to mktemp to create tmp.XXXXXX directories outside arch/data, and correctly remove them afterwards. - Correctly remember to write OpenMP settings if OpenMP explicitly enabled by the user. ---[v2.9.242]--- * pwfdet: minor tidying. -- Priyanka Seth, 2011-09-22 ---[v2.9.241]--- * monte_carlo: fixed type for redundant keywords. -- Priyanka Seth, 2011-09-22 ---[v2.9.240]--- * documentation: clean up to account for new arch system. -- Pablo Lopez Rios, 2011-09-20 Removed README_ARCH, merged README_INSTALL into README, updated FAQ, updated manual. * install: renamed casino_arch to casinoarch, improved. -- Pablo Lopez Rios, 2011-09-20 Now the casinoarch function installed to .bashrc.casino accepts a string to search for, so that one can change CASINO_ARCHs quickly by typing e.g. 'casinoarch nag'. The first matching CASINO_ARCH configured on the machine is selected. ---[v2.9.238]--- * Added missing 'redundant keyword warning' for ex-keyword SPIN_DENSITY_MAT. -- Mike Towler, 2011-09-19 ---[v2.9.237]--- * Fixed recently introduced DMC bug (attempt to deallocate unallocated array) which occurred only when input keyword REDIST_PERIOD was set to a non-default value ( > 1 ) by the user. Bug was fixed by the simple expedient of deleting the entire REDIST_PERIOD functionality - it has been demonstrated theoretically and in practice that performing DMC load balancing at intervals any longer than after every move gives no benefit whatsoever. -- Mike Towler, 2011-09-19 ---[v2.9.236]--- * Added --qmc_only and --dft_only options to runqmcmd script to allow e.g. rerunning of the QMC calculations off the same set of previously generated xwfn.data files using e.g. different input parameters, without having to regenerate the files. -- Mike Towler, 2011-09-14 ---[v2.9.235]--- * CASINO USERS -- Mike Towler, 2011-09-12 * wfdet_basis: new interface for gaussians. -- Priyanka Seth, 2011-09-12 Gaussians now use an orbmask to select which orbitals to evaluate. Determinants are then constructed from these orbitals in the slater module. Notes and things to fix later: * The variable split_pair has been removed. * As before, cusp corrections for excited states are not supported for periodic systems (although it seems that Neil had some ideas on how to remedy this). * An additional interface layer needs to be added to the orbmap to let it recognise excitations for different spins into the same orbital (ie. same k and band for periodic systems) as identical. * autotest: added gaussian examples including excitations. -- Priyanka Seth, 2011-09-12 * pwfdet: calculate orbmask in setup only if GPCCs are used. -- Priyanka Seth, 2011-09-12 ---[v2.9.231]--- * gpcc: renamed cusp_rpsi to cusp_val, in agreement with gauss* modules. -- Priyanka Seth, 2011-09-08 * gaussians: removed unused arrays val_s,etc. -- Priyanka Seth, 2011-09-08 * pwfdet: renamed variable. -- Priyanka Seth, 2011-09-08 * wfdet_basis,free_orb: new interfaces for more wfn types. -- Priyanka Seth, 2011-09-08 Added new interfaces for sdw, exwfdet and free orbitals. Also, separated the number of nuclear and heg orbitals in wfdet_basis. Note that different types of free orbitals cannot be combined at the moment. * gauss_mol*: fixed bug that causes error when GPCCs are used. -- Priyanka Seth, 2011-09-08 ---[v2.9.226]--- * Fixed minor bug encountered by PLR: the array of orbital values passed to gpcc.f90 from gaussians.f90 included unused orbitals, resulting in an uninitialized variable error. These are now zeroed. -- Neil Drummond, 2011-09-06 ---[v2.9.225]--- * CASINO users. -- Mike Towler, 2011-09-05 * Fixed bug found by PLR in determination of full spin-dependence for Gaussian orbitals, in which an unallocated array was used to determine whether orbital occupancies differed for up and down spins. Would only have affected calculations using equal numbers of promotions for spins 1 and 2 in each determinant [Bug introduced in commit e114494 (2.6 beta 198, from December 2009]. -- Neil Drummond, 2011-09-05 ---[v2.9.223]--- * gjastrow: fixed use of OPTIONAL arguments in previous patch. -- Pablo Lopez Rios, 2011-09-01 Done by shifting the use of array offsets to the routine calling the wrapper around the specific term evaluators. * gjastrow: fixed bug in e-n constraint application routine. -- Pablo Lopez Rios, 2011-09-01 ---[v2.9.221]--- * gjastrow: merged val|fd|sd routines (reverts part of g1c7d466, in v2.9.48) -- Pablo Lopez Rios, 2011-08-27 The split version of the code made it 3 times harder to implement changes (the assumption was that there would be no more changes to that portion of the code, but that turns out not to be the case) - the gjastrow module is now ~1850 lines shorter. Tests show that there is no measurable speed impact on the routines for e-e, e-n and e-e-n terms, while there appears to be an 8% slowdown on average in the routines for e-n-n-*, e-e-e-* and e-e-n-* and e-e-e-*-n-* after the merge. Speed enhancements other than massive code duplication will be investigated, and the splitting may be reinstated when the code is really not going to change anymore. ---[v2.9.220]--- * Code had stopped working on Jaguar, due to the module purge in the ENVIRONMENT_COMAND removing and not replacing required modules. Fixed. -- Mike Towler, 2011-08-27 ---[v2.9.219]--- * Disabled unsupported 'opt/prof/debug/dev' and 'gdb' options to runpwscf (thus these options may now be used with runqmcmd to refer only to the CASINO run). -- Mike Towler, 2011-08-26 ---[v2.9.218]--- * jeep_to_pwfn: fixed minor problem in Makefile. -- Pablo Lopez Rios, 2011-08-24 * numerical: added more resize_pointer variants, plus 'init' argument. -- Pablo Lopez Rios, 2011-08-24 * vmc: do not produce movie during equilibration. -- Pablo Lopez Rios, 2011-08-24 * f90wrap: moved its README to correct location, updated. -- Pablo Lopez Rios, 2011-08-24 ---[v2.9.214]--- * CASINO_USERS. -- Mike Towler, 2011-08-19 ---[v2.9.213]--- * numerical: minor prettification. -- Priyanka Seth, 2011-08-12 * gaussian modules: cleaned up unused additions/subtractions structure. -- Priyanka Seth, 2011-08-12 Such states (eg. ions) can be studied by specifying the desired number of particles directly in the input file. * autotest: created sd excited state si222 test. -- Priyanka Seth, 2011-08-12 ---[v2.9.210]--- * Three errors have been fixed in the Quantum Espresso/PWSCF code (and in the corresponding files copied for reference into the CASINO distribution) in respect of its CASINO support, viz: -- Mike Towler, 2011-08-11 (1) casino2upf converter could give iotk library error with certain compilers. With Portland compilers the reported properties of stdout are different to those found with gfortran or ifort. Problem fixed by making casino2upf write to a file as opposed to stdout. Relevant documentation updated in upftools/README (Espresso) and in utils/pseudo_converters/pwscf/casino2upf/INSTRUCTIONS (CASINO). (2) Total energy was not reported correctly in the case of exact exchange being used in pw2casino_write.f90. Now it is. (3) Total energy outputted to the bwfn.data file (and the blip coeffs) depended on the no of cores the job was run on. Turned out to be because in the dim and distant past a word length variable was changed from being defined in terms of real words to complex ones. The result of which is there was a missing factor of two on line 364 (2*nwordwfc not nwordwfc), Call replaced with a call to get_buffer that expects the complex word length as an argument (and checks to see if the wavefunction is already in memory before re-reading it from disk). This, for a silicon test case, removed the kinetic and non-local energy dependence on number of cores, giving a total energy that agrees with pwscf itself. Note also that there was another one of these erroneous calls in the actual wave function conversion process itself (line 219). For now, you need the latest SVN version to access these fixes. Thanks to Simon Binnie for help with this. ---[v2.9.209]--- * gaussians: allow number of electrons in input to differ from gwfn.data. -- Priyanka Seth, 2011-08-10 This allows one to do what additions and subtractions allow much more easily. ---[v2.9.208]--- * varmin: removed initial energy check. -- Pablo Lopez Rios, 2011-08-08 The energy check was largely redundant (especially since v2.2), and was coded in such a way that it would scale extremely poorly with the number of processors. Thanks to Tim Mueller for pointing out the problem. ---[v2.9.207]--- * Fixed spelling mistake. -- Mike Towler, 2011-08-06 * exmol: now applicable to any set of positively and negatively charged particles. -- Pablo Lopez Rios, 2011-08-06 TO DO: test this works * plot_2D: added -x11 option in case the default gnuplot output is different. -- Pablo Lopez Rios, 2011-08-06 * plot_2D: fix for gnuplot >= 4.4. -- Pablo Lopez Rios, 2011-08-06 ---[v2.9.203]--- * esdf/casl: allow TAB characters in input. -- Pablo Lopez Rios, 2011-08-03 - Modified esdf.f90 and casl.f90 modules to treat each TAB character as a single space. - Modified esdf.vim and casl.vim syntax files to treat each TAB character as a single space correlation.data files do not allow TABs - this would require changing all modules that read them, and I can't be bothered. * arch: fix writing interdependent time/core limits to .arch files. -- Pablo Lopez Rios, 2011-08-03 ---[v2.9.201]--- * runqmc: use a lock file to prevent many simultaneous runs in the same directory. -- Pablo Lopez Rios, 2011-08-02 Also added an option to delete lock files, --unlock / -u, which is suggested to the user when a locked directory is encountered. Also, was writing "Job finished ..." to only the last of a multi-job set of runs - fixed. * run_control: make errstop* use mpi_finalize instead of mpi_abort. -- Pablo Lopez Rios, 2011-08-02 Users often see the very verbose MPI error message at the end of an output file (caused by calling mpi_abort from errstop) and think it is a cryptic error message from CASINO itself. This should not happen any more. * ppots: fixed wrong error message related to HAVE_AE / ALLOW_AE_PPOTS. -- Pablo Lopez Rios, 2011-08-02 Also made the default value of HAVE_AE a bit more sensible and fixed two examples which crash due to not having HAVE_AE defined. * bash-pretty.mk: don't assume we have a TERM defined when compiling. -- Pablo Lopez Rios, 2011-08-02 * rna: work around /sbin not being in the PATH to locate ifconfig. -- Pablo Lopez Rios, 2011-08-02 ---[v2.9.196]--- * install: bunch of fixes. -- Pablo Lopez Rios, 2011-07-31 - Fixes for Mac OS X: - Do not use \n to insert newlines - Always specify template for mktemp - Do not use getent where not available - Do not assume .bashrc ends in newline - Reload file list after generating a new CASINO_ARCH - Fixed writing automatically-detected C flags - In build-tools/update-version, prevent identifying the CASINO directory as a git repository just because it's a subdirectory of a git repository (e.g., due to having $HOME version-controlled by git) * arch: fixed IFS problem affecting install script. -- Pablo Lopez Rios, 2011-07-31 * rna: added "offset", saner ssh/scp. -- Pablo Lopez Rios, 2011-07-31 * install: created "install" script. -- Pablo Lopez Rios, 2011-07-31 This script makes use of the capabilities of arch_info.sh. It provides users with a coherent way of installing CASINO on their machines, including: - Picking a CASINO_ARCH. - Handling of multiple simultaneous CASINO_ARCHs. - Handling of multiple-architecture environments. - Creation of new CASINO_ARCHs. - Setting up the environment automatically. - Compiling the code. Settings are stored in a ~/.bashrc.casino file, which is sourced from ~/.bashrc. This file holds a list of configured CASINO_ARCHs, does sensible default selection (guided by user preference) and provides means for switching between the configured machine parameters via a 'casino_arch' shell function. Also in this patch: - fixed C compiler binary in a number of .arch files so that they get correctly autodetected. - made the 'utils' target of utils/Makefile correctly report if anything needs to be rebuilt. - worked around bash file descriptor leak in arch_info.sh and taglib.sh (this causes 'interrupted system call' errors, now avoided). - fixed linuxpc-ifort-pbs-parallel.darwin to account for recent configuration changes - now using default-impi package. * manual: updated date. -- Pablo Lopez Rios, 2011-07-31 ---[v2.9.191]--- * slater: do not crash on FPEs - error out politely. -- Priyanka Seth, 2011-07-29 * autotest: quasi_2D_slab with expot orbitals added. -- Priyanka Seth, 2011-07-29 * exwfdet: fixed bug in orbmap. -- Priyanka Seth, 2011-07-29 ---[v2.9.188]--- * Wrong error message was printed when attempting to do not-implemented charge density calculation for molecules. Fixed. -- Mike Towler, 2011-07-29 ---[v2.9.187]--- * CASINO_USERS. -- Mike Towler, 2011-07-23 * bwfdet: error out on presence of localized blips. -- Pablo Lopez Rios, 2011-07-23 A bug has been detected (dating back to v2.2) that prevents the use of localized blips. While this is investigated and fixed, CASINO will simply error out during setup, to avoid crashing during the calculation. ---[v2.9.185]--- * Added autotest example si222_excite to test real and complex plane-wave orbitals in a multideterminant wave function in a preliminary DMC calculation in which the pseudopotential just has s and p components. -- Neil Drummond, 2011-07-20 * Added an excited-HEG-and-gjastrow autotest example (real and complex). -- Neil Drummond, 2011-07-20 ---[v2.9.183]--- * Added note to runpwscf_NOTES file about current impossibility of compiling espresso 4.3.1 on Jaguar with pathscale compiler (use pgi instead). -- Mike Towler, 2011-07-18 * wfdet_basis: do not error out on wrong orbmap if it's not being used. -- Pablo Lopez Rios, 2011-07-18 * free_orbs: added missing loop in excited HEG orbmap generation. -- Pablo Lopez Rios, 2011-07-18 ---[v2.9.180]--- * arch: more --gen tweaks -- Pablo Lopez Rios, 2011-07-11 - Revamped MPI library linking options, with the ability to search and probe flags automatically. This is not an infallible replacement for compiler wrappers, but works well in simple set-ups, and has the advantage that it does not link against some libraries that OpenMPI automatically links but CASINO does not use, reducing the size of binaries by about 400kiB. - Fixed one of the traps for MPI1 which was erroring out on MPI2 instead - Added the ability to define any &USER.*& variables, not just &USER.QUEUE& and &USER.ACCOUNT&, including defining description/default/allowed - Added ability to accept defaults by typing "=" for BASH_VERSION<=3 - Factored out all compiler tests into a single generic function, making it easy to see what happens in the tests. - Made all compiler tests run the compiled binary - whether it runs is more important than whether it exists. - Fixed sunCC's supported version tag. - Replaced all 'cat's with 'pretty_print's which are easier on the eye when reading the script. - Simplified some descriptions to avoid confusing users. - Fixed writing CFLAGS_etime. - Added more information to integration info. * build-tools: further beautification of compilation process. -- Pablo Lopez Rios, 2011-07-11 Also: - modified build-tools/f90wrap to infer compiler from CASINO_ARCH names produced using arch_info.sh --gen. - completely silenced build-tools/update-version except in the event of actual problems. ---[v2.9.178]--- * Regarding introduction of new postfit_keep_cfg keyword: fixed typo in esdf_key.f90, added keyword information to manual, added keyword to full example input file. -- Mike Towler, 2011-07-10 * wfdet_basis: added dummy arguments to evaluation routines. -- Priyanka Seth, 2011-07-10 * wfdet_basis: removed unneeded heg_been_setup variable. -- Priyanka Seth, 2011-07-10 Also added missing timer-off call. * monte_carlo: added new keyword POSTFIT_KEEP_CFG. -- Priyanka Seth, 2011-07-10 If POSTFIT_KEEP_CFG=T, write the configurations generated in the postfit VMC cycle to config.out. ---[v2.9.174]--- * Minor edit. -- Mike Towler, 2011-07-10 * gbasis: fixed regression caused by v2.9.150 (g54cd219). -- Pablo Lopez Rios, 2011-07-10 ---[v2.9.172]--- * Last patch but one (2.9.170) was implemented on a remote machine, and I forgot to copy it over to my master distribution before commiting it to the repository. 2.9.170 was actually a minor formatting change. Here is the real patch for faster DMC - sorry about that. -- Mike Towler, 2011-07-04 ---[v2.9.171]--- * stowfdet: separated atomic orbital evaluation into separate routine. -- Priyanka Seth, 2011-07-04 sto_orb_eval no longer is called to obtain the atomic orbital values only. This helps speed up evaluation. ---[v2.9.170]--- * New non-blocking DMC algorithm contained a cockup which could - in certain circumstances - lead to more configs than necessary being moved. This led to a notable slowdown which is particularly noticeable when using 1 config per node. Fixed. This should not change the results - only the time taken. -- Mike Towler, 2011-07-02 ---[v2.9.169]--- * stowfdet: Fixed typo. -- Priyanka Seth, 2011-07-01 * autotest: Added O2 example using dimer wavefunction. -- Priyanka Seth, 2011-07-01 * dwfdet: added new interface. -- Priyanka Seth, 2011-07-01 * stowfdet: moved to new interface. -- Priyanka Seth, 2011-07-01 ---[v2.9.165]--- * arch/update-version: exit, not return. -- Pablo Lopez Rios, 2011-06-30 ---[v2.9.164]--- * arch: more adjustments to --gen. -- Pablo Lopez Rios, 2011-06-30 - Gather "integration info" for CC and CXX too. - Added "-v" to "integration info" flag probe list. - Modified compiler/version check code for GNU compilers. - Load correct variable dependencies when accepting pre-set queue options. - Stop prompting from queue-dependence if there are no queues. - Do not prompt for generic/specific CASINO_ARCH, infer from non-empty hostname list instead. - Reworded some questions for clarity, and added even more headings to make the process visually easier to follow. - Removed manual compiler selection - rely on probing entirely. ---[v2.9.163]--- * special_wavefun: moved to new interface. -- Priyanka Seth, 2011-06-30 There isn't an example/test for non-interacting He, so this is untested. This should not be an issue as it appears that no one uses this anyway. * awfdet: moved to new interface (along with orbmods). -- Priyanka Seth, 2011-06-30 Also took care of some style issues (e.g. DIMENSION attributes). * xwfdet: minor fixes. -- Priyanka Seth, 2011-06-30 Includes: - fixed spin/jspin issue in wfdet_basis (in commented-out code). - fixed recently-introduced ispin/jspin issue in plotter. - removed unused errtop in plot.f90. - removed unneeded initializations from pwfdet for speed, along with unused code. ---[v2.9.160]--- * Update various bits of documentation to reflect Rodrigo's update for Gaussian09 interface. -- Mike Towler, 2011-06-29 ---[v2.9.159]--- * arch: fixed typos in C and C++ compiler checks; more headings in --gen text. -- Pablo Lopez Rios, 2011-06-29 * arch: tidy-up, bugfixes and renames. -- Pablo Lopez Rios, 2011-06-29 This patch includes: - renamed data/{OSs, queues, machines} to data/{os, queue, machine} - split data/compilers into data/{f90, cc, cxx} - renamed {gcc, ifort, ifc, efc, pgf} -> {gnu, intel, intel_old, intel64_old, portland} in the data/{f90, cc and cxx} directories (no actual CASINO_ARCH names affected). - added/fixed autodetection for some compilers - the only ones missing data are Absoft's Fortran compiler, and efc/ecc. - added some C and C++ compilers - added a CFLAGS_F90_INTERFACE Makefile variable (attached to the F90 compiler, not the C compiler) that holds the -DDOUBLE_UNDERSCORE, etc flags. - removed CLUSTER_RUN_MODE from --gen mode - it's just confusing, and there's only one CASINO_ARCH that requires it so far. - scattered bugfixes and clarity improvements in arch_info.sh --gen (+ adding all missing 'local' variable declarations!). - added hello-world compilation tests for C and C++ compilers. - added queue/ll.arch for the LoadLeveler queueing system. * gaussiantoqmc: added support for Gaussian '09. -- Rodrigo Alejandro Vargas Hernandez, 2011-06-29 - Added version detection for Gaussian 09. - Added M05/06/08 to list of DFT functionals. - Added support for the .fchk (not .Fchk) files produced by Gaussian 09. ---[v2.9.156]--- * arch: fixed problems with arch_info.sh --gen. -- Pablo Lopez Rios, 2011-06-28 - Test MPI linking even if not reviewing compiler flags. - Test for MPI version 2. - Fixed ENVIRONMENT_COMMAND use in compiler tests. - Fixed bug in 'prompt' function that would allow empty values even with non_empty=1. - Fixed incorrect logic that made having no &WALLTIME& in submission script/command imply that the number-of-cores limit had to be independent of &USER_QUEUE&. - Added llsubmit, llq and bsub to the list of commands to check for when attempting to auto-detect if the machine is a cluster or a workstation. - Fixed accidental generation of an a.out under arch/data when probing some compilers (e.g. pathf90). * dmc: added print-out of "Maximum distance from origin/CoM" for each block. -- Pablo Lopez Rios, 2011-06-28 * pwfdet: Orbital evaluation routine pw_orb_eval. -- Priyanka Seth, 2011-06-28 Plane waves orbitals are evaluated in pw_orb_eval. The Slater determinant is then constructed from the evaluated orbitals using an orbital map. For the moment, the orbital values are converted back into rpsi. This will be removed when modified evaluation routines are in place for all basis types. This patch modifies the structure of the new slater-wfdet interface introduced in a previous patch into a more final-looking form. Also: - Integrated the orbital-map evaluation into the set-up of pwfdet, replacing the previous orb_map_iorb. - Created a dedicated set-up routine for wfdet_basis, removing the need for all the 'first_call' statements. - Fixed a crash with multideterminants due to a previous patch. - Modified plotter.f90 and wfn_check.f90 to be able to use the new wfdet interface. ---[v2.9.153]--- * arch: arch_info.sh now has a --gen mode to generate new .arch files -- Pablo Lopez Rios, 2011-06-26 - Refactored a bit of the '--auto' autodetection code in order to use it in '--gen' mode. - Also added SUPPORT_SHM to taglib.sh and corrected some points of arch/README. * vmc: make equilibration with zero length return immediately. -- Pablo Lopez Rios, 2011-06-26 * arch: made C compiler optional, sorted out CFLAGS and CXXFLAGS. -- Pablo Lopez Rios, 2011-06-26 - The C compiler is now optional unless ETIME or SHM are needed - the jeep_to_pwfn utility is now conditionally compiled, like ppconvert. - Corrected CCFLAGS -> CFLAGS_opt + CFLAGS_all in utils. - Corrected CXXFLAGS_opt -> CXXFLAGS_opt + CXXFLAGS_all in utils. - In individual CASINO_ARCHs, moved all options regarding C-to-Fortran interfaces to CFLAGS_all and CXXFLAGS_all, and all options regarding optimization to CFLAGS_opt and CXXFLAGS_opt. ---[v2.9.150]--- * Dealt with g95 warning messages. There are still a couple of "used but not set" warning messages in gjastrow.f90. -- Neil Drummond, 2011-06-20 ---[v2.9.149]--- * bash-pretty.mk: avoid interleaving by buffering. -- Pablo Lopez Rios, 2011-06-18 ---[v2.9.148]--- * build-tools: added bash-pretty.mk to make compilation output look prettier. -- Pablo Lopez Rios, 2011-06-18 * wfdet_basis: added "wfdet2" interface to evaluate orbitals. -- Priyanka Seth, 2011-06-18 This interface is currently unused. Basic hooks have been added to the slater module - performance will be tuned later on. Individual orbital modules can be moved to the new interface independently. * arch: distinguish login/compute nodes by adding CORES_PER_NODE_CLUSTER. -- Pablo Lopez Rios, 2011-06-18 The practical point of this is that one no longer needs to specify the number of processes when running on login nodes with fewer cores than the compute nodes (e.g., darwin2, the TCM cluster, ...) - except, of course, if you want fewer processes than cores. * runqmc/README: rewritten. -- Pablo Lopez Rios, 2011-06-18 ---[v2.9.144]--- * Added some missing "IMPLICIT NONE"s. -- Neil Drummond, 2011-06-17 ---[v2.9.143]--- * arch: minor change to linuxpc-ifort-pbs-parallel.ren.arch -- Chung-Yuan Ren, 2011-06-16 ---[v2.9.142]--- * Minor edit. -- Mike Towler, 2011-06-16 * slater,wfdet_basis,*wfdet: create orbital maps and pass them to slater. -- Priyanka Seth, 2011-06-16 This is Part One (of three) in the implementation of a general method of wfnc construction from basis functions. The 'get_*_orbmap' routines create an orbital map that indicates which orbital is located where in which spin determinant. This is passed up from modules corresponding to specific basis function through wfdet_basis to slater. The slater module also receives an 'orbmask' to determine which orbitals need to be evaluated for a given spin. In Part Two, the slater module will use these orbmaps to construct the determinant expansion. In Part Three, the individual basis will evaluate the required orbitals at a given position (as opposed to constructing columns of the determinant). ---[v2.9.140]--- * gjastrow: fixed anisotropic cut-off behaviour at r=0. -- Pablo Lopez Rios, 2011-06-16 First, split cusp routines into e-e and e-n versions, and made them capable of constraining the value of the term at coalescence points, in addition to constraining the radial derivative. Then, added the constraint that terms with anisotropic e-e (e-n) functions should go to zero at e-e (e-n) coalescence points. This fixes the divergence of the Laplacian of anisotropic functions, whose cause is obvious from the expression for the Laplacian in spherical coordinates: any angle dependency brings a 1/r^2 contribution to the Laplacian, which must be cancelled by the radial part of the anisotropic function going as r^2 at r~0, which translates into zero value and radial derivative at coalescence points. Anisotropic Jastrow terms are looking promising now, so this is a Good Thing to have fixed. * exmol: force minimum of 1.d0 for 'b' parameter. -- Pablo Lopez Rios, 2011-06-16 * gitignore: ignore src/tags to help people using vim tags. -- Pablo Lopez Rios, 2011-06-16 ---[v2.9.137]--- * runqmc: fixed --check-only stopping before generating submission script. -- Pablo Lopez Rios, 2011-06-14 * arch: added CASINO_ARCH linuxpc-ifort-pbs-parallel.hal for HAL cluster (Oxford). -- Pablo Lopez Rios, 2011-06-14 ---[v2.9.135]--- * runqmcmd: Minor fixes. -- Mike Towler, 2011-06-14 - Made sure that --help/-h worked sensibly, and printed a proper usage note for runqmcmd. - Enable extended pattern-matching features. - Added some content to utils/runqmcmd/README. ---[v2.9.134]--- * runpwscf: ported multirun fix from runqmc. -- Pablo Lopez Rios, 2011-06-13 ---[v2.9.133]--- * Manual date. -- Mike Towler, 2011-06-13 * runqmc: fix orbital file check in multiruns. -- Pablo Lopez Rios, 2011-06-13 ---[v2.9.131]--- * Forgot to apply the fix in patch v2.9.123 to branch_and_redist_serc as well as branch_and_redist_send. Fixed. -- Mike Towler, 2011-06-13 ---[v2.9.130]--- * runqmc: fix for multiruns -- Pablo Lopez Rios, 2011-06-13 * arch: modify Jaguar's .arch file to correctly specify limits for multi-runs -- Pablo Lopez Rios, 2011-06-13 * build-tools/make-wrappers: use 'eval' for ENVIRONMENT_COMMAND -- Pablo Lopez Rios, 2011-06-13 ---[v2.9.127]--- * Minor editing of no importance. -- Mike Towler, 2011-06-13 * exmol: fixed bug with wrong buffer copying which affected non-backflow DMC. -- Pablo Lopez Rios, 2011-06-13 * utils/Makefile: fix problem with dummy_script creation. -- Pablo Lopez Rios, 2011-06-13 * gjastrow: fixed wrong error issued for periodic systems. -- Pablo Lopez Rios, 2011-06-13 Problem pointed out by MDT. ---[v2.9.123]--- * Fixed bug introduced in 2.9.59/retrofitted into 2.8b (the 'redist shuffle') whereby the DMC driver could crash if redist groups had different numbers of nodes in them. -- Mike Towler, 2011-06-10 ---[v2.9.122]--- * Modification to SCRIPT_HEAD of jaguar.arch file (due to changes in machine setup) -- Mike Towler, 2011-06-10 ---[v2.9.121]--- * utils/Makefile: improvements -- Pablo Lopez Rios, 2011-06-10 The utils Makefile now contains dependency information from sub-makefiles, so no sub-makes are invoked except when required. Also added a PHONY target for each utility (named after the executable), so that e.g. 'make casinohelp' only builds the help utility. Keeping utils/Makefile up-to-date with the sub-makefiles has to be done by hand at the moment, but a very simple tool can be written to automate this task. * src/plot.f90: created new plotting module -- Pablo Lopez Rios, 2011-06-10 This module has been created to replace plotter.f90, as well as the separate plotting facilities in the code (jastrow_plot, plot_backflow), and it will when it reaches feature-parity - with this patch all plotting facilities remain available. plot.f90 is a module specialized in plotting arbitrary functions (whether real/complex, scalar/vectorial/tensorial) in a user-defined 1D/2D/3D region. The wfn_utils, energy_utils, slater, ... modules offer their own quatities to plot, and the evaluation of the plotted function is carried out within those modules, which is a structurally better approach and allows access to the internals of the modules without messing with public symbol lists. Plots are written to a 'casinoplot[_nn].dat' file, which has a header that contextualizes the plot. The main missing bit of this new facility is a post-processing tool, required to do contour plots from 3D data and manipulation of regions and functions to ease visualization. The 'PLOT' facility can already do all 'QMC_PLOT' can, minus nodal surfaces (which will come with contour plots) and the unadvertised Gaussian s-plots, plus real parts of kinetic energies and a number of gjastrow-related quantities. For the format of the PLOT input block see 'casinohelp plot'. The plot subjects available for a given system can be queried by running with a PLOT block containing only the line "help". Other changes in this patch: - Moved resize_pointer_* routines from gbasis to numerical, and overloaded them under a single "resize_pointer" interface. - Fixed a few instances of "if(ialloc/=0)" instead of "call check_alloc". - Fixed a problem with a gjastrow evaluation routine (not yet used by anyone, to the best of my knowledge). - Minor cleanup of graphit utility * arch: added franklin and hopper Cray clusters at NeRSC -- Pablo Lopez Rios, 2011-06-10 ---[v2.9.118]--- * Bypass a bug in the g95 compiler by removing the -std=f95 flag. -- Neil Drummond, 2011-06-08 ---[v2.9.117]--- * runqmc: set numablk>0 if --shm provided without argument. -- Pablo Lopez Rios, 2011-06-07 We use the selected PPN if defined, else CORES_PER_NODE if defined, else 1. ---[v2.9.116]--- * arch/taglib.sh: fixed typo preventing use of SHM. -- Pablo Lopez Rios, 2011-06-04 * make-wrappers: fix for different ENVIRONMENT_COMMANDs in shared installations -- Pablo Lopez Rios, 2011-06-04 This problem would cause binary utilities to work only on one of the woodcrest/westmere login nodes at any given time (the one that was compiled last). The cause was that the "module" commands for one of them were being used in both. Fixed by reading ENVIRONMENT_COMMAND directly from the $CASINO_ARCH.arch file from within the wrapper. * reblock: fixed skewness prefactor. -- Pablo Lopez Rios, 2011-06-04 * build-tools/update-version: compatibility with git version < 1.7. -- Pablo Lopez Rios, 2011-06-04 ---[v2.9.112]--- * Two fixes in runqmc (affecting auto-continuation and runqmcmd). -- Mike Towler, 2011-06-04 - 'modify_input_file' function was broken due to incorrect shift. - 'dump_input_file' function was broken since it couldn't cope with keywords which exceed the supposed maximum length (such as 'single_precision_blips'). * Added 'runqmcmd' script to automate QMC molecular dynamics calculations. -- Mike Towler, 2011-06-04 It works by repeatedly calling 'runpwscf' and 'runqmc' which know how to run CASINO/PWSCF on any individual machine. Optional arguments to runqmcmd are all the same as for runpwscf/runqmc (and are passed on automatically to the subsidiary run scripts). Setup the PWSCF input ('in.pwscf') and the CASINO input ('input' etc. but no wave function file) in the same directory. Have the PWSCF setup as 'calculation = "md"', and 'nstep = 100' or whatever. The runqmcmd script will then run PWSCF once to generate 100 xwfn.data files, then it will run CASINO on each of the xwfn.data. The first will be a proper DMC run with full equilibration (using the values of DMC_EQUIL_NSTEP, DMC_STATS_NSTEP etc. The second and subsequent steps (with slightly different nuclear positions) will be restarts from the previous converged config.in - each run will use new keywords DMCMD_EQUIL_NSTEP and DMCMD_STATS_NSTEP (with the number of blocks assumed to be 1. The latter values are used if new keyword DMC_MD is set to T, and they whould be very small). It is recommended that you set DMC_SPACEWARPING AND DMC_REWEIGHT_CONF to T when doing such calculations. The calculation can be run through pwfn.data, bwfn.data or bwfn.data.b1 formats as specified in the pw2casino.dat file. The script is not yet complete, since it cannot yet cope with multiple jobs in a single qsub (which it needs to on batch queue machines) plus the documentation is non-existent/incomplete. Nor does it analyze/summarize the output of the MD run. These issues will be fixed shortly, and I will add an example.. Testing is continuing - please do not use until reported complete. ---[v2.9.110]--- * src/Makefile: updated to account for ZR's patch. -- Pablo Lopez Rios, 2011-06-01 * extrapolate_tau: allow comments and blank lines in data file -- Pablo Lopez Rios, 2011-06-01 ---[v2.9.108]--- * Two fixes for non-collinear systems: -- Zoltan Radnai, 2011-05-28 - Fixed an issue with VMC that was causing non-collinear SDW calculations to take a very long time (see below). - Improved the initial assignment of spins in the "points" routine for non-collinear SDW calculations. Detailed explanation of the VMC issue, which only affects non-collinear calculations. I found that non-collinear SDW calculations were taking unreasonably long. A 246 electron calculation doing 1000 equilibration steps and 1000 VMC steps (divided in 10 blocks) took 7 hours on a 3.4 GHz Intel i5, of which 2 hours was the equilibration. For comparison, an ordinary collinear HEG calculation with 246 electrons (using complex wavefunction) took about 80 seconds on the same machine. The non-collinear calculation should not be this much slower, because the orbitals are still essentially planewaves. When I started looking for the bottleneck, I found that the full DBAR matrix was getting evaluated an unreasonable number of times in an SDW calculation. In the calculation mentioned above, EVAL_DBAR was called 368k times. In a collinear HEG calculation of the same length it only gets called 3 times. Something was frequently invalidating DBAR and forcing it to be recalculated. After some digging, I found what was causing this. A "trivial" VMC move is one where neither the position nor the spin of an electron changes, and so no wavefunction or energy values change. In the electron-by-electron algorithm, CASINO takes a shortcut in this case, not evaluating the wavefunction ratio Q between the new and old configuration, as there is no need. Such a move is always accepted. However, when CASINO attempts to accept any move, it always relies on the value of Q to update the DBAR matrix. Because the value of Q is not available for a trivial move, DBAR gets invalidated and is forced to be fully recalculated. This issue doesn't affect ordinary VMC calculations because the position of an electron is changed by an amount drawn from a continuous distribution, and so the probability of a trivial move is essentialy 0. Even though it's coded in, CASINO never takes the mentioned shortcut. However, when flipping spins in a non-collinear calculation, the spin can only take one of two values. 50% of the time it remains unchanged, and so CASINO takes the shortcut very often. The fix was straightforward: for a trivial move, don't call the update routines, as nothing needs updating. This reduced the calculation time by a factor of 100, without affecting a single digit in the results. A calculation which took over 7 hours now takes 230 seconds instead. This change should not affect any existing results in any way. ---[v2.9.107]--- * Added example of kpoints_list for CASTEP to manual. -- Neil Drummond, 2011-05-27 ---[v2.9.106]--- * Replaced the orbital occupancy scheme for plane-wave orbitals with the (relatively simple but still general) occupancy scheme for blip orbitals. Added a test that plane-wave orbitals are orthogonal (a warning is given if they are not). Avoided repeated evaluation of exp(ik.r) for blip orbitals. -- Neil Drummond, 2011-05-26 ---[v2.9.105]--- * Added warnings to PWSCF documentation (manual and READMEs) warning not to use ultrasoft or PAW pseudopotentials when interfacing with CASINO. Simon Binnie has added an error trap in upf2casino.f90 in the Espresso distribution, so only norm-conserving pps can be used. -- Mike Towler, 2011-05-24 ---[v2.9.104]--- * Changed FORCE_PATH directories on Jaguar. -- Mike Towler, 2011-05-20 ---[v2.9.103]--- * Patch 29.38 ' runqmc: fix FORCE_PATH handling. ' was not implemented in runpwscf. Now it is (so runpwscf whines only when you genuinely are trying to run from a forbidden directory, rather than all the time). -- Mike Towler, 2011-05-19 ---[v2.9.102]--- * Added new file wfn_converters/pwscf/runpwscf_NOTES to contain any machine specific information about running PWSCF in the context of the CASINO distribution. -- Mike Towler, 2011-05-19 For now it contains the following information specific to the woodcrest partition of darwin: You need to load the OpenMPI library on login (on the bindloe nodes the default environment picks up the Qlogic MPI libraries which are the best choice for running on the older Woodcrest/Qlogic InfiniPath sector of the cluster.) So have the following in your bashrc: module purge module load default-infinipath module load openmpi Espresso/PWSCF will then be compiled with OpenMPI by using the standard './configure ; make all'. This is suboptimal, but because of the way runpwscf deals with architecture issues both CASINO and PWSCF must use the same MPI library. We cannot switch CASINO to using the QLogic MPI library since it does not support MPI-2 which CASINO requires. ---[v2.9.101]--- * The SPIN_DENSITY_MAT keyword was deleted in 2.8.130, when it should have been flagged as redundant (many old inputs contain this keyword). Fixed. -- Mike Towler, 2011-05-19 * Fixed error in arch/data/machines/hector.arch (the lines INTERNAL.ACCOUNT_LINE and INTERNAL.QUEUE_LINE both need asterisks in front of them). -- Mike Towler, 2011-05-19 * arch: restore compatibility with non-GNU make. -- Pablo Lopez Rios, 2011-05-19 Instead of using '$(value var)' to avoid expansion by 'make', establish the policy that references to variables in ENVIRONMENT_COMMAND should be restricted to pre-existing environment variables, and that they need to be referenced using the syntax '${var}' rather than '$var'. Modified arch/README to specify this policy. Explicitly tested BSD make (Debian's 'pmake'). * utils/reblock: adjustments -- Pablo Lopez Rios, 2011-05-19 - Make it clear that correlation times are given in steps. - Print standard error instead of standard deviation in initial reports, and add variance to local energy analysis. - Restore print-out of skewness and kurtosis, along with measures of the expected size of the fluctuations for a normal distribution. - Modified computation of skewness and kurtosis to use unbiased estimators. * pjastrow: fixed QCUSP term not triggering non_empty_jastrow=.true. -- Pablo Lopez Rios, 2011-05-19 * runqmc: add binary_name to header information when it differs from 'casino' -- Pablo Lopez Rios, 2011-05-19 * Makefile: adjustments -- Pablo Lopez Rios, 2011-05-19 Worked around a minor issue with BSD make. Also prevented ENVIRONMENT_COMMAND from being expanded by 'make'. The solution, '$(value ENVIRONMENT_COMMAND)' - is specific to GNU make, so this breaks compatibility with BSD/Sun/OSF make. About this: - Judging by the documentation I've looked at, a portable solution is unlikely. - I might be the only person to have tried using anything other than GNU make to compile CASINO in the last couple of years (since the last few Alphas in TCM disappeared). - I know of no current Unix-like system without a port of GNU make (usually present under the name 'gmake' in non-GNU systems). So I will restore compatibility if I come across a portable solution, but it might be time to drop support for non-GNU 'make's.. * FAQ: amended to mention the blcr-dkms problem in Ubuntu and how to avoid it. -- Pablo Lopez Rios, 2011-05-19 * Added 'runpwscf' script to run the PWSCF code making use of all the CASINO architecture-dependent files, and all the usual runqmc refinements. Required for QMC-MD stuff. Use 'runpwscf --qmc' or 'runpwscf -w' to generate CASINO data automatically. -- Mike Towler, 2011-05-19 * Setup on UK hector machine was broken - fixed. -- Mike Towler, 2011-05-18 Added " . /opt/modules/default/etc/modules.sh ;\" to ENVIRONMENT_COMMAND in the hector arch files. Fixed bashrc.hector in which the casinoarch command changed the casinoarch command to something.jaguar. ---[v2.9.92]--- * arch: PGF C++ compiler choked on ABINIT pp converter; use g++ instead. -- Pablo Lopez Rios, 2011-05-11 * f90wrap: improved compiler-specific mod file quirks. -- Pablo Lopez Rios, 2011-05-11 * update-version: made tag lookup much faster. -- Pablo Lopez Rios, 2011-05-11 The DIARY is now regenerated by default on invokation, without the need for a '--do-diary' flag; the reason it wasn't is because it took too long to do when invoked from the Makefile every time the code is recompiled. NB, now using a single 'git show-ref --tags' to buffer all tags initially, instead of querying 'git describe' for every commit. ---[v2.9.89]--- * Minor modifications to README etc. -- Mike Towler, 2011-05-10 * build-tools: created directory containing build tools. -- Pablo Lopez Rios, 2011-05-10 The new build-tools directory now contains all the build/development/release tools which were scattered around the distribution, namely: - update-version.sh (now called update-version) - src/qmc_compiler (now called f90wrap) - src/update_makefile.sh (now called update-makefile-tool, soft-linked from its old location, with updated softlinks from the relevant directories under utils/). - src/winwrap - utils/git_tools/git_archive (now called release) - utils/wrappers/make_wrappers (now called make-wrappers) - manual/src/pdf_compiler (now called pdf-compiler) Added a README file to describe what the files in there, and made a couple of changes to the scripts and makefiles to get them working in the new arrangement. * esdf_key: fixed a formatting problem. -- Pablo Lopez Rios, 2011-05-10 * exmol: ability to deal with ne /= nh. -- Pablo Lopez Rios, 2011-05-10 The EXMOL wave functions is now capable of dealing with systems with a net charge, such as Ps2- (3 electrons and 2 positrons) etc. One needs to specify the EXMOL construction matrices with as many rows as electrons and as many columns as rows. For example, for Ps2-, one could give Function selectors for all particle pairs 1 2 2 1 3 3 Symmetry operations to generate the extra matrices are performed automatically, as usual. This feature was requested by Chung-Yuan Ren. ---[v2.9.85]--- * Updated the manual with information about the ordering of the k vectors for HEGs. Plus some tidying of the manual. -- Neil Drummond, 2011-05-09 * Added list of attributions - in the form of a list of names corresponding to initials - at the top of the old-format DIARY section (which gets catted onto the end of the new DIARY). Thus once I am dead the reader may understand what really old people like GJB and ARP were actually called. -- Mike Towler, 2011-05-09 ---[v2.9.83]--- * release process: enhancements -- Pablo Lopez Rios, 2011-05-09 Addressed a few of MDT's and NDD's suggestions: - renamed CHANGELOG back to DIARY. - versioned the name of old DIARYs in doc/changelog. - append all old DIARYs to main DIARY at regeneration. - added quirk to keep old DIARY up to v2.9.70. - added a header like in the old DIARY. - modified DIARY format, removing commit ID and making lines wider so fewer commits need reformatting. - added an internal 'fake' maintainer mode flag for debugging. - merged update-changelog.sh into update-version.sh under flag --do-diary * FAQ: instructions for Gentoo, Arch, Mint, updated Fedora, mocked Slackware -- Pablo Lopez Rios, 2011-05-09 * arch: fixed handling of ENVIRONMENT_COMMAND in compiler detection code. -- Pablo Lopez Rios, 2011-05-09 With the previous patch arch_info.sh was still unable to autodetect Fedora because of the back-quotes in ENVIRONMENT_COMMAND not being handled properly. Now fixed. ---[v2.9.80]--- * Modified free_orbs.f90 so that the k vectors for a fluid phase are sorted within each star when a complex wave function is used. The k vectors are sorted into increasing phi (innermost), theta, and |k| (outermost), where phi is the azimuthal angle and theta is the polar angle. Hence the nth k vector is defined unambiguously. This change has no effect on HEG calculations in which every shell is full, and no effect on HEG calculations in which every shell apart from one is full where the remaining shell contains either a single electron or a single hole. It does affect HEG calculations in which pairs of excitations are made: it is now possible to specify a pair of excitations unambiguously. -- Neil Drummond, 2011-04-28 ---[v2.9.79]--- * git_release: fixed typo so git-push actually happens. -- Pablo Lopez Rios, 2011-04-26 ---[v2.9.78]--- * git_archive: fixed typo, allow publishing if secondary files missing. -- Pablo Lopez Rios, 2011-04-26 ---[v2.9.77]--- * git_archive: fixes -- Pablo Lopez Rios, 2011-04-26 - Error out if any file copy fails while publishing, and suggest to check quotas. - Do not reset -d when --not-maintainer found. - Fixed typo that prevented maintainer mode from activating correctly. * arch: added DISTRIBUTION variable, support for Fedora 14+'s "module" system. -- Pablo Lopez Rios, 2011-04-26 * Minor edit. -- Mike Towler, 2011-04-24 * runqmc: fixed -P option. -- Pablo Lopez Rios, 2011-04-24 'runqmc -P' now stays in the foreground so that Ctrl+C stops 'tail', and runs CASINO in such way that the same Ctrl+C does not stop the calculation. This behaviour, essentially equivalent to 'runqmc & disown ; tail -f out', was the original intention, but required working around mpirun force-trapping SIGINT - done by spawning a new session with setsid (thanks to Reuti on the OpenMPI users' mailing list for the suggestion). * runqmc: fixed typo in option parsing. -- Pablo Lopez Rios, 2011-04-24 * Makefile: fixed wrong use of $$var instead of $(var). -- Pablo Lopez Rios, 2011-04-24 * build, release: automatic changelogs and version tags. -- Pablo Lopez Rios, 2011-04-24 Two git-ignored files, CASINO/VERSION and CASINO/CHANGELOG, are now automatically generated using information from git. CASINO/VERSION is sourced from src/main.f90 and from runqmc. This file is only really updated when its contents need to change, to avoid unnecessary recompilations of src/main.f90. Updates are handled by the new CASINO/update-version.sh script, and are attempted: - when typing make under CASINO - when typing make under CASINO/src if CASINO/VERSION didn't exist - when using git_archive The version number should look like: - 'v2.8.1 (April 2011)' for stable releases, - 'v2.9.71 (April 2011)' for official development revisions, - 'v2.9.70-1-gf0b362f [Pablo Lopez Rios] (18 April 2011)' for local commited changes, and - 'v2.9.70-1-gd66a6c3+dirty [Pablo Lopez Rios] (18 April 2011)' for local uncommited changes. CASINO/CHANGELOG is updated by the new CASINO/update-changelog.sh script, which is only invoked automatically when running git_archive. This is a git-log with an easy-to-read format, with version numbers (git tags) inserted before the appropriate commits. NOTE: subject lines and commit messages are displayed nicely wrapped-around keeping the paragraph structure and all, but undesired line breaks may occur in the presence of manual indentation. To avoid this, keep the lines in paragraphs with manual indentation (including bullet-point lists like the one above, ascii diagrams and code snippets) within the first 70 columns. NOTE2: please use a subject line to summarize commits, instead of starting a long commit message in the subject line and continuing in the body. Additionally: - merged git_release and git_update tools into git_archive (now rewritten in bash), and made this script more flexible with sensible automatic defaults (use --help for information). - added a 'print_centre' routine to print the output file header from main.f90. - updated Makefiles and qmc_compiler to handle the dependency of main.f90 on CASINO/VERSION. - moved old DIARY file to doc/changelogs. ------------------------------------------------------------------------- All changes below this point recorded using the old CASINO DIARY format before it was generated automatically from the git log. Attributions given by initials as follows: Principal authors ------------------ [No initials, or MDT in joint contributions] = Mike Towler [NDD] = Neil Drummond [PLR] = Pablo Lopez Rios Other contributors ------------------ DA Dario Alfe LA Lucian Anton AB Alexander Badinski GJB Gavin Brown MDB Matthew Brown GC Gareth Conduit NH Nick Hine RQH Randolph Quentin Hood PK Paul Kent JJ John Jumper RML Robert Lee YL Yoonseok Lee AM Andrea Ma RM Ryo Maezono AJM Andrew Morris NN Norbert Nemec ARP Andrew Porter ZR Zoltan Radnai PS Priyanka Seth GGS Graham Spink JRT John Trail BW Ben Wood ------------------- 70. Modified some incorrect descriptive blurbs in the example input files. Changed '(Double Precision)' to '(Real)' throughout to save space. 69. [PLR] arch: modified linuxpc-ifort-pbs-parallel.ren.arch to reflect config changes 68. [PLR] vmc: fixed reversed labels "max. dist. from CoM" <-> "from origin" 67. [PLR] arch: fix FORCE_PATH and add missing line in SCRIPT_HEAD for jaguar.arch. 66. [NDD] Added internal flag "verbose_excite" to free_orbs.f90: if set to T then information about the k vectors involved in excitations with complex plane-wave orbitals will be printed out. 65. In an MD run, PWSCF would generate the sequence bwfn.data.b1.0001, bwfn.data.b1.0002, bwfn.data.b1.0003, etc. for each MD timestep. After 9999 steps it would blow up because of the 4 character limit on the suffix. PWSCF now makes use of its own 'int_to_char' feature, to generate bwfn.data.b1.1, bwfn.data.b1.2, etc.. with no limit on the size of the integer suffix. Updated CASINO documentation to reflect this change. 64. [PLR] arch: run ENVIRONMENT_COMMAND before running binary utilities too. 63. [PLR] arch: added CASINO_ARCH linuxpc-ifort-pbs-parallel.ren 62. [PLR] gbasis: bypass PathScale compiler bug. 61. Following request, added DA's ancient 'pseudo2casino.f90' converter in /utils/pseudo_converters/pwscf/OLD. No documentation provided - for reference only. 60. Reduced the memory requirements in the branch_and_redist routines (previously scaled linearly with number of cores - now independent of machine size). 59. Added improvement to new DMC algorithm introduced in 2.8. Previously there was no guarantee that the number of configs associated with each 'redist group' would remain approximately the same over time, and at long times the load balancing efficiency could decrease, sometimes significantly. Now after each move, a 'redist shuffle' occurs which alters the list of cores associated with each redist group. This seems to cure the problem. With the default value of REDIST_GRP_SIZE, this is only relevant for jobs on more than 999 cores. 58. Minor update to utils/Makefile. 57. INFORMATION: The PWSCF/Quantum Espresso distribution now contains documented pseudopotential converters which convert between CASINO tabulated format and the new PWSCF officially-supported UPFv2 format. See the directory 'upftools' in the Espresso distribution. The converter has been significantly improved in the process. Current situation: - casino2upf.x will take any Trail and Needs (tabulated) pp file and spit out a UPFv2 version (with KB projectors based on supplied awfn.data files that must be on the same radial grid as the pp). The grid is preserved with no interpolation performed. - Any non-Trail and Needs pps in the tabulated CASINO format can also be handled providing they use a standard logarithmic grid ( r(i) = 1/Z * exp(xmin + i * dx) ) with dx and xmin specified in the input file. Again the grid is preserved. - In both cases the utility now respects the choice of local channel specified in the pp.data file. - up2casino.x blindly takes a UPF file and spits out the corresponding pp.data file. 56. Clarified and tidied the layout of the PWSCF pseudopotential converters in the CASINO distribution: - Renamed JRT's casinopwscf utility as 'casino2gon' (it converts to the now-deprecated .gon pseudopotential format). - Copied the relevant bits of Espresso's 'casino2upf/upf2casino' to a new utils/pseudo_converters/pwscf/casino2upf directory (for information purposes only - it needs various Espresso modules to actually work..). - Added all relevant documentation into utils/pseudo_converters/pwscf and into the PWSCF discussion in the manual. The casino2gon alternative remains useful when you need to do interpolation (which casino2upf doesn't do) e.g. if you have a non-standard grid or wave functions on a different grid. In particular it can take pp_gaussian or pp_gamess as input as well as pp.data (see the CASINO pseudopotential website). Thanks to Simon Binnie and JRT for help with this. 55. [PLR] gbasis, gjastrow: fixed handling of anisotropic functions Changes: - Added lengthy instructions to write cusp routines for anisotropic functions - Added "basic properties" is_anisotropic, require_cutoff_periodic and is_none, and removed min_order and max_order in favour of order checks within gbasis_setup_constants. Based on these changes: - Prevent trying to apply the Kato cusp conditions via terms with anisotropic bases or cut-offs. - Stopped forbidding the use of some non-periodic bases in periodic systems, instead requiring them to be used in conjunction with a cut-off such that periodicity is preserved. NB, this didn't affect natural powers. - Added f0_anisotropic and dfdr0_anisotropic arguments to query_cusp_*, and added equations to zero coefficients corresponding to misbehaving functions at the origin - Fixed the return from query_cusp for 'natural power vectorial' basis so that misbehaving functions are flagged correctly. Other changes not directly related to the above: - Made 'Order' optional with a default value of one, so that one can leave 'Order' unspecified with 'Type: none' - Increased lower limits on cut-off lengths - Modified how constraint equations are constructed in the gjastrow module in order to automatically eliminate those which are of the form 0=0. This should result in fewer redundant constraints in large terms. 54. [PLR] parallel: stop making unrelated imported symbols public. Fixed dwfdet using wout via parallel. This silences a bunch of NAG compiler warnings claiming that some symbols in a number of modules are imported but not used. 53. [PLR] format_utils: added wout routines for logical as well. 52. [PS] gbasis: Fixed cusp condition for anisotropic cutoffs. 51. Changed recommendations for blip grid multiplicity in manual and README_pwscf. 50. Rearranged the 'supported codes' section of the manual. Previously CRYSTAL and GAUSSIAN had sections to themselves, followed by 'Other supported codes'. Since only I use CRYSTAL, and (probably) nobody uses GAUSSIAN this is obviously a bit silly. All codes now in a single section in alphabetical order. 49. The PWSCF/Quantum Espresso code now supports CASINO directly (as of the current version in CVS which will later be released as version 4.3. Added documentation in utils/wfn_converters/pwscf/README_pwscf (with a latex transcription of this added to the manual). This will also go into the Espresso distribution presently. The three routines that are now an integrated part of PWSCF are included for reference in the directory utils/wfn_converters/pwscf/pwscf_routines. The pseudopotential converters are in the process of being rewritten to modern standards - more on this shortly. Relevant bits of the README_pwscf file: The interface between PWSCF and CASINO is provided through a file with a standard format containing geometry, basis set, and orbital coefficients, which PWSCF will produce on demand. For SCF calculations, the name of this file may be pwfn.data, bwfn.data or bwfn.data.b1 depending on user requests (see below). If the files are produced from an MD run, the files have a suffix .0001, .0002, .0003 etc. corresponding to the sequence of timesteps. CASINO support is implemented by three routines in the PW directory of the espresso distribution: * pw2casino.f90 : the main routine * pw2casino_write.f90 : writes the CASINO xwfn.data file in various formats * pw2blip.f90 : does the plane-wave to blip conversion, if requested Relevant behaviour of PWSCF may be modified through an optional auxiliary input file, named pw2casino.dat (see below). To generate xwfn.data files with PWSCF, use the '-pw2casino' option when invoking pw.x, e.g.: pw.x -pw2casino < input_file > output_file The xfwn.data file will then be generated automatically. PWSCF is capable of doing the plane wave --> blip conversion directly (the 'blip' utility provided with CASINO is not required) and so by default, PWSCF produces the 'binary blip wave function' file bwfn.data.b1 Various options may be modified by providing a file 'pw2casino.dat' with the following format: &inputpp blip_convert=.true. blip_binary=.true. blip_single_prec=.false. blip_multiplicity=1.d0 n_points_for_test=0 / Some or all of the five keywords may be provided, in any order. The default values are as given above (and these are used if the pw2casino.dat file is not present. The meanings of the keywords are as follows: See the README_pwscf file.. Thanks to Layla Martin-Samos for help with this. 48. [PLR] numerical: cleaned up unused local variables 47. [PLR] gjastrow, gbasis: improvements, extensions, dipole-dipole term - Precompute flags to determine which of the 7 one-electron gjastrow evaluation routines each term should use, for speed. Similarly for the 3 all-electron value evaluation routines. - Separated each of the 7 one-electron gjastrow evaluation routines into _val|_fd|_sd versions, for speed. - Moved all parameter-index handling to gbasis. - Ability to keep track of which_unity property for each basis function within the gbasis module, required by the next bullet point. - Made it so that parameter indices can be set to 0, and this is understood to mean that the associated function times cut-off is one, effectively removing functions from the expansion. NB, this requires modifying or duplicating the evaluation routines. I'm opting for the latter, for efficiency. Most of these duplicates are currently missing - only the 1_x version has been done (this corresponds to terms involving 2 electrons and 1 or more nuclei; this patch aims at getting an e-e-n-n term with this property, so mission accomplished so far). - Making use of two points above, allow building "simplified" terms by providing a "Number of indices" vector whose components define the number of non-zero e-e and e-n indices. This is equivalent to adding 1 as a basis function and setting a whole lot of parameters to zero, but much more efficient speed- and memory-wise. See "Number of indices in the example below. - Added the ability to eliminate parameters all of whose e-e (or e-n) indices modulo some number don't give the same result. See "Match modulo" in the example below. - Implemented the 'natural power vectorial' gbasis set, which consists of n*dimensionality functions formed by a natural power of r times one Cartesian component of r divided by r. See below for an example. NB, the expansion order of this basis must be a multiple of the expansion order; the highest natural power that will be generated will be the order divided by the dimensionality. - Added 'e-n dot-product' user constraint. This constraint is designed for use with the 'natural power vectorial' e-n basis function in an e-e-n-n term with a reduced number of e-n indices of 2 and parameters whose non-zero e-n indices modulo the dimensionality of the system are equal. This constraint equates the coefficients for f_x g_x, f_y g_y and f_z g_z so that the result corresponds to the dot-product (f_x, f_y, f_z).(g_x, g_y, g_z). See below for its intended usage. NB, this is the first "user" constraint to be implemented in the gjastrow. The above changes allow one to construct an e-e-n-n term with the ability to describe Van der Waals interactions. E.g., the following CASL block, TERM 5: Rank: [ 2, 2 ] e-e basis: [ Type: natural power, Order: 4 ] e-n basis: Type: natural power vectorial Order: 12 e-n indexing: Number of indices: 2 Match modulo: 3 e-n cutoff: Type: polynomial Constants: [ C: 3 ] Constraints: [ e-n dot-product ] would result in a term that contains contributions of the form f(rij, riI, rjJ) riI . rjJ i.e., a dipole-dipole type contributions which should correctly distinguish between e-e-n-n configurations producing parallel/antiparallel dipoles, as required (we suspect) to do Van der Waals interactions. Other changes: - Further reduced the number of redundant cusp equations using symmetry, and added the break-up into symmetry+user+cusp to the output file so that we can keep an eye on the individual contributions for large terms. More work in this area is required. - Added a test_indices routine in gbasis to test the correctness of all aspects of the different parameter-index routines. To be completed with particle indices and benchmarks to investigate the performance of these routines. - Very very minor clean-ups of unused/over-scoped variables and arguments. 46. INFORMATION: Posix shared memory now apparently working with the alloc_shm.c of patch 41. If it doesn't work, execute mpirun with an argument '-env "BG_SHAREDMEMPOOLSIZE=100"' or higher. We've not yet been able to get a login on Blue Gene so we haven't been able to check all this properly. 45. Removed link to 'ppconvert_esler' from pseudo_converters/pwscf directory, since ppconvert_esler converts psedupotentials from CASINO format to two formats not readable by PWSCF. 44. [PLR] wfn_utils: improve efficiency of put_params and pbuffers. Fixed a slight inefficiency caused by passing prestore=.false. to put_params(iparam=0) for the first configuration in an optimization run. This was allowed because of the idiosyncrasies of some of the wave-function sections (e.g. pjastrow, pbackflow), so added a 'quirky' argument to put_params to keep them working as they were [the pjastrow idiosyncrasy in question is the existence of e.g. alpha(*) and alpha_full(*), only the latter of which is pbuffered, and similarly for pbackflow; it's not really worth changing this behaviour at this point]. Another inefficiency of variable magnitude involves the use of parameter buffers during the evaluation of energy and wave function derivatives in optimization. The put_params(iparam=0,prestore=.true.) operation can involve copying large chunks of memory for no good reason. Fixed this by adding a 'restore_hint' argument to put_params which indicates which part of the pbuffered parameters and other quantities should be copied (only used for the pjastrow and gjastrow at present), as well as provides separation between the changes to the parameters in Psi_S and those in the Jastrow factor when restoring, saving additional copying around of arrays. With these changes, the time taken to compute the numerical derivatives in a gjastrow test was halved. For gjastrows with many and/or large terms, the speed-up should be better. 43. [PLR] format_utils: prevent errors caused by oversized internal writes 42. [PLR] autotest: fix to interface with new runqmc correctly 41. Patch 35 didn't work - Posix shared memory still not working on Blue Gene. Added LA's even newer alloc_shm.c which may work, subject to setting an environment variable BG_SHAREDMEMPOOLSIZE? (currently under test). EDIT: see patch 46. 40. Added error trap to ensure a minimum size (=500) for the REDIST_GRP_SIZE keyword. 39. Fixed obscure bug in partial_rank_int routine in numerical.f90 ('find the n largest integers in a vector') which caused it to believe the 3 largest integers in (1 1 0 1) were in positions 1, 2 and 3 (!). This led to a crash in the DMC redistribution algorithm for an artificial 4-nodes case (the error occurs only when asking for the 3 or 4 largest out of 4, because the last two were not ordered). This would only be a problem if someone pulled down REDIST_GRP_SIZE from the default 500 to 2 or less then ran on a quad-core machine (highly unlikely, but Neil managed to do it!). 38. [PLR] runqmc: fix FORCE_PATH handling. 37. [PLR] format_utils: wout_*: renamed C_S -> C_R, added C_I, C_I_C, C_II, C_R_C, C_RR 36. [PLR] run_control: remove "Waiting for all nodes to exit" message on single-core runs. 35. [LA] Implementation of Posix Shm (patch 2.8.101) didn't work on more than one node. Fixed (probably - awaiting further tests). 34. Fixed a couple of typos in arch/data/machines/jaguar.arch (*INTERNAL.ACCOUNT_LINE" and "*INTERNAL.QUEUE_LINE") 33. [NDD] Modified printout of determinant information to allow for larger determinant numbers and k-point and band indices. 32. [NDD] Fixed various bugs in the format_configs utility. 31. Fixed typo in definition of ENVIRONMENT_COMMAND in the linuxpc-pgf-pbs-parallel.jaguarpf.arch (it was loading the pathscale modules instead of the pgf). Added . /opt/modules/default/etc/modules.sh ;\ to the definition of ENVIRONMENT COMMAND so that it understands what the 'module' command means. 30. Put more comprehensive compiler debug flags in pgf.arch file. 29. [PLR] gjastrow: fix redundant cusp constraints due to oversized loop. This affected terms with 3 or more electrons in them (rank_e>2). The problem produced repeated equations, but did not affect the correctness of the cusp constraints. The redundant systems may have had 15-50% more equations than were intended to be generated. This reduction should translate into a small speed-up in constraint updates during optimization. Note that cusp conditions at this point continue to have some degree of redundancy, because symmetry is not fully taken into account - this might be looked into shortly. 28. [PLR] gbasis: clarification of intended use of rank_* in rule-related routines. 27. [PLR] gbasis: fixed implicit type conversion in debugging routine. 26. [PLR] gbasis: add trap for eqprod=0, which may happen when developing new bases. 25. [PLR] gbasis: fixed out-of-bounds index problem for e-n functions and error messages. 24. [PLR] runqmc: added support for debuggers other than gdb via --debugger=... option Also added a --valgrind option, downgraded the trap for using a debugger with a non-debugging binary from an error to a warning, and disallowed --background and --print-out when a debugger is used. 22-23. [NDD] Update to the tcm_comps script. 21. [ZR] format_utils: fix compilation with Cygwin When compiling under Window/Cygwin get "Undefined reference to '_llroundf'" error triggered by a call to NINT with kind type i64 in format_utils.f90, which internally gets mapped to a call to llroundf. This is a known bug in Cygwin, according to http://cygwin.com/ml/cygwin-patches/2010-q4/msg00004.html "llround and llroundf are available in newlib but not exported in cygwin". The bug was fixed and the fix will be available in next Cygwin release. In the meantime, a possible workaround is to replace NINT(x) with INT(x +/- 0.5), which is mathematically identical. 20. [PLR] arch: updates - Made runqmc expose TYPE, TPP and PPN to the .arch files. - Extended ALLOWED_NNODE|NCORE to understand "%" as "any multiple of " - Added missing checks for NNODE|NCORE_TOTAL matching ALLOWED_NNODE|NCORE. - Added the ability to submit jobs on clusters without a submission script, controlled by the CLUSTER_RUN_MODE and RUN_CLUSTER tags. - Fixed parsing problem with --user.VARIABLE=value runqmc flags. - Updated arch/README and clarified some points. - Making use of some of the above features, updated the recent BlueGene/P .a file for the Babel machine to include the complete information (renamed to ibm_bgp.babel.arch for consistency). - Significant speed-up of arch_info.sh by selective loading of tags, and by parallelizing the --auto facility using multiple forks. Also introduced a prettier-to-look-at progress bar and fixed a problem with --list-* not correctly filtering the CASINO_ARCHs. 19. [NDD] Print radius of circle inscribed in Wigner-Seitz cell in 2D. 18. [PLR] arch: more changes to hector/jaguar arch files Also updated doc/MACHINES, and really finished updating the Linux distro instructions in the FAQ, having finished messing with the last one under VirtualBox. 17. [PLR] doc: updated jaguar and hector arch data (and example bashrc). 16. [PLR] FAQ: finish updating instructions for current distributions. 15. [PLR] arch: Renamed QMC_ARCH to CASINO_ARCH to emphasize arch system changes (and to allow people to use old distributions in the same environment). - Renamed QMC_ARCH to CASINO_ARCH - Renamed .qmcarch "extension" to simply .arch - Removed unneeded content from README_ARCH, README_INSTALL and the manual, pointing to arch_info.sh as *the* source of information for architecture parameters. - Fixed a couple of issues with arch_info.sh: - CASINO_ARCH details were not being printed in --details mode - script was supposed to be runnable from other directories, but it wasn't - Fixed the Makefiles, runqmc, utility wrappers etc, so that users can continue using their old QMC_ARCH/QMC_ID without anything breaking. The only possible problem is for people who have updated the value of their QMC_ARCH variable AND have not removed the value of QMC_ID. 14. [PLR] utils/Makefile: removed compilation of merge_pwfn as required by previous patch (Oh yeah.. MDT). 13. Removed to OLD directory the utilities in utils/wfn_converters/pwscf since the information given is misleading - this isn't the way it's done any more. Proper documentation to follow. 12. Fixed typo in linuxpc-ifort-parallel.brutus.qmcarch file. 11. [PLR] runvp: fix for use with new runqmc; support for missing runtypes - Use 'runqmc -c' instead of the old-style '-check' (now interpreted by runq as -c -h -e -c -k) - Added support for runtype=dmc_equil|dmc_stats 10. [PLR] arch: added preliminary version of ibm_bgp.qmcarch (IBM BlueGene support). 9. [PLR] arch: work around mpirun exitting with status 6 on TCM cluster. 8. [PLR] runqmc: fix use of physical directory structure of login node in compute nodes 7. [PLR] arch: fixed gcc options. 6. [PLR] casl: work around gfortran 4.4.5's inability to detect EOF with read(io,'(a)'). 5. [PLR] examples: renamed n2 example from a previous patch to o2 - example was oxygen. 4. Changed name of DMC_REWEIGHT_CONFIGS input keyword to DMC_REWEIGHT_CONF since it exceeds the length limit. Added DMC_REWEIGHT_CONF and DMC_SPACEWARPING to manual and examples. 3. [JRT] dwfdet: added module Added module dwfdet, which deals with orbitals for dimers (interpolated from numerical grid) which can be obtained from Hartree-Fock calculations. Added a numerical routine (required by the dimer orbitals) to do 2D interpolation using Neville's algorithm. The new orbitals can be used by setting atom_basis_type: dimer, and the orbitals go in a file called dwfn.data, to no-one's surprise. Added an example under examples/numerical_dimer/n2. Update to the manual still pending. Adjustments/rearrangements/formatting by PLR. 2. [PLR] format_utils: fixed minor typos 1. [PLR] arch: redesigned specification of architecture-dependent parameters - Created a file format for .qmcarch files, containing: - A header for parameters, read by runqmc - A make include file The description of this file format is in CASINO/arch/README. - Removed QMC_ID environment variable; new QMC_ARCH values are either of a "generic" form ($OLD_QMC_ARCH) or of an "extended" form ($OLD_QMC_ARCH.$OLD_QMC_ID). This allows different machines corresponding to the same generic architecture (e.g. the two queues of Darwin) to have separate binaries, and reduces required environment variables to one. - Moved all .qmcarch files to arch/data; removed placeholder arch/run. - Added a vim syntax file for .qmcarch files, see CASINO/data/syntax/vim/REA for info. - Written extensive arch/README to document .qmcarch files. - Added an architecture assessment script CASINO/arch/arch_info.sh, which is capable of matching the current machine with QMC_ARCH entries in the arch.data/*.qmcarch based on microarchitecture, kernel, OS, compiler binaries available in the path and (optionally) hostname. NB, a future patch will make this script capable of helping users easily create .qmcarch files. - Moved all architecture-dependent parameters from runqmc to the .qmcarch files. - Removed ancient utils/reblock/make_reblock script. - Added QMC_ARCH=linuxpc-{ifort,gcc}-pbs-parallel.darwin2 for the Westmere queue on Darwin. - Added a --no-cluster option to runqmc, which runs the calculation as if a cluster were a workstation (i.e., runs on the login nodes; use according to your cluster's rules..). The --no-mpi option now also applies to clusters, running one instance of the binary directly without mpirun. - Renamed CPP_FLAGS_SHM to CFLAGS_SHM for consistency with other options. - Greatly simplified the check_params function in runqmc using a new intermediate internal function to perform repeated tasks. 0. Initialized files for CASINO 2.9 development version. List of changes for CASINO 2.8 ------------------------------ Released 18/2/2011. 157. Fixed some output writes mistakenly added in patches 5-12 using the old 'write(o,*)' method rather than the new 'call wout' which could lead to an I/O error. Added new wout_c_s to cope with writing characters with single-precision reals. 156. Brief update of the discussion of DMC parallel performance in the manual. Added reference and a graph showing the essentially perfect linear scaling with the number of processors introduced in 2.8.108 and associated patches. (This patch also includes some minor general tidying). 155. Modifed doc/bashrc.hector and doc MACHINES to reflect recent name changes on the UK Hector system. Note you should use phase2a.hector.ac.uk and phase2b.hector.ac.uk to login into the different machines (the old 'login.hector.ac.uk' has switched from pointing to the former to the latter.) Allowed 'hector2a' as an alternative QMC_ID to 'hector'. 153-154. Changed version numbering scheme. Up to now, new public releases of CASINO have had sequential version numbers e.g. 2.3, 2.4, 2.5. Henceforth, following standard industry practice, even numbered versions (such as 2.8) are 'public releases', and odd numbered versions (such as 2.9) are 'development versions'. Thus, on releasing 2.8 to the world, a copy of this becomes '2.9.0' and patches will be added as '2.9.1, 2.9.2..' to the internal version worked on by Cambridge developers and their collaborators. When sufficient patches have been added to warrant a new public release, version '2.9.324' (or whatever) will be copied to '2.10.0' and released for public download on the web site. Subsequent development will then start again with 2.11.1 etc. For sufficiently huge changes, the main version number can be changed e.g. to 3.0.0 etc.. though this won't happen very often. Note that the internal tags and main.f90 version numbers in the CASINO git repository are *not* consistent with this for this 2.8 release, being internally named 3.0.1, 3.0.2 etc.. We will have forgotten about this in a few years, and since any future change to 3.0.0 will be followed by development versions called 3.1.1 etc. there shouldn't be any clashes. Clear? Hmmm.. 152. Added new 'ALLOW_SLAVE_WRITE' keyword to toggle permission for slave nodes to write to the main output file. The default is to allow it. The ability to turn this off can be useful when you're running on a million cores. See also patch 2.8.30. 151. Various bits of tidying for forthcoming public release: - Updated CHANGES/README/README_INSTALL etc. files - Trawled and fixed lines over 80 characters in source code - Fixed some non-standard formatting in source files for recent submissions. 150. [NDD] Added note to manual explaining that external fields only act on the particles simulated; constant potential-energy contributions, e.g., electrostatic contributions, are ignored. 149. [NDD] Updated manual with information about "preliminary DMC". 148. Fixed some messy implicit type conversions in numerical.f90 that were giving g95 compiler warnings. 147. [PLR] gbasis.f90: fix Laplacian of anisotropic cut-off. Fixed two separate problems with the computation of the Laplacian in the anisotropic cut-off function. Skip calculation of some bits of the Laplacian when l=1 for efficiency. 146. [PLR] gjastrow.f90: trap zero terms in JASTROW block instead of crashing. 145. [PLR] gbasis.f90: revamped anisotropic cutoff function Each anisotropic cutoff function can now reproduce real spherical harmonics thanks to the addition of fixed coefficients for each product of powers of Cartesian coordinates and the division by the appropriate power of r. E.g., a cutoff function times the zy^3 spherical harmonic (l=4), which is proportional to (3x^2-y^2)yz/r^4, would be specified using Constants: xyz_1: [ c: 3.0, p: [ 2, 1, 1 ] ] # 3 * x^2 y^1 z^1 xyz_2: [ c: -1.0, p: [ 0, 3, 1 ] ] # -1 * y^3 z^1 Also, odd sums of exponents are now allowed. Mismatched sums of exponents within the same cutoff function are now disallowed. A simple framework for reporting the symmetry of basis functions and cutoffs has been implemented. Electron-electron functions are required to be even, while electron-nucleus functions may be even, odd, or non-symmetric (it's up to the user to make a sensible choice, but a bad choice doesn't break the antisymmetry of the wave function; it just worsens the energy). The consequence of this for anisotropic cutoffs is that odd sums of exponents ar only allowed in electron-nucleus functions. In addition, this commit adds the ability to specify a different reference frame for each atom in anisotropic electron-nucleus cut-offs. The syntax for this is, e.g.: Constants: xyz_1: [ c: 3.0, p: [ 2, 1, 1 ] ] # 3.d0 * x^2 y^1 z^1 xyz_2: [ c: -1.0, p: [ 0, 3, 1 ] ] # -1.d0 * y^3 z^1 Frame 1: Atoms: [ 1, 2 ] u_1: [ 1.0, -1.0, 0.0 ] u_2: [ 1.0, 1.0, 0.0 ] u_3: [ 0.0, 0.0, 1.0 ] Frame 2: Atoms: [ 3 ] u_1: [ 1.0, 0.0, 0.0 ] u_2: [ 0.0, 1.0, 1.0 ] u_3: [ 0.0, -1.0, 1.0 ] The reference frame must be orthogonal and right-handed. The u_i can be specified unnormalized. Specifying a single "Frame" with no "Atoms" keyword works for electron-electron cutoffs too. 144. [PLR] wfn_check.f90: removed leftover blanks 143. [PLR] gjastrow.f90: catch integer overflows in constraint array sizes Such overflow was seen for an electron-electron-electron-electron-nucleus term. A solution would be to store these matrices unvectorized, which would allow the total matrix size to exceed the largest integer so long as the individual dimensions don't overflow. However that would require quite a bit of a rearrangement, and still requires exercising care for certain operations (e.g., a 'dcopy' of the array would still overflow). 142. [NDD] Tidying of harmonic wire stuff and some numerical routines. 141. Fixed future walking error introduced in recent parallel DMC changes. 140. Modified billy script for use with CRYSTAL09. 139. Modified opt_crystal optimizer script for use with CRYSTAL09. 138. Fixed long-standing bug (introduced in 2.4.41) in crysgen06/09 utilities which could cause an out-of-bounds error, especially in polymer cases. If it did not cause such an error, the output gwfn.data would have been unaffected. 136-137. Minor corrections to an error check and some output in the runcrystal script/crysgen09 utilities. 135. [KAS] Implemented b-splined 3D-periodic potentials in the expot.f90 module. Example expot.data file included in examples/generic/expot/blip_periodic. 134. Fixed long-standing minus-sign error in compute_ii_fields in vcpp.f90 (which calculates the electric fields at the positions of all the ions due to the ion cores as derivatives of the Ewald potential, a quantity required for evaluating the periodic core polarization energy). In some structures like silicon this field is zero by symmetry, but in others it isn't and this was then a potentially serious error. Thanks to NDD for pointing this out. 133. The CRYSTAL API has changed between version 06 and version 09 (one would have thought that this should be the one thing that remains constant over time so people like us with external codes don't have to constantly rewrite our interfaces). Anyway, the practical upshot is that the GRED.DAT file produced by C09 is different to the C06 one because the overlap matrix has a different size(!?!). I have therefore rewritten the old 'crysgen' utility, and we now have 'crysgen06' and 'crysgen09' in its place. These utilities are called automatically by runcrystal if you use the -qmc flag so this change should be transparent to the user. Added discussion of CRYSTAL09 to the manual and website. From now on CRYSTAL09 is officially supported. EDIT - later explanation from Roberto Orlando: "Hi Mike, I'm sorry for this inconvenience and for missing to communicate that change. During the implementation of CPHF we realized that Fock and overlap matrices were indexed in different ways for apparently no reason and that we were using different routines for Fourier transforming them just because of this. Thus, dealing with double indexisation was a mess (as far as I can remember, deciding sign in complex number products was quite complicated). Threrefore, we decided to unify them and drop the special Fourier transform routines for the overlap matrix (the only other part of the code where SG is used is Mulliken population analysis). You are right, the allocation statement is a bug, as you say with no consequences because NPGT>NPGF. What's your suggestion then? We should be going to issue a new revision of CRYSTAL09 soon: shall we maintain the old size and fill the remaining elements with 0's? In any case, indexization of SG has changed, being the same as for FG now. Since it was Carla to maintain CRYAPI, I ignore where the information about the organization of arrays can be found. Indeed, if S is used by an external program, indexization will necessarily need to be updated. Roberto O." 132. Added automatic running of dos2unix to the runcrystal script if Windows control characters are detected in a CRYSTAL input file (for some reason the test cases supplied with CRYSTAL09 are full of them, and this causes failure of any unix shell script trying to grep anything). 131. Updated 'runcrystal' script to run previously unsupported CRYSTAL09 by default (previous versions still available with -95/-98/-03/-06 flags). 130. [PS] Merged keywords ATOMIC_DENSITY and DENSITY. CASINO will use either atomic charge density (finite_density in expval.f90) routines or periodic system density (density in expval.f90) depending on what the system is. The keyword SPIN_DENSITY_MAT has been removed. A description of the atomic density is included in the manual." 129. [PLR] gbasis.f90: fixed issue with printing constants in shared bases. 128. Bugfix: MPI send/recv problem occurred if VMC config write was attempted with sequence of VMC moves made up of more than one block (introduced in patch 73-75). 127. Minor change to doc/bashrc.hector. 126. Some more minor modifications to the cray-xt* user include files (for Jaguar and Hector). 125. [NDD] Memory requirements on Lancaster HEC cluster are now specified per compute node. I have updated runqmc accordingly. I have also made the memory estimate depend on the basis: a large amount is requested for blips, a small amount is requested for electron gases. 124. Pathscale compiler on Jaguar suddenly required -DF90_DOUBLE_UNDERSCORE added to CPP_FLAGS_SHM to compile and link the shared memory executable. Fixed in the cray-xt5-path user include file. 123. Following extensive timing required in patch 113, have now returned the subroutine timing calls in the DMC module to something approaching normality. 122. Requested name change in patch 56 : I have now changed the name of the newly implemented expectation value in input from 'CHARGE_DENSITY' to 'ATOMIC_DENSITY' (since it works only for single atoms). Previous name did not make clear how it differed from the existing 'DENSITY' which after all is just an abbreviation for the phrase 'charge density'. Typing 'casinohelp density' reported that the DENSITY keyword computed the 'charge density'. Huge potential for confusion hence now avoided. Note this will break all expval.data files produced with the current beta that incorporate this expectation value - but it's a beta, sorry. Just replace the string 'CHARGE DENSITY' with 'ATOMIC DENSITY' in the expval.data files to make them work. 121. As promised in patch 77, rewrote the partial_rank_int routine ('find the locations of the n smallest integers in a vector') to find the locations of the n *largest* integers in a vector (which is what redist actually wants it to do). Hence no longer have to multiply vector input to partial_rank_int by -1 beforehand to find largest elements, hence minor speedup in DMC. Renamed the old routine to partial_rank_int_asc and commented it out (since it is not currently required for anything). Note this will change the answer to within error bars since the old and new routines don't agree on the rank of degenerate cases (hence config transfers will occur between different processor pairs, and configs will end up in different random number streams). 120. [PLR] monte_carlo.f90: fixed an issue with fixed-length formatting. 119. [PLR] dmc.f90: fixed double allocation in vmc_dmc / dmc_dmc runs. 118. [PLR] gbasis: fixed problems with Gaussian elimination Once And For All Fixed a problem with relative/absolute tolerances. Removed renormalization of the equations at all stages to preserve numerical accuracy. Added purge of parameters based on relative criteria to eliminate spurious non-zero elements reliably. Tested these changes on large terms for a change. 117. [PLR] gbasis: fixed invalid deallocation 116. [PLR] wfn_utils.f90: added basic structure to do arbitrary multi-level sampling. 115. Fixed mistake in the way runqmc interprets time codes (arguments to the -time flag) on Jaguar. Thanks to PLR for pointing this out. 114. In 112 I forgot to add fake version of new mpi routines 'mpi_comm_group', 'mpi_group_incl' and 'mpi_comm_create' to the comms_serial.f90 routine, hence the code would fail to compile on a single processor machine. Fixed. 113. Rearranged the subroutine timing calls so the whole of DMC is now covered (previously there was quite a bit of time unaccounted for). The whole timing output is now far too messy, however - I will tidy it later. 112. Made the DMC redist groups into proper MPI communicators, and made setup_redist_groups into a separate routine, rather than a part of branch_and_redist_send. Then I realized that this isn't a good way to make the MPI_REDUCE of sum_data_loc to sum_data in DMC go any faster (this is one of the last thing preventing the approach to linear scaling with the numbers of processors). I'll keep the communicator setup in there for the moment in case I think of a use for them. 111. Parallelized the gathering and manipulation of nconfig/ageinfo in DMC using the redist groups. This was taking a substantial amount of time for very large numbers of nodes. Reduced from 26 seconds to 1 second on 82944 nodes. 110. Added printout of REDIST_GRP_SIZE in output. 109. Disabled call to random_check_log in put_random_state. 108. Parallelized the calculation and distribution of redist instructions (which scaled linearly with the number of processors even for a constant number of configs). In the branch_and_redist algorithm (which does redistribution of configs across nodes in DMC) we must decide which pairs of nodes are involved in config transfers, and how many configs are to be transferred in each operation. There is an optimal algorithm for doing this (involving looking at individual config multiplicities and the exact excess or deficit of configs relative to a target on each node). If we consider *all* the nodes, then this algorithm scales linearly with the number of nodes, eventually (around 50000 processors) becoming so expensive that for a fixed number of configs the code actually becomes slower if we increase the number of nodes. I have therefore parallelized the algorithm; to do this we form groups of processors ('redist groups') of size given by new input keyword REDIST_GRP_SIZE (plus some remainder). When calculating the vector of instructions, only transfers within these groups are contemplated, and the cost for working out what to send where no longer increases with the number of nodes (above a certain size). Current default value for REDIST_GRP_SIZE is 500. I will investigate the optimum value for this (will be affected by 107 below). A quick test showed that on 82944 cores of Jaguar, this modification and the previous one reduced the REDIST time from 283 seconds to 1 second, which is good. Further tests ongoing - let me know of any problems. EDIT: Tests completed. Patches 107/108 and previous efficiency improvements now mean that CASINO is perfectly linear scaling out to 120000 cores of Jaguar and presumably well beyond this. Parallel scaling problem thus solved. 107. Substantial rewrite of the DMC algorithm for greater efficiency on large numbers of cores. In particular, the branch_and_redist stuff (redistribution of configs across nodes) now use non-blocking MPI calls. That is, when configs are sent from one node to another, the program carries on immediately without waiting for the transfers to complete. Existing configs are then moved, then the new routine BRANCH_AND_REDIST_RECV checks the transfers have completed and breeds the newly arrived configs (if necessary). These are then moved in addition to the already existing ones. 106. Disabled automatic calling of 'random_check_log' routine on large numbers of processors (> 100) since all the stuff about checking whether the initial random seeds are equal to each other can take a not insignificant amount of time. From now on, set ranprint > 0 in input if you want to do this. 105. Runqmc was blocking use of the debug queue on Jaguar XT5 (because its use was originally restricted). Now anyone can use it, so I've removed the error check. 104. Updated doc/MACHINES file with various tables of walltime limits and aging boosts as a function of the number of cores for the Jaguar machines. 103. [LA] More polishing of shared memory. 1) Introduced two self explanatory preprocessor flags, -DSHM_SYSV -DSHM_POSIX, for selection of shared memory with System V or POSIX, respectively, using system depended Makefile flag CPP_FLAGS_SHM. 2) The preprocessor structure of alloc_shm.c was changed accordingly, no hacking with the old SHM flag. 3) Documentation update in Sections 11 and E4.1 of the manual. 102. Fixed error in DIARY instructions for previous patch. "If some machines needs POSIX shm one has to set CPP_FLAGS_SHM= in the" should be "If some machines needs POSIX shm one has to set SHM_VERSION_= in the" 101. [LA] Added POSIX shm to alloc_shm.c in addition to SYSV version, and fixed some more shm bugs. 1) in alloc_shm a) I have removed the last argument of GET_SMP_LIST function (not present in shallocate call, ouch!) b) free cnidlist pointer (SYSV version). This was a small memory leak! c) renamed the alloc_* and dealloc_* functions with the scheme alloc_shm{posix,sysv) d) add a descriptive header for preprocessor flags on the top of this file e) removed the unused arguments from dealloc_shm_sysv (as mentioned by MDT earlier) 2) in shallocate_smp cast the size of array a to 64 bits in deshall_* subroutines 3) in Makefile I set SHM_VERSION_ = -DSHM which latter is passed to CPP_FLAGS_SHM . If some machines needs POSIX shm one has to set SHM_VERSION_= in the corresponding user .inc file or pass CPP_FLAGS_SHM="" to the make command line. I thought about using two explicit flags, SHM_SYSV and SHM_POSIX, but the preprocessor conditionals get rather complicated for me, so I went for a verbal description in top of alloc_shm.c 100. Fixed bug in read_binary in bwfdet.f90. If the code tries and fails to read a bwfn.data.b1 binary file (as it might do if the file was produced on a different machine), then it is supposed to default to reading in the formatted bwfn.data instead. However it forgot to deallocate the arrays that might have been allocated when reading the binary file, before trying to allocate them again when reading the formatted file. 99. Corrected mistatement in doc/MACHINES file regarding Jaguar system. 98. Major modification to the transfer arrays used to shift configs between nodes in the branch_and_redist routine (and associated routines). Required for a future DMC algorithm change. Requires slightly more memory. 97. Fixed error in check_kpoints in eval_geometry.f90 which led to many periodic cases crashing. Turns out to be bug in ifort compiler. e.g. the following programme will incorrectly give an integer divide by zero error: PROGRAM arse INTEGER i(3),k(3) DOUBLE PRECISION r(3) r(:)=1.d0 i(:)=2 k(:)=modulo(nint(r(:)),i(:)) write(6,*)k(:) END PROGRAM arse It will work if you take the nint out of the modulo. Thus in check_kpoints we replace dk_i(1:p,ik)=modulo(nint(dk_ir(1:p)),npcell(1:p)) by dk_i(1:p,ik)=nint(dk_ir(1:p)) dk_i(1:p,ik)=modulo(dk_i(1:p,ik),npcell(1:p)) and all is apparently well(!!??!) Version of ifort used: 12.0.0 20101006 96. [NDD] Fixed bug introduced in patch 95 arising from use of long integer type. 95. [LA] Following on from patch 85.. MPI broadcast of blips was using the number of elements of the blip array stored as a 32 bit integer, which could fail for very large systems. Fixed. 94. Turned off Shm debug flag presumably set in patch 92. 93. Fixed typo in patch 90. 92. [LA] In bwfdet.f90 the variable num_nonloc_max was recomputed after reading but only on the master node. The new value is now broadcast to all nodes (fixes error which could potentially lead to segfaults). 91. Added definition of MPI_ADDRESS_KIND to comms_serial.f90 so Shm version will die more elegantly if you try to compile on a single processor machine. 90. The dealloc_shm routine suffered from the same problem as alloc_shm (patch 88) though the type argument was not used. Apparently it is used in the Posix version which will be reimplemented shortly, so I fixed it. 88-89. Fixed major error in shared memory allocation. When calling the C routine alloc_shm in alloc_shm.c, the Fortran calling routine passed as one of its arguments e.g. the datatype 'mpi_double_precision' as an integer (=17 in this case). In alloc_shm, this was immediately declared to be an MPI_Datatype. This is just not right; C MPI_Datatypes are not integers. One has to use MPI_Type_f2c to translate between the two. This was causing segmentation faults on some (amazingly not all) machines e.g. Linux PCs/clusters. Fixed. 87. [LA/MDT] Patch 85 not portable. Fixed. 86. Minor change to doc/bashrc.hector involving detecting whether we are on the phase 2a or phase 2b system - since they changed `hostname` on Hector 2b 85. [LA] For very large blip systems the number of elements in the blip array was too large to be stored in an integer. Changed the type of variable for the number of elements to long integers (modifications to shalloc_smp.f90 and alloc_shm.c.). 84. [NDD] Allow DMC to be used for preliminary configuration-generation runs for larger DMC calculations, in order to cut down the equilibration time. 83. Minor correction to patch 80. 81-82. Code refused to compile with pathscale in debug mode on Cray-XT* machines - apparently due to bug associated with the -C flag which turns on bounds checking. Flag removed from all relevant include files. 80. Optimized part of REDIST_CALC_INSTR block in branch_and_redist routine in dmc.f90 using fast partial ranking routine (patch 77). Order of magnitude speedup for large numbers of nodes. [NB: configs will be distributed differently round the nodes - hence this patch will change the answer within error bars]. 79. Fixed bug in partial_rank_int (added in patch 77) which caused the routine to fail when the first three elements of the input vector were equal. 78. Updated consent forms in CASINO/doc. 77. Anticipating future requirements, added a fast partial ranking algorithm to the numerical.f90 module. This finds the locations of the n smallest integers in a vector (order of magnitude faster than the way this is currently done in certain parts of the code). Can easily be overloaded for different types. I will shortly generalize this to find the n *largest* integers in a vector, but in the meantime the same thing can be accomplished by multiplying the vector to be ranked by -1 in the subroutine call (with a very slight overhead). 76. Removed possibility of using multiple independent populations of DMC configurations on parallel machines (controlled by "DMC_NPOPS" keyword) introduced in patch 2.4.91. This functionality has no real benefit and its removal serves to streamline the code. 73-75. Persistent parallel DMC crashes (compiler/openmpi error?) fixed by embedding all MPI calls in configs.f90 in wrappers. 72. Minor efficiency increase in read_configs.f90. In general, as we move into the million core era be aware of summing things over nodes inside loops over nodes, and stuff like that. Many CASINO loops are written as if the number of nodes will never rise above 100.. e.g. ! Distribute remaining configs over nodes allocate(nconfig_node(0:nnodes-1),stat=ialloc) nconfig_node(:)=nconfig_total/nnodes ! do i=0,nnodes-1 ! if(sum(nconfig_node)==nconfig_total)exit ! nconfig_node(i)=nconfig_node(i)+1 ! enddo SHOULD BE REPLACED BY i=mod(nconfig_total,nnodes)-1 nconfig_node(0:i)=nconfig_node(0:i)+1 71. Made broadcast and checking of nconfig in branch_and_redist more efficient (including replacing the two-step mpi_gather/mpi_bcast by a one-step mpi_allgather). 70. Added some non-blocking sends and mpi_allgathers to comms_serial.f90 and parallel.f90 (required for subsequent mods). 69. The autotest script runs parallel jobs by calling mpirun directly and does not use the runqmc script. This meant that my fix in patch 62 did not work on brutus when playing with the test suite. Modified autotest so that it uses 'mpirun --mca btl self,sm,tcp' instead of 'mpirun' on brutus. 68. Some of the DMC examples in the autotest library had far too few configs for parallel runs with more than a couple of nodes - potentially leading to the problem observed in patch 66. Consequence of the transfer to the newfangled input keywords where the population does not increase with the number of processors. Fixed (reasonable up to about 12 nodes). Tidied up all the autotest input files : inserted all correct section headings (allowing modify_inputs to function); added missing blurbs; changed all to modern format. 67. Added warning for the case that a DMC calculation is initialized with a target weight/number of configs less than the number of nodes. 66. Parallel DMC calculations could hang unexpectedly for no readily apparent reason. Turned out to be due to incorrect handling of population fluctuations to zero configs on any node other than the master. Fixed. 65. Fixed potential uninitialized variable that had been introduced in cusp_setup in gaussians.f90. 64. Fixed a minor problem with the output for relativistic corrections. 63. Fixed another serious error in parallel DMC. Problem was in branch_and_redist routine and occurred when multiple *different* configs were transferred between any pair of nodes during load balancing. Note that normally multiple configs can be transferred by sending a single config with a high multiplicity which creates copies of itself on arrival. If this is not sufficient, extra *different* configs may be sent. This bug meant that on the destination node all data for these additional transferred configs was replaced by the data from the first config transferred. Note that this is a potentially serious error and in principle could cause the code to give wrong answers. Even worse, the bug seems to have been introduced as long ago as 2.0.475 from 2006 without anyone noticing. The only saving grace is that this kind of transfer appears to be relatively infrequent - at least with high-quality wave functions and small timesteps. Testing required. [LATER COMMENT FROM NDD:] The bug does indeed result in a negative bias, although one has to look quite hard to see it. For the 54-atom pseudosilicon Gaussian example, if I perform DMC without a Jastrow factor and have a target of 256 configurations and use the dmc_poprenorm algorithm (to prevent the massive surge in population during equilibration) then the DMC energies are as follows ============================================== Job Energy (a.u. per prim. cell) ---------------------------------------------- 1 processor -7.9113(6) 4 processors, bug -7.9153(3) 4 processirs, no bug -7.9114(4) ============================================== 62. DMC calculations refused to work on my new workstation (two 6-core Xeon X5680s) - get random segfault or hangs during mpi_send/recvs in read_configs routine. Turns out to be an Openmpi bug (tried both 1.4.3 and 1.5 versions). Problem can apparently be bypassed by playing with btl options - so added QMC_ID=brutus and changed runqmc so brutus does 'mpirun --mca btl self,sm,tcp' instead of 'mpirun'. Still doesn't work with hyperthreading (e.g. Linux thinks there are 24 cores on this machine, even though there are physically only 12 - but runqmc -nnodes 24 dies with the usual segfault..). I don't necessarily care since hyperthreading is unlikely to help, but if anyone has a suggestion.. 61. Fixed a format descriptor in the CRYSTAL06 converter that compilers were complaining about. 60. Changed FFLAGS in plot_expval Makefile so that it compiles on Jaguar. 59. Fixed serious parallel DMC error in branch_and_redist introduced in patch 2.6.320. Incorrect replacement of 'pop' by 'tpop' in the line inode=fproc+maxloc(pop(fproc:lproc),1,tpop(fproc:lproc)==basepop)-1 meant that the current population of each node was ignored in deciding which config transfers to make. Should not affect the answer but DMC parallel efficiency would have been badly affected. 58. [PS] autotest: Added test for charge density accumulation and relativistic correction calculation. 57. [PS] relativity.f90: Partial relativistic corrections may be calculated for open-shell systems. 56. [PS] Charge density accumulation implemented. [MDT: FOR FINITE SYSTEMS] Calculation of charge density is restricted to atoms/ions for the moment. Enable by setting "charge_density : T" in the input file. Accumulation in the following basis sets is possible: 1) step functions (equivalent to binning) 2) spherical Bessel functions 3) Chebyshev polynomials 4) decaying exponentials Binning the data first and then fitting using nl2sol is found to work best, and full functionality is only available for the step functions. The cut-off value beyond which no accumulation occurs for the radial moments can be either a fixed cut-off or a system-dependent value r_max. R_max is passed from awfdet/bwfdet/gaussian -> wfdet_basis -> slater -> wfn_utils -> expval. In awfdet, rmax is chosen as the largest radial grid point with non-zero orbital values. [MDT REQUEST TO BE IMPLEMENTED: please change the name of this since we now have two expectation values called 'density' and 'charge density' which are the same physical quantity. High potential for confusion.] 55. [PS] reblock.f90: prints error line number. Count does not include number of lines in header. 54. [PS] tailvp: pass arguments to tail, not assuming '-f' anymore. 53. [PS] runvp: removed soft link for expval.data 52. [PS] ve: modified display format of relativistic components. 51. Added documentation for jaguar/hector to doc/MACHINES file. Modified runqmc documentation in utils/runqmc/README and the manual. 50. Added "-njobs" argument to the runqmc script (currently restricted to cray-xt* arches i.e. Hector/Jaguar). Intended to run multiple jobs simultaneously on large batch queue machines. E.g. with "runqmc -nnodes 40000 -njobs 4" the generated batch script will reserve 40000 cores, but run 4 completely independent 10000 core jobs - with a large reduction in queueing time. On Jaguar jobs that request large numbers of cores are given high priority - hence this is a good thing. The input files for the 4 different jobs must currently reside in directories named '1 2 3 .. njobs' in the directory from which runqmc is invoked (if desired, one could easily make it read directory names from a file or from the command line but I couldn't be bothered.) Added new runqmc errstop function 'errstopd' which prints the current working directory as well as the error message (so if e.g. checking the input file reveals an error you know which of the multiple inputs it's whining about). 49. Small correction to OpenMP in bwfdet/blip3dgamma. Deleted the src/Makefile message about the incompatibility between OpenMP and SHM, and corrected the syntax of an associated test. 48. Added doc/MACHINES file to give specific instructions on how to setup/run complex highly-customized machines like Jaguar/Hector. 47. Modified runqmc for use with Jaguar (also fixes a minor issue with runqmc on hector). 46. Added login support for Jaguar machine at ORNL (fastest machine in the world so we ought to properly support it!). In addition to existing QMC_ARCH = cray-xt4-path and cray-xt4-pgf we have new QMC_ARCHes cray-xt5-path and cray-xt5-pgf (pointing to the relevant linuxpc-COMPILER-pbs-parallel.inc files) with QMC_ID=jaguar. All this set up automatically on login for both XT4 and XT5 partitions using the supplied doc/bashrc.jaguar as your .bashrc. 45. [NDD] Removed a warning message that occurs every time one runs DMC using the standard input keywords (iaccumulate in particular). 44. [NDD] Modified runqmc to add memory estimate to job-submission script for Lancaster HEC cluster. 43. Moved FAQ into the main CASINO directory from doc. 42. [NDD] Added new QMC_ID "lancaster" for QMC_ARCH "linuxpc-ifort-lsf-parallel". Updated runqmc to deal with this QMC_ID. (For HEC cluster at Lancaster University.) 41. Added new QMC_ARCHs cray-xt4-path/cray-xt4-pgf/cray-xt6-path/cray-xt6-pgf which point to linuxpc-path-pbs-parallel and linuxpc-pgf-pbs-parallel. This is a temporary fix for the separate binaries/object files issue on hector/hector2b, until PLR's whizzo new scheme replacing QMC_ARCH/QMC_ID is finished. 39/40. Added and erased attempt to separate binaries and object files for hector and hector2b. Will think of better way to do it. 38. Added different default module loads (xtpe-barcelona or xtpe-mc12) for hector2a and hector2b into doc/bashrc.hector. 37. Added 'export XTPE_INFO_MESSAGE_OFF="1"' to the doc/bashrc.hector file. This turns off all the annoying "/opt/cray/xt-asyncpe/3.6/bin/ftn: INFO: linux target is being used" messages when compiling on that machine. 36. Modified the manual to include a description of the various options to the runqmc script. 35. Rewrote the utils/runqmc/README file to include all recently-introduced options. 34. The runqmc script was broken for hector due to a confusion over whether -nnodes refers to the number of MPI processes (as specified in the usage note) or the number of multiple-core nodes. For any tpn other than 1, runqmc generated batch scripts which are immediately rejected by the queueing system with no obvious explanation. Fixed. Note that the general behaviour of runqmc is to assume the former meaning of nnodes if tpn is unset, and the latter otherwise. This is not immediately clear from the usage note or the relevant documentation, and should be clarified in a future patch. 33. [NDD] "Wigner-Seitz radius" has been replaced by "radius of the sphere/circle/line inscribed in the Wigner-Seitz cell" in the manual and the output of CASINO. 32. Recent migration of user workspaces on hector broke the runqmc test for running in the correct directory. Fixed. 31. Reduced maximum number of nodes for hector phase2a machine in runqmc following recent change in machine configuration. 30. [PLR] format_utils.f90: add internal flag to inhibit slave output to main output file Output from slave nodes can be inhibited by setting ALLOW_SLAVE_WRITE=.false. in format_utils.f90. The value is set to .true. in the distributed version. Also removed slave output from global errors (errstop_master). 29. [PLR] casl.f90: clarify errors about block/scalar mismatches (suggested by RML). 28. [PLR] slater.f90: fix wrong comment. 27. Modified doc/bashrc.hector for new phase2b machine. 26. Update of PWSCF-CVS code to fix the PP/pw2casino-MDloop.sh patch script which enables PWSCF to do QMC-MD calculations. 25. Added capability to use multiple pseudopotentials for elements with the same atomic number (e.g. Mg with He core on a surface, and Mg with Ne core in the bulk). Different types of pseudoatom are flagged in xwfn.data by adding multiples of 1000 to the original atomic number e.g. atno 12, 1012, 2012 correspond to atoms using mg_pp.data, mg2_pp.data, mg3_pp.data etc.. 24. [PLR] plotter.f90: fix for 1D and 2D plots In 1D (2D) plots with fixed particles, CASINO was setting the fixed particle y and z coordinates (z coordinate) to possibly uninitialized values. Fixed. 23. Update git_tools/git_update script so that tags are copied to the repository by the repository maintainer.. 22. Added all recent keywords to examples/generic/input_file_full/input example file. 21. [PLR] autotest: increase number of configs for sih4_GS/varmin_rewt again Patch 2.6.375 increased the number of configs for this example from 100 to 200 to avoid a crash on some particular machine/compiler combination. However now linuxpc-ifort-parallel crashes on a 2-core PC, so increased number of configs to 300. 20. Added README to autotest directory. 19. DIARY modification. 18. Bugfix (from patch 2.8.12) : when doing spacewarp transformations read and write nuclear positions to config file only if nuclei are actually present. 17. Fixed ve_helper.f90 so it compiled with NAG compiler. 16. [NN] DMC_REWEIGHT_CONFIGS: write Etot in log output. 15. [NN] Set maximal weight factor in reweighting to 10.0 Occasionally, very large weights happen due to a walker that happened to be close to a node in the original system. The huge increase in weight causes this walker to dominate the new population and strongly reduces reweighting efficency. Truncating individual large weights causes negligible bias but greatly stabilises the algorithm. 14. [NN] timing of DMC reweighting and space warping. 13. [NN] dmc.f90: allow newrun:T on DMC-generated configs. 12. [NN] DMC_SPACEWARPING: adjust electron coordinates of existing population to ion positions in new wave function. 11. [NN] Initialize ebest_init to ebest after reweighting (don't shift to avoid accumulation of errors). 10. [NN] Sort through definitions of etot and eloc. 9. [NN] Another bugfix. 8. [NN] DMC_REWEIGHT_CONFIGS: minor bugfix. 7. [NN] DMC_REWEIGHT_CONFIGS: perform branching after reweighting. 6. [NN] A bit of cleanup in dmc_configs_reweight. 5. [NN] DMC_REWEIGHT_CONFIGS: QMC-MD reweighting (Grossman&Mitas PhysRevLett.94.056403) When configurations are read in from config.in based on a previous DMC run, the new run may use a different wave function. In this case, the new CASINO keyword DMC_REWEIGHT_CONFIGS allows adjusting the weights of the walkers after reading them in. This functionality only works with LWDMC switched on. When reweighting, ebest and eref are shifted by the difference in the total energy of the current population. Typically NEWRUN:T should be used. This makes sure that ebest is computed only from the current run without the previous history. 4. [PLR] vmc.f90: fixed handling of mixed optimizable/fixed DTVMCs DTVMCs not being optimized would be set to zero after equilibration if any other DTVMCs were optimizable. This only affected calculations using the DTVMCS input block to specify both fixed and optimizable DTVMCs for different particle families. 3. [PLR] gjastrow.f90: introduced relative tolerance for determined parameters Read and re-computed determined parameters are now compared using a tolerance calculated as the largest of REL_TOL * read value, REL_TOL * re-computed value, and ABS_TOL, where REL_TOL and ABS_TOL are internal parameters. This is a much more sensible way of comparing numbers than using only ABS_TOL as before, and should stop the code from crashing on perfectly valid parameter sets with large values in them. 2. [NDD] The ABINIT and GP pseudopotential converters have been updated to write out pseudopotentials in the format described in the CASINO manual. I've also added a suggestion to check that x_pp.data is in the correct format if there is an error reading it. 1. Changed version numbering for 2.8. Modified some recent changes in wrong coding style which broke obfuscator script. List of changes for CASINO 2.6 ------------------------------ 378. Various changes and updates for the final release of 2.6. 377. [PLR] Re-adjusted CASINO version number to 2.6.xx rather than 3.0.xx (since the major changes to come warrant a shift of the main version number, whereas the ones below probably don't). 376. [PLR] gbasis.f90: fix problem with generation of G-vectors up to fixed offset. Also added internal flag to debug G-vector generation. 375. [NDD] Change to an autotest example that failed due to poor numerics. 374. [NDD] Updated the section on relativistic corrections in the manual. 373. [NDD] Fixed bug affecting use of relativistic corrections with VMC method 3 (see patch 372). 372. [NDD] Allowed relativistic corrections to be used in any closed-shell system, whether periodic or aperiodic, with any number of ions. I can roughly reproduce Kenny's relativistic results for the HEG, although we can do a much better job now with better Jastrow factors and backflow. Note that the estimators of several of the relativistic correction terms are valid for VMC but not DMC. This means that DMC and extrapolated estimation are not necessarily any better than VMC. One can write down estimators that are valid in DMC, but the one for the mass-velocity term would require 4th derivatives of the wave function. Updated NAG .inc file: f95 -> nagfor. 371. [PLR] gbasis.f90: fix 'minloc(array,dim[,mask])' not working The gbasis module has had trouble sorting particle group signatures since patch 321, partially addressed (but not completely fixed, possibly due to a compiler bug) in patch 352. Now have entirely replaced 'minloc' with a custom search loop. The problem appears with the ifort compiler (others not tested). WARNING: the use of the 'minloc(array,dim[,mask])' form of the 'minloc' intrinsic may be causing trouble elsewhere - replace with loops whenever possible! 370. [PLR] varmin.f90: do not print monitor header again after a bad parameter set. 369. [PLR] rna: display remaining machines in --update mode. 368. [PLR] gbasis.f90: made Gaussian elimination simpler and more robust. 367. [PLR] varmin.f90: make use of NL2SOL's ability to reject bad parameter sets. The varmin module now reports back to NL2SOL when it hits a bad parameter set (which would be flagged by the relevant low-level routine) or when a parameter set produces floating-point exceptions when calculating the local energies. In this event, NL2SOL should re-think where to move in parameter space and the calculation should proceed correctly afterwards. NL2SOL does not support these reports for derivative evaluations, where one would still hit an errstop in any of these events. However, it is very unlikely that these issues would arise for derivatives. The only module reporting bad parameter sets back to varmin is gjastrow.f90 (for the time being). Floating-point exceptions are correctly handled whatever modules are involved in handling parameters. Also collapsed all warnings about zero elements during Gaussian elimination in gbasis.f90 to a single warning per call, only to be issued if encountered during setup. Also reinstated parameter printout in varmin/madmin at opt_info=2. Also reduced communication for NaN, Inf and Zero flags to a single boolean. 366. [PLR] ve_helper.f90: fix integer overflows in 'EPMD2ED' format conversion - Fixed integer overflow that made energies -2.147483... (give or take a factor of a power of 10) - Fixed integer overflow that made errorbars look like '-./,),(-*,(' (this particular string is 'i2s' choking on the integer overflow) - Made sure 've -nf x' works for *any* x. 365. [PLR] reblock utility: fixed duplicated printout of FISQ for VMC data 364. [PLR] slater.f90: close routine timers on early return 363. [RML] Changes to ewald_1d in interactions.f90 and associated routines. 362. [NDD] Allow a r^(-3) tail to be added to the interaction between hard particles. 361. [NDD] Trap for non-positive hard-particle diameters. 360. [PLR] vmc: added DTVMC_SHIFT ; random_numbers: buffer Gaussian random numbers - Added input keyword DTVMC_SHIFT to shift the Gaussian transition probability by a certain amount (i.e., use off-centre Gaussians). DTVMC_SHIFT is expressed in units of sqrt(DTVMC), which is a measure of the width of the transition probability. - We now take advantage of the ability of the Box-Muller algorithm to produce a second Gaussian-distributed random number with a single extra multiplication. Several Gaussian random numbers with unit variance are produced (using single-precision arithmetic) and stored (as single-precision reals), and multiplied times the square root of the variance (which is now the argument of ranx_gaussian) when needed. - Fixed a bug by which the optimized timesteps for VMCMETHOD=3 would not be set correctly for diffusion types other than the first. THIS COMMIT CHANGE MODIFIES THE RANDOM NUMBER SEQUENCE (to restore it -- or nearly so-- set ranx_max=63 and ranx_gauss_max=1 at the top of random_numbers.f90) 359. [PLR] atomic_forces: remove unused imported variable 358. [PLR] configs.f90: fixed valjas-related bug which made test si_loc/dmc crash or hang 357. [PLR] lib/update_makefiles.sh: allow zero spaces after commas in EXTERNAL lists 356. [PLR] interactions.f90: fix variable mixup 355. [RML] New 1d HEG interaction Added the interaction of Phys. Rev. B 74, 245427 (2006) to simulate electrons in 1d with a transverse harmonic potential. One may specify the width parameter 'quasi_1d' in the free_particles block. erfc is now an adapted version of the Numerical Recipes routine. 354. [PLR] Makefile: for global clean and vclean trigger all.clean and all.vclean in src 353. [PLR] monte_carlo: trap OPT_METHOD=varmin_linjas with USE_GJASTROW=T 352. [PLR] src: fix bug in gbasis Fixed bug in the gbasis module due to patch 320's accidental deletion of two 'mask' arguments, and reverted to the use of unnamed optional arguments to min|maxloc. 351. [NDD] multirun: fix broken '-fin' list constructor 350. [NDD] Relaxed the assumption that pseudopotentials contain s, p and d components and nothing else. Hence one can omit higher angular-momentum components to avoid wasting time, e.g., for hydrogen pseudopotentials. It is also now possible to supply pseudopotentials with f or g components. The format of the x_pp.data file is unchanged, except that it is no longer necessary to give (only) the s, p and d components. The CPP and force modules still assume that just s, p and d components are present, however. 349. [PLR] gbasis: fixed access past end of array Bug reported by NDD. 348. [PLR] arch: added QMC_ARCH=intelmac-absoft 347. [PLR] runqmc: recognize intelmac-* QMC_ARCHs 346. [PLR] update_makefile: ability to deal with INCLUDEs This makes update_makefile applicable to the blip utility Makefile again. 345. [PLR] blip: fixed broken Makefile For INCLUDEs the -I flag must be passed to the compiler. 344. [PLR] file_utils: added 'wout' subroutine to write to output file This fixes the .out_node* annoyance reported by DA. Notes: - Removed output files from orbital check; all nodes write to their output files and runqmc concatenates them at the end as usual. - Disabled output from NL2SOL even at opt_info=5. - Developers: do NOT use 'write' to write to the output file, use wout() instead. Trying to do so will result in a runtime error since the output file will not be open. For other files you may either use "write" or "wout(...,unit=io)". 343. [PLR] autotest: improvements In particular: - autotest now uses unified diffs ('-u'), and colours them. - The output is now saved (uncoloured) to autotest.log. - Now only trailing blanks are ignored in diffs (uncomment the respective lines at the top of the script if a different behaviour is desired). - Fixed a problem by which timings were not reported in some cases. 342. [PLR] varmin.f90: print parameters when an FPE is encountered 341. [PLR] opt_crystal: fixed ** being written as * to .opt.resume files. 340. Reverted patch 330. Only works with GNU make which is not universally available. 339. [NN] runqmc: new option '-numablk' to access new NUMA shared memory feature. 338. [NN] Clean up shm code, remove unused variables. 337. [NN] Minor bugfixes for shm implementation (debugging code) 336. [NN] Reworked alloc_shm.c -- allocate shared memory in one block, several bugfixes 335. [NN] Lucian Anton's patch for shared memory affinity on NUMA machines (e.g. HECToR 2b). 334. [NN] Preserve valjas in redist. valjas should be sent along with configurations to enable saving it to config.out. 333. [NN] Bugfix for patch 308: valjas_config should be initialized only if not previously read in. 332. [NN] error_master: close output file before final qmc_barrier. This only works if errstop_master is called from all nodes! 331. [NN] More fixes for the hector.inc. 330. [NN] Remove empty .inc files form arch/make.inc/users. Replace include by -include in Makefiles to ignore missing files. 329. [NN] Improve module diff for PGI compiler. 328. [NN] Fix handling of population explosions: allow parallel exit via errstop_master. 327. [NN] runqmc: add "< /dev/null" to command execution. The old solution (conditionally adding $input_redir to $runqmc) does not work for mpich2. 326. [NN] readbwf: add calls to 'timer'. 325. [NN] Correct restoration of ebest_init from config.in 324. [NN] format_configs: Allow the new sections GEOMETRY and REBLOCK. 323. [NN] runqmc: clean up and unify usage message. 322. [NN] Compare .mod files of pgf ignoring the date in the 3rd line. 321. [NN] Workaround for PGI compiler bug. 320. [NN] minloc and maxloc not working properly. Replaced all 'minval(maxloc(arr(:)))' by 'maxloc(arr(:),dim=1)'. 319. [NN] Switch off annoying "SILENT" flag in hector makefiles. 318. [NN] Adjustments for ifort on TCM machines. 317. [NN] Corrections for pgf. 316. [NN] Correctly handle CFLAGS in Makefile. 315. [NN] Minor fix for ebest_init. 314. [NN] Switch off IPA on hector. 313. [NN] Changes for HECToR/Phase2b (export QMC_ID="hector2b"). 312. Minor change to mpr utility. 311. [NDD] According to CASINOHELP, if mpc_cutoff is set to zero then a default value should be supplied by CASINO. This wasn't happening, however. A default value such that about 30,000 G vectors are used in mpc.data is now supplied. 310. [NDD] Added a continuation character to esdf_key.f90. 309. [NDD] Some tidying of manual; tidied output of internal reblocking and DMC efficiency analysis. 308. [NDD] Initialized valjas_config to zero whenever it is allocated, to avoid NAG compilers complaining about the use of uninitialized variables. 307. [NDD] Updated g95 debugging flags. Updated autotest (to ignore differences in "Efficiency"). 306. [NDD] Fixed long-standing bug affecting 1D-periodic non-electron systems, which resulted in incorrect values for the Ewald energy. Fixed a bug affecting the effective exciton (biex3) system introduced in the previous patch. Fixed various warnings given by the NAG and g95 compilers. 305. [NDD] Allowed the use of multiple layers and wires in 2D and 1D HEG calculations. Layers / wires are specified in the free_particles block in input. 304. [NN] checkpointing: Save and restore on-the-fly reblocking data to and from config.* files. 303. [NN] checkpointing: save EBEST_INIT in config.X for exact continuation. 302. [NN] config.f90: Suppress writing of VALJAS if use_jastrow=F. 301. [NN] DMC_POPRENORM: bugfix for parallel calculation (added bcast). (broken in patch 296). 300. [NN] dmc.f90: use WDMC for all population handling schemes, eliminate DMULT. The variable WDMC used to be identical to DMULT in the LWDMC scheme and unused otherwise. Now, WDMC is used in both cases and DMULT eliminated from the dmc_main routine. DMULT_ARRAY is also eliminated. The communication between the drift-diffusion step and the branching step is now done via the pt_config%pt_dmc%wdmc storage. 299. [NN] dmc.f90: compute_multiplicities -- define local variables 298. [NN] dmc.f90: correct indentation of compute_multiplicities 297. [NN] dmc.f90: split out routine COMPUTE_MULTIPLICITIES from the main loop in dmc_main. 296. [NN] DMC_POPRENORM: Renormalize total weight before branching. This modification in the algorithm eliminates random noise in the branching factors, reduces population correlation and eliminates the need for resurrections. 295. [NN] qmpi_XXX: use new interfaces in dmc.f90 294. [NN] qmpi_XXX: simplified interfaces to mpi functions 293. [NN] Move routine run_mpc_generation from monte_carlo.f90 to generate_mpc.f90 292. [NN] gaussian: Fix g-orbs (no guarantee for completeness) 291. [NN] stowfn.f90: improve debug output 290. [NN] dmc.f90: Split function into gratio and glogratio 289. [NN] DMC: improved timing info for redist 288. [NN] blipp.f90: minor fixes to g vector pairing (functionality unchanged, easier debugging) 287. [NN] blipp.f90: Fixes for real blip transformation of redundancy-free PW data. 286. [NN] blip/rng.f90: Allow non-default seeding and resetting. 285. [NN] Use 'meld' tool to unify blipp.f90 blipk.f90 as far as possible (Functionality unchanged). 284. [NN] blip.f90: Split off blipp and blipk into separate files. 283. [NN] readconfig_dmc: simplify logic, behaviour unchanged. 282. [NN] jasbug: update wave function caches before writing config.out. Without this patch, valjas would not be updated in an electron-by-electron algorithm. This patch evaluates the total VALJAS once at the end of each block. Most components should already be available, so this evaluation is cheap. 281. [NN] Save and restore VALJAS to and from config.* 280. [NN] dmc_twist_av: Call clear_scratch on each configuration before recalculating the total energy. 279. [NN] dmc_twist_av: correctly handle LWDMC weights in recomputing the energy average within readconfigs_dmc. 278. [NN] lwdmc: avoid possible division by zero. 277. [NN] format_configs: adjust to recent change in format (EQVFAMILIES->DIFFTYPES). 276. [NN] Add dummy function mpi_gather_in_place_i1 to fix serial compilation. 275. [NN] bwfn: allow input from FIFO in case of unformatted bwfn.data.b* files. 274. [PLR] src/Makefile: auto-update to pick up a missing dependency 273. [PLR] opt_crystal: improvements This includes: - Added ability to provide a minimum energy via a new "-min " command-line option. This should help against problems with CRYSTAL when two exponents are nearly the same - in which case CRYSTAL happily performs its algebra on the resulting singular matrices and returns nonsensical energies without as much as a warning. - Respect original spaces and tabs (the latter are converted to 8 spaces) when writing optimized files. - Write out a .opt.resume file with asterisks and ampersands left in, for run continuation purposes. - Fixed a problem with ampersand-ed parameters being written incorrectly in some cases. - Allow 'opt_crystal' to use whatever 'runcrystal' script it finds in the PATH even if it doesn't seem to be in the regular CASINO location. 272. [PLR] opt_crystal: fixed bug introduced in patch 270. 271. [NDD] Update to manual: processor scaling of DMC, etc. 270. [PLR] opt_crystal: small fixes Fixed problem with format conversion when writing the CRYSTAL input file. Added print-out of parameters after each direction as per RJN's requests. Fixed a couple of typos. 269. [PLR] make.inc: support the three queues in QMC_ID=wei238 268. [NN] bwfdet: fix for pathscale strangeness In pathscale, .neqv. between LOGICAL values compares binary representations. Since .TRUE. may be represented by any nonzero value, it may happen that two .TRUE. values are viewed as inequivalent if one was read from an unformatted file using different representation. 267. [PLR] VMC: fix printout of acceptance ratio indices 266. Patch 2.4.42 (converting CRYSTAL input files in the examples directory to the modern CRYSTAL06 format) was only done for periodic systems. Updated input files also for the remaining 70+ atoms and molecules. 265. [NDD] Fixed minor unallocated variable bug in ppots.f90. 264. [PLR] vmc: enhancements This includes: - Ability to maximize the diffusion constant with respect to dtvmc. This can be enabled by setting opt_dtvmc=2. In a first stage, dtvmc is varied to get an acceptance ratio of 50%, so as to have decent statistics to perform the diffusion-constant maximization stage. This is only useful for vmcmethod=3, where it is the default. - Ability to automatically determine vmc_decorr_period (or corper) to maximize the run efficiency. This adds an extra set of moves after equilibration to compute an estimation of the correlation time of the local energies. Feature enabled by setting vmc_decorr_period=0 (or corper=0). - Refactored the code so that implementation of asymmetric (i.e. inhomogeneous transition probabilities is straightforward, and added a toy example. - Ability to switch off two-level sampling in VMC via an internal parameter MULTILEVEL_SAMPLING (not that anyone would want to do this for anything but debugging). Also included: - Moved parabolic_min to numerical.f90. - Added a 'reaverage' function to numerical.f90 (from ve_helper). - Changed the default dtvmc from 1.d0 to 0.01d0 for vmcmethod=3, and from 1.d0 to 0.1d0 for vmcmethod=1. - Added debugging flags DEBUG_OPT_DTVMC and DEBUG_OPT_CORPER to vmc.f90. - Changed the parameters used when opt_dtvmc=1 to improve convergence. - Added printout of efficiency in s^-1 au^-2 for each VMC block. - Modified the way in which streams of local energies on different processor are used to compute the correlation time - now we compute the average of the correlation times of the different streams instead of the correlati time of the average of the different streams. - Updated runqmc to allow opt_dtvmc=2 and vmc_decorr_period=0 (and corper=0) - Fixed the recent ionjump changes to: - Stop using random numbers when deactivated, restoring the previous random number sequence - Respect detailed balance by not making it twice as likely to attempt a "jump" from ion I to I+1 than to any other ion. - Fixed a problem with recent contact_density stuff with a reference to an undefined variable. - Fixed "diffusion types" to unify up- and down- spin electrons in the case where there are zero of one of them, to avoid reporting unused DTVMCs, etc - Flagged get_dbar as RECURSIVE, as it should be. 263. [PLR] arch: added QMC_ID=wei238 for QMC_ARCH=linuxpc-ifort-pbs-parallel (C.M.Wei) 262. [PLR] rna: check for ifconfig availability to avoid "command not found" messages 261. [PLR] gcc.inc: added -fcray-pointer flag to enable compilation of SHM feature. 260. [PLR] multirun: fixed typo preventing multiple runqmc options, added -f 259. [NDD] Minor change to gjastrow.f90 to avoid a gfortran compiler bug. 258. [NDD] Added internal flag to reblock.f90, specifying whether weights are to be used when averaging local energies, etc. 257. [RL] Made normalization of the momentum density depend on dimensionality when oldstyle_momdist is used. 256. [NDD] Updated reblock.f90 and plot_hist.f90 to allow reblocking and plotting of the electron-positron contact density data. 255. [NDD] Merged in Yukiumi Kita's code for evaluating the electron-positron contact density in positronic molecules (but have instead used the expression currently used in the relativistic Darwin e-e term). 254. [NDD] Fixed a bug affecting periodic Gaussian calculations and GPCC when only one out of a (+/-)k pair of orbitals is used, encountered by Bohshiang Jong. 253. [NDD] Allowed use of GPCC in conjunction with molorbmods. 252. [NDD] Tightened the criterion under which the same VMC time step is used for different spins. The same time step is used for spins i and j if and only if m_i=m_j & N_i=N_j & [ q_i=q_j v ( |q_i|=|q_j| & electron_gas ) ]. Note that it will not be possible to continue VMC runs from before this change. 251. [NDD] Fixed bug encountered by Yukiumi Kita, which affected the electron-nucleus potential energy in positronic molecule calculations. 250. [NN] utils/reblock: fix for ETOTALT. 249. [NDD] Fixed a bug affecting molorbmods calculations without the Gaussian cusp correction. 248. [NDD] Fixed unassigned variable bug introduced in patch 238. 247. [NN] Fix allocation problem in blip converter. 246. [NDD] Modified plot_hist.f90 to recognise manual interactions. 245. [NDD] Modified blip as suggested by Dario Alfe to enable the PW->blip conversion of pwfn.data files containing orbitals at Gamma where coefficients are only supplied at one out of each (+/-)G pair. 244. [NDD] Fixed minor bug which prevented calculations with nspin=1 from running. 243. [NDD] Updated reblock.f90 to check FISQ data in the .hist file if they are present or calculate FISQ from KEI and TI if they are not. 242. [NDD] Improved form of hard-sphere two-body Jastrow factor. Now have u(r)=log{tanh[(r/D-1)/(1-r/L)]}, where D is the hard-sphere diameter and L is a cutoff length, currently chosen to be the Wigner-Seitz radius of the simulation cell. 241. [NN] blip.f90: - If 'blip.in' is present, parameters are read from it (Fortran namelist format). In this case, the interactive input is skipped. - enable single-pass reading - refactoring and cleanup 240. [NN] READBWF: - allow alternative format for bwfn.data.b1, slightly better suited for binary data exchange with other programs: If occupancies are all-zero, the file is assumed to contain all orbitals in the same order as bwfn.data -- in this case, band_occupancy is calculated after reading the header and reading proceeds analogous to the formatted version. - refactoring and cleanup 239. [NN] Add mpi_gather_in_place_i1 routine 238. [NDD] Created a new manual interaction potential: hard_sphere. The condition that the wave function goes linearly to zero whenever two hard-sphere particles come into contact with each other is imposed by including a term log(r-D) in the two-body Jastrow factor u(r), where D is the hard-sphere diameter. The term is smoothly cut off at L_u. Moves that bring two hard-sphere particles within D of each other are rejected. 237. [NDD] Applying: Added a missing die=.true. to the trap for optimization calculations with NWRCON<1. I have also removed some unused variables, to cut down the number of warning messages one gets when one compiles CASINO. 236. Minor fix to global Makefile. 235. [NDD] Removed warning about bad reblock convergence, since this warning is almost always given in configuration-generation calculations. 234. [PLR] run_control: errstop_alloc renamed check_alloc, ialloc as argument, fix format. Also removed errstop_skip. 233. [PLR] gbasis: implemented user-provided reference frames in anisotropic cutoff The anisotropic cutoff function, 'anisotropic polynomial', now allows the user to provide reference frames other than XYZ. The real vector constants 'u1', 'u2' and 'u3' are used to specify this. The vectors must be non-zero and span a volume (or area in 2D, or line in 1D), but are otherwise not required to be either normalized or orthogonal. E.g., for a water molecule one could use the following 'Constants' block: Constants: C: 3 u1: [ 1, 0, 0 ] u2: [ 0, 1.4304287601313, -1.1071569626 ] u3: [ 0, -1.4304287601313, -1.1071569626 ] p_1: [ 0, 2, 0 ] p_2: [ 0, 0, 2 ] (provided the molecule is in the OYZ plane etc etc). Also fixed a problem with allocating real-valued internal e-n basis constants in gbasis.f90. 232. [PLR] gbasis: fixed upper loop limit. This would crash debugging runs, but should have had no other adverse effects. 231. [NN] Fixed stupid error in previous. 230. [NN] Turn config.f90 into default PRIVATE and fix exports. 229. [NN] Correct private and public symbols for atomic_forces.f90. 228. [NN] Add linuxpc-sun to target architectures. 227. [NN] Fix minor compiler errors in C++ code. 226. [NN] Fix some whitespace in C/C++ code. 225. [NN] Move call to init_shm from parallel.f90 up to main.f90 (cut dependendency of between parallel and shalloc). 224. [NN] errstop_alloc: explicit routine with simplified interface to stop for allocation errors. 223. [PLR] src/Makefile: added */*.clean and */*.vclean, and auto-updated. Use e.g. make debug.clean instead of the former 'make clean_debug'. New forms are available for more exotic feature/version compinations, e.g.: make Openmp.clean # like 'make Openmp/opt.clean' make Shm/debug.clean make Openmp/all.clean make all/opt.vclean make all.clean # like 'make NoFeatures/all.clean' make all/all.vclean # like prevous 'make vclean_all' 222. [PLR] runqmc: MPI_IN_PLACE fix for Darwin. IMPORTANT: YOU MUST NOW LOAD THE OPENMPI MODULE, `module load openmpi', PREFERRABLY IN YOUR ~/.bashrc, IN ORDER TO CORRECTLY COMPILE CASINO ON DARWIN, AND YOU MUST `make vclean' BEFORE DOING SO AFTER APPLYING THIS PATCH TEMPORARILY, YOU MUST ALSO DO `module load intel/fce/11.1.064 ; module unload intel/fce/11.0.081'. 221. [PLR] src: removed a couple of unused USEd variables and other small changes. 220. [PLR] vmc: report diffusion constant; report total acceptance ratio, not master's. Other minor changes to vmc module. 219. [PLR] comms: fixed problems with mpi_gather_in_place in TCM The version of MPICH installed in TCM happens not to have support for MPI_IN_PLACE. However, the lack of an 'IMPLICIT NONE' statement in comms_parallel.f90 allowed compiling the code (with an integer-typed MPI_IN_PLACE without any special meaning). This basically broke the ability to run optimizations on TCM PCs. The 'IMPLICIT NONE' statement has been added, so if this problem were to show up again elsewhere, it will fail to compile rather than break CASINO. The Makefile includes for TCM now explicitly force OpenMPI instead of MPICH, and so does runqmc, so optimization runs will no longer fail in TCM. Also modified autotest and runvp to set the `MPI' environment variable. IMPORTANT: AFTER THIS PATCH YOU WILL HAVE TO 'make vclean_all' AND RECOMPILE FOR BOTH QMC_ARCH=linuxpc-ifort-parallel AND QMC_ARCH=linuxpc-path-parallel IN TCM. Eventually, OpenMPI will become the default MPI library in TCM, so this is a temporary measure. Also removed a handful of unused mpi_gather_in_place wrappers, plus other minor changes. 218. [PLR] openmp: quiet compiler warnings on unused variables 217. [LA/PLR] Allow use of OpenMP as a new parallelization level. This is a partial implementation of OpenMP in CASINO. It has been successfully tested with GCC v4.4.1 and PGI v9.0.3; PathScale v3.2 cannot handle thread-private variables being defined in a module. The implementation uses the special syntax "!$ ..." in order to be as non-intrusive as possible. Except for the introduction of a few local variables the code is unchanged, and OpenMP commands are regarded as comments when the code is compiled without OpenMP support. OpenMP parallelization was introduced for loops scaling as the number of electrons or atoms in the following modules/subroutines: - bwfdet : blip3d and blip3dgamma (not localized nor sparse) - pjastrow : oneelec_jastrow for U, chi and F terms (3D only) - eval_geometry : ee_distances, ee_distances_all, ei_distances, ei_distances_all - slater : update_dbar (only update-by-column section) - interactions : ewald_3d - gpcc : cusp_wfdet_real and cusp_wfdet_cmplx Other noteworthy changes: - Added a new module openmp_base.f90 which initializes OpenMP. - Modified update_makefile.sh to understand "!$ USE ...", and added the ability to specify modules for which no source file should be searched. - Added section to the manual describing the philosophy of mixed-mode (MPI + OpenMP) computation, giving some usage hints and an estimation of current performance. Some adjustements by PLR, including: - Further testing with Intel's ifort v11.1. - Added "FFLAGS_OPENMP_yes" and "LDFLAGS_OPENMP_yes" Makefile variables to contain the compiler flags needed for OpenMP support. - Added a new source compilation facility to enable different features in separate binaries. These are compiled with make (e.g., 'make Openmp') or make / (e.g., 'make Shm/debug') If no feature is selected, a feature-less binary is compiled (this default may change when we decide OpenMP support is mature). The string above can also be a concatenation of individual feature names in alphabetical order, all of which are built into the resulting binary. So far 'Openmp' and 'Shm' are the only available compile-time features, and they are (supposedly) not compatible with each other. When running CASINO, runqmc will select any binary which has at least the required features compiled in. I.e., a non-OpenMP run will run correctly off an OpenMP-enabled binary if the non-OpenMP binary is not available. - Removed QMC_ARCH cray-xt4 and moved back to linuxpc-pgf|path|gcc-pbs-parallel with QMC_ID=hector. HECToR users, please source the provided CASINO/doc/bashrc.hector from your ~/.bashrc, and use the 'qmcarch' function to switch compilers and environment at the same time. - Added compiler flags to build OpenMP version for all ifort and GCC QMC_ARCHs. Notice the PathScale is also OpenMP-capable in theory, but chokes on the code in practice. - Made runqmc aware of OpenMP threads, selectable via a new '-nthreads ' option. So far only Darwin and the TCM cluster support this; see their sections in runqmc for guidance when adding OpenMP support for a new machine. 216. [PLR] arch: added linuxpc-ifort-sge-parallel for new TCM cluster New cluster requires QMC_ARCH=linuxpc-ifort-sge-parallel, QMC_ID=tcm. Run with "runqmc" (all 64 nodes), or "runqmc nnodes ", where is a multiple of 8. 215. [PLR] vevp: do not print sgr0 code when -nc is given. 214. [NN] Add missing dummy for MPI_IPROBE to comms_serial.f90 (fix for recent QMC_BARRIER patch). 213. [NN] Simple implementation of occasional jumps of single electrons between ions in VMC 212. [NN] Safety check for missing PP files. HAVE_AE is now determined based on wave function input file. If PP files are expected but not found, an error is issued. HAVE_AE can be specified explicitely as ESDF key in special cases (like AE bwfn files). 211. [NN] Correctly use mpi_gather(MPI_IN_PLACE,...) 210. [NN] Minor fix in ESDFkeys 209. [NN] Increase buffer size in write_list_int 208. [NN] MPI_BARRIER: Additional checks to make sure that MPI message queue is really empty. 207. [NN] RUNQMC: For non-batch systems, do not run casino through symbolic link (allow ifort to print symbolic backtrace) 206. [NN] Enable linux-ifort-parallel for use with mpich2 205. [NN] ifort: Add debugging info to optimized compile (symbolic traceback after crash) 204. [NN] src formatting: correct pairing of & in linebreaks 203. [NN] Source formatting (remove trailing spaces, expand tabs) 202. Fixed broken git repository. 201. [PLR] runvp: fixed bugs, removed need for shared $HOME, improvements. This commit includes: - Fixed two bugs introduced with one of my recent patches which prevented runvp from running. - Added ability to run on computers not sharing their home directories. - Rearranged 'runvp' files, renamed 'io' to 'vpinfo', ... - Made runvp correctly clean up all of its processes after CASINO finishes. - Modified 'killvp' to remove temporary directories and vpinfo directories i addition to killing processes. 'vpinfo' can be kept optionally with '-k', or all files can be kept with '-K'. Now using 'rna -r' instead of ssh to speed things up. - Added a 'tailvp' utility to 'tail -f out' on the current virtual node (provided it has access to the directory where 'runvp' was run). - Added 'syncvp', a tool to move output files (including out, .hist files, parameter files, expval.data, etc) over to the master node under vpinfo/files. A '-k' option is available to keep the remote files instead of deleting them. - Updated 'vevp' to work with current version of runvp. - Pass '-qq -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'. This can be regarded as lax security by some, but I've still to find a situation when the known_hosts file detects a real-world threat inside a LAN, or elsewhere for that matter, and it is very annoying when computers get reinstalled or replaced. Applied this to both rna and runvp. - 'rna' now sets a number of environment variables on the remote side when i '--run' mode, to simplify writing some commands. - Removed '--whereami' option to 'rna'. Added '.' as a computer selector to indicate the current computer. The functionality of 'rna --whereami' can b recovered using 'rna --info=name .'. - Fixed problem with '--info=port' option not working in rna. - Fixed a typo in VP varmin. - Fixed a problem in 'runvp' with gfortran and g95 buffering output. 200. [PLR] gbasis.f90: fixed access to unallocated variable This affected calculations without e-e basis or without e-n basis function. Bug spotted by NN. 199. [NDD] Fixed bug affecting backflow calculations for molecules using a Gaussian basis and GPCC. 198. [NDD] Allowed calculations to be performed for positronic molecules and crystals, where the positron orbitals are represented in a Gaussian basis. Generalized spin-dependence handling in Gaussian routines. Changed a couple of other routines (points & ionic_potential) to allow for particles in real systems with charge other than -1. The number of positrons (spin 3 particles) in a real system is determined by the NHU keyword, which is analogous to NEU. However, the mass and charge of the positron must be specified in a PARTICLES block. 197. Updated main README file as in patch 196. 196. Updated recommended citation in manual from the usual 'CASINO user manual' to R. J. Needs, M. D. Towler, N. D. Drummond and P. Lopez Rios, J. Phys.: Condensed Matter 22, 023201 (2010). 195. [PLR] run_control.f90: added a time_report routine. Added a couple of features to loop_time_estimate and added a time_report routine for non-loop portions of code. Added walltime reports to VP communication in emin.f90 and varmin.f90. 194. [PLR] opt_crystal: improve script correctness 193. [PLR] manual/src/Makefile: remove redirection since 'dash' chokes on it. On Ubuntu Linux, /bin/sh is a symlink to /bin/dash, the Debian Almquist Shell, which I've just found out exists even though it's been there for years. dash does not support the traditional command >& /dev/null syntax, but the more proper command > /dev/null 2>&1 Bash also understands the latter, but I'm unsure as to whether there are any shells out there pretending to be /bin/sh which only understand the more traditional variant, so I've removed the redirection ('rm -rf' should only print stuff in very rare occasions anyway). Please take the above into account when modifying Makefiles. 192. [PLR] rna: several improvements to wherejob, changed its name to 'rna' This commit involves: - Renamed wherejob to 'rna', the Rapid Network Assessment tool. Pushed version to v1.00. - Moved configuration file from ~/.casinorc to ~/.rnarc. ~/.casinorc can be safely deleted. - Moved from using 'ps' to using 'top' to scan for running jobs, in order to improve accuracy when estimating which jobs are really running. - Moved from using 'ps' to inspecting /proc/meminfo to evaluate available memory (taking RAM cache into account), and print the available memory for idle PCs instead of the total. - Added ability to take multithreaded jobs correctly into account. - Take `uname -n` into consideration when limiting number of forks. - Added a fairly comprehensive --help option. - Modified "--info" option to be able to return any number of pieces of information on any number of computers in a single call, and added more pieces of information that can be returned. - Added a "--cruft" option to inspect computers for stray processes, tempora files and stale IPC semaphores, automatically deleting the latter when sensible. - Added a "--run" option to run a given command on the selected computers and print the output. - Added command-line options "--[min|max]-[cpu|clock|mem|cores]" for compute selection, and added ability to select individual computers for non-info operation modes. - Added a "--setup" command-line option to allow users to configure their own networks (without having to edit an undocumented config file). - Added a "--passwordless" command-line option to allow users to configure passwordless ssh logins in their networks. - Added a "--where-am-i" command-line option to return the host name of the current computer as listed in the pre-built list. - Removed a number of useless options and renamed others. - Added support for using different login names and ssh ports on different computers, and for having computers not sharing their home directories (while keeping the computer list automatically in sync). - Use proper Unix-style short options and GNU-style long options. - Use netcat even if it's not GNU netcat; it's still better than ping. - Removed rsh support. - rna is now GNU/Linux-only (there are no alphas or suns in TCM to test). - Removed alphas from default network. - Aesthetic improvements. - Added Nehalem-type processor info (not benchmarked yet). - Updated runvp to work with current version of rna, removing rsh support as well and speeding up the set-up process. - Removed out-of-date and not-currently-working 'job' utility. 191. [NN] Add 'utils' and 'build' targets to utils/Makefile 190. [NN] Simplify logic for interaction (MPC vs. Ewald) 189. [NN] A bit of cleanup in gen_mpc 188. [NN] Print homo and lumo energy for each k-point in bwfn 187. [NN] Extend "casinohelp list" command 186. [NN] One more fix for popstat output in periodic systems. 185. [NN] Fix the population for the first half of the equilibration time to avoid explosions if vmc energy is far off. New keyword: DMC_EQUIL_FIXPOP set to 0.0 by default i.e. the whole thing is turned off. 184. [NN] Unify logic for various versions of population management. Various versions of population management (LWDMC,POPRENORM,NC_DMC) are now all handled by the same logic: first store real multiplicities of all configurations into an array dmult_array. In a second step, then compute the integer multiplicites mult_array following the algorithm prescribed by the individual population management scheme. 183. [NN] For IBRAN = F the integer multiplicity mult is always 1, so mult_array does not need to be handled. 182. [NN] Simplify logic in DMC loop (functionality unchanged). 181. Fixed typo that was causing the code to refuse to compile. 180. [PLR] awfdet.f90: minor inconsequential change. 179. [PLR] gjastrow.f90: fixed bug in 1_x routine. Fixed indexing bug which broke e-e-N-N[-N[...]] terms. Routine now matches results from generic x_x routine, so it should now be correct. Forever. 178. [PLR] gjastrow.f90: separate internal flags for use of generic routines. Flags 1_x_FOR_1_2, x_x_FOR_1_2 and x_x_FOR_1_x are now separate. 177. [PLR] gbasis.f90: update determined parameters before writing them out. A previous commit made determined parameters remain present in the CASL file but it missed the important part of updating their values during optimizatio Fixed. Any .casl files generated by wave function optimization in the meantime are (technically) wrong and, if re-used, will make CASINO complain and stop at the start of the run. However it is possible to recover a working .casl file by simply removing all parameters flagged as 'determined'. Apologies for the inconvenience. 176. [PLR] runvp: fixed problem in remote script in non-vp mode. 175. [PLR] emin.f90: reinstated first basis shift when optimizing variance. When the need for basis shifts was assessed, there was a bug in the basis shifting routine. A new assessment suggests it may be better to have the first basis shift on for variance optimization. 174. Tuned the compiler flags in cray-xt4.inc on Hector for pathscale, pgf95, and gnu. Best compiler appears to be pathscale (though more testing is required). DA or anyone else who has any serious amount of allocated time on this machine please check. 173. Changed the way support for the Hector machine is handled. Previously LA had created a 'hector.inc' file not in line with CASINO conventions. There were also some conflicting attempts to make it work through QMC_ARCH=linuxpc-pgf-pbs-parallel/linuxpc-path-pbs-parallel and linuxpc-gcc-pbs-parallel. These have all been deleted. Created a new QMC_ARCH='cray-xt4' which may be used with QMC_ID='hector' (though the QMC_ID is not necessary for the moment); corresponding updates to README_ARCH and manual. Hector has a variety of programming environments (different compilers etc). The Makefile and runqmc script should now pick this up automatically, and automatically select compiler and binary name. Only non-automatic thing is that you have to specify the account name e.g. 'runqmc -nnodes 4 -account n03-cam' since I don't know how to find out my account from the command line. Use 'module load', 'module unload', 'module avail' and 'module list' to examine what environment you have set up. 172. Tidied up runqmc for easier reading (given that users are supposed to edit it..) and improved the documentation a little. 171. Fixed phase issue with periodic Gaussian cusp corrections which could occur when mixture of 'real k points' and 'complex k points' (i.e. BZ edge or not) were present. Addresses problem raised by BJ. 170. [PLR] varmin.f90: fixed repeated rescaling of vm_E_guess. If opt_cycles>1, vm_E_guess would be rescaled by unit_scale on each call to varmin, breaking the application of vm_E_guess for any unit_scale/=1.d0. Fixed. 169. [PLR] monte_carlo.f90: fixed problem with previous VP patch 168 and USE statements. 168. [PLR] runvp: fixed virtual parallel facility. This entails: - Made VP calculations work alongside MPI. - Made VP work for emin. - Fixed problems with complex varmin/madmin VP runs. - Added killvp as a separate utility (formerly it was generated by runvp and it deleted itself). - Fixed vevp to work with current version of ve. - Rearranged, improved and slightly simplified runvp. Removed CPU-usage logging, which could easily be left running after killing the calculation. Added a '-logcomm' command-line option to log all VP communications to files under ./io. - runvp now works with new-style 'VMC_NSTEP' et al, and not with old-style 'NMOVE' et al. Also: - Switched to using MPI_ALLREDUCE instead of MPI_REDUCE + MPI_BCAST in emin_matrix_gen. It would be ideal to use MPI_IN_PLACE for these MPI_ALLREDUCEs to avoid the subsequent DCOPY, but I believe it's forbidden in this context (i.e., I think MPI_COMM_WORLD is an intercommunicator, not an intracommunicator [?]). 167. [NDD] Set ebest and eref to the average of the local energies of the configuration population at the start of each post-twist-change equilibration. This helps post-twist-change re-equilibration at high densities. 166. [NDD] Changed format for display of parameter values in out. 165. [NDD] Increased precision of reported k-vector offsets and altered VMC to write out a complete list of the k-vector offsets on each processor. 164. [PLR] gbasis.f90: fixed bug in shift constants for 'fake' Gaussian elimination. Shift constants must depend on the total channel index, not just on the total set index. Fixed. Also changed the shift-constant generation algorithm. The fact that this bug caused a problem in practice proves that the 'fake' stage is necessary. And that the code was wrong, obviously. Improved the warning issued when the coefficient corresponding to a determined parameter in the constraint matrix becomes zero. Made Gaussian elimination more numerically robust by normalizing the equations individually at the start and flushing relatively small elements to zero at the end. Fixed a couple of other minor problems with Gaussian elimination. 163. [PLR] gjastrow.f90: promoted mismatching input parameters from warning to error. Also added more verbose output in these cases, and added a trap for present & determined parameters. 162. Patch 2.5.25 "Added error trap for too few orbitals" was stopping periodic Gaussian calculations that needn't be stopped ('split-pair' cases). Fixed. 161. Added a note to utils/pseudo_converters/pwscf about Simon Binnie's pseudopotential converter utility which is included with the PWSCF distribution (thanks to DA for this information). 160. Added JRT's notes on pseudopotential ghost states to utils/pseudo_converters/NOTES. This stuff should be put in the manual someday. 159. Rearranged the pseudopotential converter directories. 158. Added JRT's casino2pwscf utility for converting CASINO pseudopotentials into a format suitable for the PWSCF conversion. CASINO-formatted the program, and replaced proprietary numerical routines with suitable alternatives. 157. [PLR] percent_calculator: added utility This is a simple utility which can calculate what percentage a value represents of the difference between two reference values. It is useful for computing e.g. the percentage of correlation energy achieved by a QMC calculation, etc. The utility deals with errorbars correctly. It understands a variety of formats for its input, e.g. 1.2345 +/- 0.0006, 1.2345(6), etc. Also, it won't choke on additional '$' signs or the use of '&' instead of '.' (useful for copy/pasting from LaTeX). See README file for more info. 156. Reverted one of the changes in patch 152 which, though strictly speaking correct, could introduce problems in future modifications. 155. [PLR] gbasis.f90: enabled writing determined parameters. Determined parameters will now be written out to the .casl file, along with optimizable and fixed parameters. The advantage of this (together with the recent Gaussian-elimination-pivot patch) is that one can now increase the expansion order of a term without reoptimizing the whole term from scratch. 154. [PLR] gbasis.f90: stop ignoring Jastrow "nonemptiness" when opt flag is omitted. 153. [PLR] gjastrow.f90: fix Gaussian-elimination pivots changing between runs. Some terms (other than e-e and e-N) can have different free parameters when their basis/cutoff parameters change, which CASINO couldn't handle. CASINO should now be able to respect the previous 'determined' status of the linear parameters. 152. Various minor corrections to multiple routines. 151. Problem with polymers in make_G_stars in gbasis.f90 fixed. 150. The term_add_prefactor in gjastrow.f90 was incorrectly declared as an integer - leading to loss of precision. This would affect computation of the total Jastrow value from one-electron bits, which no-one has tested yet. 149. Routine 'eval_eqprod_indep_same' in gbasis.f90 did not work. Fixed. 148. [PLR] utils/Makefile: enabled compilation of all utilities on all ARCHs. This makes egaussian, helpbilly, helpbilly2, billy, multirun, opt_crystal, runcrystal, gaussiantoqmc, localizer, and jeep_to_pwfn available on all architectures. Only ppconvert's compilation is conditional (subject to having a C++ compiler available). Note: in order for the change to become effective in an existing installation, one has to 'make vclean' under CASINO/utils for each QMC_ARCH, then compile. 147. [PLR] gjastrow.f90: fixed bug in 1_x routine (e-e-N-N and terms with more N's). 146. [PLR] gjastrow.f90: added missing divisions. This bug affected x_x and 1_x routines (i.e., e-e-N-N and larger terms). 145. [PLR] gbasis.f90: fixed problem with iterate_nuclei_indices. The problem affected 0_1 gjastrow terms (e-N), causing debugging executables to crash, but was harmless otherwise. 144. [NN] Fix popstat output for supercell in periodic systems. 143. [NN] Bugfix: for ewald_mpc and mpc_ewald with writeout_dmc_hist:T both energies were mixed up in the history since rewrite of on-the-fly reblocking (i.e. patch 3.0.86). Fixed it. 142. [PLR] energy_utils.f90 (and above): added hooks for FPE handling In some cases, an error will be raised when an exception is encountered. Please report any such cases if they occur in practice so that they can be worked around. Common cases should be well catered for, and one should see e.g. emin being more robust against things like backflow pushing electrons out of orbital range for an intermediate parameter set, which can break a calculation. This patch also adds detection of diverging potential energies. Also added an MPI_REDUCE_L routine to comms_serial.f90. 141. [PLR] emin.f90: stabilized calculation of differences, removed config swapping When taking numerical derivatives, we now flush to zero any difference 'a-b' such that abs(a-b) < 1.d2 * epsilon(1.d0) * max( abs(a), abs(b) ) (i.e., a difference which amounts to the last two decimal places of the largest of the absolute values of a and b). Leaving these differences unflushed was causing problems with emin under some circumstances, most commonly in the form of redundant parameters having non-zero derivatives, which often enough disturbed the (very sensitive) numerics of the matrix algebra stage. Also, removed the ability to swap the first configuration in the set with that corresponding to the median energy of the sample, since it was messing up the configuration association of some buffers in other modules. 140. [PLR] Added opt_crystal script, intended as replacement for 'billy'. See utils/opt_crystal/README for info. 139. [PLR] gjastrow.f90: fixed bug which made rank-1 buffers add their contribution twice. Bug introduced in my previous patch. 138. [NN] DMC update ESDF keys in timeout message to new scheme. 137. [NN] Fix some issues of mixing up errstop and errstop_master in gjastrow code. 136. [NN] New "list" option for casinohelp: print machine-parseable list of options including type information. 135. [NN] Add stderrs to popstats (where easily possible). 134. [PLR] manual/src/Makefile: clean before compiling to avoid problems 133. [PLR] scratch.f90: overhaul; slater.f90: overhaul This commit includes the following changes to scratch spaces: - Properly integrated two-electron moves and one-ion moves (the latter only as far as the underlying code allows; grep for 'rion_HACK' to see what this entails) into scratch spaces. - Reduced the number of routines needed to handle scratch spaces by merging wfn_ratio/accept/reject routines. - Removed 'reject' routines. Added (automatically called) 'reset' routines which save any useful data between 'define' calls - reusable information is flagged using the new 'ready_from' variables. - Removed 'buffer_active' variable and 'check' routines (which were just for detecting problems). This commit includes the following changes to Slater determinant handling: - Added ability to deal with zero determinants reliably in slater.f90. Missing features (will be done later): - Requires changes at higher levels in the code for this to be fully effective against floating-point exceptions (FPEs). - Ability to compute contributions to gradient and Laplacian of the wave function using the adjugate Slater matrix instead of the inverse (needed when hitting a "soft" zero of a determinant in a multideterminant wave function). - Properly integrated sparsity indices into scratch spaces. - Matrix inversions now done in a single LAPACK call where possible. - Determinants now calculated in logarithmic form even for small matrices. - Fixed naming of wfn_loggrad_slater and wfn_loglap_slater for consistency with the rest of the code. - Added timers to (almost) all routines in the slater module. This commit inludes the following changes to the gjastrow facility: - Added missing scratch-space shortcuts for gjastrow and gbasis - Refactored some routines, and removed need for grad_gbasis and lap_gbasis on scratch spaces that do not require derivatives, thus saving memory. This commit includes the following changes to VMC and DMC: - Added internal DEBUG_SAMPLING and DEBUG_ENERGY flags in VMC, and similar DEBUG_DRIFT_DIFFUSION and DEBUG_BRANCHING in DMC. Setting these to .true. makes CASINO print information on attempted moves, wave function ratios, energies, branching factors, etc. Intended for debugging (obviously!); especially useful in side-by-side comparisons of the output of a run before and after a problematic change. This commit includes the following miscellaneous changes: - Unified LU decomposition routines in numerical.f90. - Simplified e[ei]_distances* in eval_geometry.f90. - Commented out dcopy_ee_partial from numerical.f90 since it's now unused. - Rewritten ddot_s to allow arbitrary strides, and added the ability to use ddot_s for row updates (i.e., for pairing wave functions). IMPORTANT NOTE: we are missing an excellent oportunity for speeding things up if we don't implement a sparse mode (gathering of orb_rmap [a.k.a. hit_index]) in Gaussian and pairing orbitals. We are also missing sparsity in the evaluation of drift vectors and kinetic energies, and for backflow (we can do backflow sparsity, but ignore orbital sparsity when we use backflow). - Rerouted the '_geom' DMC-pointer routines via wfn_utils to centralize the configuration set-up tasks. 132. [PLR] Revert "slater.f90: remove errstops from computation code, set results to huge instead." This reverts commit df188915b485b346ba67ccf2e2041c315e0dbf5a (patch 3.0.73) 131. Fixed potential uninitialized variable in gaussians.f90. 130. Test update. 129. Very minor tidying of some of the Gaussian routines.. 128. Added 3D all-electron diamond crystal with Gaussian basis set to autotest set. Minor modification to manual. 127. Added 2D helium slab with Gaussian basis to autotest set. 126. [MDT/NDD] Fixed error in gpcc setup where the wrong number of orbitals was used to index an array, leading to possible uninitialized variables. 125. Minor changes to some example input files. 124. Added 5x1x1 hydrogen polymer example with various cusp algorithms to TEST set (since the kinds of problem fixed in patches 112/113 were not picked up by autotest). 123. Made 'modify_inputs' utility aware of new RMC reptation Monte Carlo section. Explicitly added this section to all example inputs. (Developers note: so that they can be manipulated by scripts all example input files added to the distribution need to have the section heads explicitly declared even though their keyword set may be empty). 122. Stripped down the short blurb keyword descriptions in esdf_key.f90 - these are supposed to fit into the space after the #*! in input files but some recently added ones did not. 121. Updated examples/generic/input_file_full/input - this is supposed to be an example input file containing all possible keywords but it had been neglected for a while. 120. Deleted redundant NBLOCK_RMC_STATS keyword (copy of RMC_STATS_NBLOCK?). 119. Reblocking for popstats was broken. Fixed. 118. More periodic Gaussian tidying. 117. [PLR] exmol.f90: minor fix. 116. [PLR] reblock.f90: fixed unassigned variables, uninitialized pointers 115. Minor fiddling with Gaussian 's_plot' facility. 114. Fixed minor error in plotter.f90. While preparing the vector of data to be plotted, the routine assumes that (0,0,0) was an invalid point (since some quantities can diverge there) and this point is simply skipped. Making exceptions to this rule for quantities that do not diverge (orbitals) was not implemented correctly. 113. Fixed serious error in gaussians.f90. Affected periodic Gaussian calculations using the standard cusp correction (with more than one primitive cell per simulation cell). Bug was simply due to a line 'ndim=periodicity' being moved to a point in the readgw routine before 'periodicity' was read from the gwfn.data file. As far as I can tell, the error was introduced in patch 2.2.172 ('Fixed problem with readgw routine for gaussian polymers in parallel.') 112. Fixed serious error in gauss_per.f90. Meant that spin-polarized periodic Gaussian calculations could never work - with pseudopotentials or with all-electron GPCC or with all-electron no cusp correction. Problem not present for all-electron with standard Gaussian cusp correction. As far as I can tell, bug was introduced either in patch 2.4.57a or 2.4.68 (introduction of GPCC for Gaussian orbitals and/or subsequent modifications so that GPCC is only evaluated for atoms in primitive cell). The orbital vector rpsi requires multipying by a normalization factor rnorm. This used to be done directly in the gauss_per.f90 routine, but a modification was done to allow the multiplication to be done by a BLAS routine. Unfortunately, the original multiplication by rnorm was not deleted for spin 2 orbitals, with the result that the multiplication was done twice. Fixes error in all-electron GPCC 1D hydrogen chain reported by BJ (where DMC gave higher energy than VMC). 111. Fixed error in plotter.f90: if plots of multiple orbitals were requested in the QMC_PLOT block then CASINO would only plot the first in the list. 110. [NDD] Fixed another recently introduced bug in DMC twist averaging. 109. [BJ] expval.f90: added Berry phase polarization in the localization tensor block 108. [NDD] Fixed a recently introduced (probably patch 58) bug in DMC twist averaging. IACCUM was not being set to F before the post-twist-change equilibration. 107. [NDD] Update to clearup. 106. Very minor update to runcrystal script. 105. Fixed error in plot_hist utility, which wasn't working on account of it not knowing about the FISQ estimator. 104. [NN] Minor fix for output of DMC reblock data 103. [NN] Tune varmin opt_info levels. Don't print parameter values at opt_info=2 102. [NN] Remove duplication of public variable names in history.f90 101. [PLR] format_utils.f90: worked around PGI 8.0.6 compiler bug. For future reference, PGI is failing to compile the following: TYPE(type) FUNCTION function USE module, ONLY : type [...] END FUNCTION function when 'type' is not globally accessible in the container of 'function'. However the following works: FUNCTION function RESULT(f) USE module, ONLY : type TYPE(type) f [...] END FUNCTION function Problem spotted on Hector and reported by LA. 100. [PLR] pjastrow.f90: fixed string truncation in convert_to_gjastrow. The nucleus rules were not being written properly because an 80-character string was being used to hold them. This patch splits the N-sided rule into N-1 2-sided rules, each placed on a single line. Reported by NN. 99. [PLR] gbasis.f90: no error on overriding default limit, set to default instead. When a parameter has limits defined by default, the user is not allowed to extend them. However the conversion between floating-point numbers and strings may cause the check to fail at the last digit. Fixed by simply restoring the default parameter value instead of errstopping. Reported by NN. 98. [NN] Cleanup stowfn code - reduce debug output. 97. [NN] Add reblock dump to VMC runs if not converged. 96. [NN] update_makefile after change to rmc.f90. 95. [NN] Change interface to reblock_dump. 94. [NN] Fixed typo in reblock. 93. [NN] Made reblock evaluation safe against numerical corner cases. 92. [NN] Add popstats to all DMC autotests. 91. [NN] Fix output of Ewald energy in DMC along with two more minor bugs. 90. [NN] popstats: Collect and evaluate data about statistical efficiency and population correlation (see arXiv:0906.0501). 89. [NDD] Some tidying of rmc.f90. 88. Fixed some type mismatches in gaussians.f90 and eval_geometry.f90. 87. [NDD] Fixed format bug in reblock.f90 (the source file - can we not rename it so as to avoid confusion with the utility of the same name?) and made a couple of minor changes to the manual. 86. [NN] Reworked the on-the-fly reblocking, based on initial work by PLR. Important changes for the end user: * a new file "dmc.status" is written and overwritten at the end of each block. At any time during the run, this file contains the complete statistical evaluation as it would be written if the run was finished here. The file "output" only contains this data once at the end, if the run is finished properly. The file is intended to be both human-readable and easy to parse. * Full on-the-fly reblocking data is given in the same file (similar to the data that used to be in reblock.plot) * A new option 'writeout_dmc_hist' can now be used to switch off writing of dmc.hist. * The algorithm for determining the best block size is now based on Ulli Wolff, Comput. Phys. Commun. 156, 143-153 (2004), giving a robust algorithm that offers an optimal tradeoff between statistical and systematic error in the error bar. Initial tests of this algorithm have shown it to work excellently. Further experience needs to be gathered on different kinds of data. 85. [PLR] make.inc: fixed g95 flags (seems to have trouble with -ffast-math). 84. [PLR] gbasis.f90: fixed crash on parsing name of non-existing channel. 83. [PLR] eval_geometry.f90: moved POINTS from vmc.f90. 82. [PLR] emin.f90: changed complex target function to Re[E]+3*Re[dE]. 81. [NDD] Fixed error in the manual. 80. [NDD] Enabled the use of external magnetic fields in CASINO. The magnetic vector potential is specified in the expot.data file, but the magnetic fields are handled by a new module called magnetic.f90, and they contribute to the kinetic energy rather than the potential energy. The use of an external magnetic field is controlled by the MAGNETIC_FIELD input keyword. I have added a section to the manual discussing the use of magnetic fields and the fixed-phase approximation. Note that magnetic fields should only be used with appropriate trial wave functions. 79. [PLR] emin.f90: ability to optimize complex wave functions, other changes. The target function in the complex case is Re[E] + |Im[E]| + 3*|dE|. Entirely made up, but looks sensible to me. In emin-driven varmin the target function is var[Re[E_L]] + var[Im[E_L]]. These functions may need adjustment depending on the outcome of production calculations. 78. [PLR] emin.f90: fixed units in reported variance and target function. 77. [PLR] emin.f90: reverted to using weights that add up to the number of configs. 76. [PLR] emin.f90: modified line search. - Reversed the range of the 'x' parameter in the line search. x=0 now corresponds more intuitively to the initial wave function. - Reduced number of points in line search from 17 to 11, and allowed emin to skip the evaluation for x=0. - Added a limit on the number of consecutive 'bad' points in the line search after which no more points are attempted. Internal value for this limit is currently 2. 75. [PLR] emin.f90: reduced threshold for detecting near-zero parameters. 74. [PLR] emin.f90: rewritten semiorthogonalization routine, thus fixing a bug. 73. [PLR] slater.f90: remove errstops from computation code, set results to huge instead. 72. [PLR] awfdet.f90: fix "Atomic configuration" format to fit up to 9999 determinants. 71. Fixed minor typo in runqmc. 70. Added QMC_ID = synl for Fangfang Chen ('DELL M605, with 16 blades of two quad-core.') Associated minor mods to runqmc. 69. [PLR] rmc.f90: fix compilation problems. 68. [PLR] Configs.f90: fix for extra item labels not being passed to slaves correctly. Fixed a bug by which "extra" item labels were not being passed to slaves if there were no configs present in the config.in file, in turn producing who knows how many mismatched MPI calls. Reported by RML. 67. [PLR] Runqmc: fix for slave nodes' output not being appended to "out" after run. 66. [PLR] Runqmc: cpufreq hack bypassed if ignore_nice_load is zero. 65. [JJ] Implemented reptation Monte Carlo [EXPERIMENTAL]. Cleaning up, bugfixing and porting to current version by PLR. Implemented basic reptation Monte Carlo (RMC). There are major gaps in the implementation: - It is not parallelized. - It doesn't write or read config files. - It doesn't write hist files nor process stats. - Output not properly formatted. - ... The idea is to bring this module to a decent working state during the 3.0 release cycle. New keywords: - rmc_rep_length - rmc_equil_nstep - rmc_equil_nblock - rmc_stats_nstep - rmc_stats_nblock - dtrmc - rmc_bounce - rmc_move_length - rmc_meas_pos - rmc_decorr_period - rmc_ave_period New runtypes: - rmc - rmc_rmc 64. [PLR] Wherejob: cpufreq awareness and correct CPU usage estimation on SMP machines. 63. [PLR] Fixed three bugs which prevented DMC from getting along well with the gjastrow. 62. [PLR] Format fix for exmol.f90 setup report. 61. [NN] Rewrote the rather inefficient implementation of esdf_lblchk. 60. [NN] Fix string handling in various places to avoid gfortran warnings. 59. [NN] dmc_main: a bit of further cleanup. 58. [NN] dmc_main: reduce number of dummy parameters, turning constant esdf values into module variables. 57. [NN] dmc_main: renamed init_eref->dmc_init_eref, nucleus_gf_mods intent(inout)->intent(in) 56. [NN] Removed trailing spaces. 55. [PS] Implemented [1/(r+a)]^k basis in gbasis.f90 The basis is called "1/(r+a) power". This is another variation on the r/(r+a) basis in an attempt to overcome its problems, while having one less parameter per channel than the "r/(r^b+a) power" basis. Results do not show an improvement over the latter for first-row atoms, but may be useful for other systems. 54. [PLR] Implemented GJASTROW. This is a large commit. Includes: - Implementation of a general Jastrow factor, GJASTROW, formed by terms of arbitrary rank, spin-dependencies and functional bases. The GJASTROW is activated by setting the 'use_gjastrow' flag in the input file to 'T'. NB, 'use_jastrow', 'opt_jastrow' are still meaningful; they refer to whichever Jastrow factor is selected. Missing features so far: - A mechanism for making parameters in different channels equal - Ability to impose cusp conditions on basis function parameters - Analytical derivatives w.r.t. parameters - varmin_linjas support - Finite-size corrections to the kinetic energy - External potential support - Implementation of a basis/cutoff handling module for the GJASTROW and the future GBACKFLOW facilities, called GBASIS. So far it contains five functional bases, - "natural powers": r^(k-1) - "cosine": sum_{G in k-th star} cos (G.r) - "cosine with k-cutoff": sum_s G_s^(a*k+b) sum_{G in s-th star} cos (G.r) - "r/(r+a) power": [r/(r+a)]^(k-1) - "r/(r^b+a) power": [r/(r^b+a)]^(k-1) and four cutoff functions, - "polynomial": (1-r/L)^C - "alt polynomial": (r-L)^C - "Gaussian": exp[-(r/L)^2] x Theta(L_hard - r/L) - "anisotropic polynomial": (1-r/L)^C Sum_i x^{px_i} y^{py_i} z^{pz_i} - Design and implementation of the first version of the CASINO Serialization Language (CASL), a serialization language with arbitrary-depth nesting and other useful features used by GJASTROW and GBASIS for the moment. It is inspired on the YAML serialization language, and can also be regarded as an extension of the ESDF which we use for the input file. Parameters for the GJASTROW are read from a file called 'parameters.casl', and optimized parameters are written to 'parameters..casl'. - Addition of ISO/IEC 1539-2:2000 extension in module src/iso_varying_string.f90, which is a bugfixed version of a public-domain module written for the WG5 by J.L. Schonfelder in 1998. This module implements a variable-length string data type, and is used by the CASL module, as well as by the GBASIS and GJASTROW modules. - Implementation of a standard-Jastrow-to-GJASTROW converter, activated by setting the 'gen_gjastrow' flag in the input file to 'T', with 'use_gjastrow' set to 'F'. 53. [PLR] Renamed backflow and jastrow modules. This is an intermediate change for GIT to correctly follow tree changes. Notice that this commit will NOT compile! 52. Reinstated 3.0.xx numbering sequence after temporary switch to 2.5. List of changes for CASINO 2.5 ------------------------------ 51. Updated CHANGES file. 50. Final changes to manual and other documentation. 49. Changes up to now have been flagged as 3.0.xx, as we are moving towards a major new 3.0 release with possibly modified input formats and so on. However, some of the changes so far have addressed quite major bugs in 2.4 (spin-polarized blips not working and so on). Hence have reverted the version numbering back to 2.5.0 - implying this is a bugfixed version of 2.4. Subsequent changes will revert to the 3.0.xx format beginning at 3.0.52. 48. Made OPT_DTVMC = 1 by default. 47. Fixed very minor typo in runcrystal script. 46. [NDD] Fixed a bug in the generation of random points for density-matrix calculations, in which the volume inside the Wigner-Seitz radius was not sampled uniformly. 45. [NDD] Fixed a bug in the bare-nucleus modifications to the DMC Green's function, in which the exponential distribution centred on the nuclei was sampled incorrectly. This bug had no effect in the limit of zero time step, but led to a small violation of the detailed-balance condition at finite time steps, and hence may have resulted in larger time-step biases in systems with bare nuclei. 44. [PLR] Minor documentation changes for release. 43. [NN] Make cusp correction for stowfn optional. The flag cusp_correction (originally only affecting GTF) now also allows to the cusp constraint for STO code. 42. Minor edit. 41. And again.. 40. Added missing figures for patch 37. 39. [PLR] Revert "Added '-r n' option to qsub on Darwin." This reverts patch 36. The option was already being applied as a PBS directive in the submission script. 38. [PLR] Even more changes to emin. - Non-parallel part of the algorithm now executes on all CPUs, so as to save some transfers. This is sane now because all nodes have all the required arrays allocated anyway. - Moved global iteration loop to emin_driver. - Moved semiorthogonalization to its own routine. - Removed cutoff capping entirely. - Fixed a long-standing bug by which emin could pick an eigenvector associat solely with a redundant parameter and stop with an error immediately afterwards on account of not being able to normalize it by its first component ('dividing by effectively zero ...'). These eigenvectors, with an associated eigenvalue of zero, are an artifact of using an SVD-regularized inverse and must be ignored. These could cause trouble in systems with positive energies and negative minimum energy thresholds. - Added ability (coded by JRT in his original patch) to optimize the variance of the local energy using the LLS algorithm. The bug above prevented this from working in previous attempts. - Added ability to not use weights in correlated-sampling estimates. This is provided so that one can run unreweighted variance minimizations; most likely, unreweighted energy minimizations would fail miserably. - Emin will optimize the unreweighted variance in the first cycle if it detects that the Jastrow factor is empty and the configurations come from HF. From the second cycle it will continue to optimize the energy as usual This behaviour can be overriden by setting the new input keyword EMIN_AUTO_VARMIN to F (it is T by default). NB, the reweighted variance works fine for some systems, but is unstable for others. - Reassessed the effect of OPT_FIXNL on emin. It is necessary to set it to F in emin, and this is now the default again. Also made function INVERSE in numerical.f90 allocate potentially large temporary matrices instead of putting them on the stack, something with which we've run into trouble before. Also removed DMATMUL_NT. 37. Added Bohshiang's localization tensor modifications to manual. 36. [PLR] Added '-r n' option to qsub on Darwin. > I had some trouble with jobs queuing on Darwin. I contacted Stuart Rankin, > and he pointed this out: > >> By default, all jobs are rerunnable (and requeueable) - did your scripts >> explicitly disable this (the -r option controls rerunnability)? If so, >> please consider whether you need to do this, as it means that if we have >> to defer your job for system reasons it cannot be automatically requeued to >> run later. In particular, at the beginning of maintenance periods we >> requeue running jobs so that they can restart when the maintenance period >> ends. 35. [PLR] More changes to emin. - Fixed a normalization factor I misplaced in the previous patch. - Matrices S and H are now accumulated on the nodes and MPI-reduced, instead of computed on master from the MPI-gathered B_tilde and BH_tilde. Rewritten the matrix algebra routine to act on S and H directly. This eliminates the need for B_tilde and BH_tilde, which (i) saves a lot of memory (especially on the master node), and (ii) reduces the cost of the non-parallel part of emin by eliminating the operations scaling as NCONFIG*NPARAM**2 (matmul, now effectively divided across processors). - Global minimization loop now uses energy+3*errorbar to check for convergence, which is what the line minimizer uses. - Make small derivatives with respect to the parameters (relative to the other derivatives) exactly zero. - Cutoff change capping now seems counterproductive, so disabling. - Other minor changes which occured during a (second) failed attempt at enabling variance minimization via the emin module. 34. [PLR] Bypass bug in GCC 4.4.1 by removing '-std=f95' from debugging options. For reference, this is bug 41222 in GCC's bugzilla, fixed in 4.5.0 and likely to be fixed in 4.4.2 too. 33. [PLR] Changed default value of VMC_DECORR_PERIOD to 3 and cleaned example inputs. 32. [NN] Correction to varmin output (opt_info>1) 31. Minor edit. 30. [JRT] Simplified and fixed several issues with emin. This commit involves a number of changes to emin: - Global: - Added ability to perform several emin cycles with the same set of configurations. - Semi-orthogonalization: - Added matrix regularization by renormalizing the diagonal of S. - Restructured semiorthogonalization and renormalization so that they are separate tasks, and clarified and slightly modified computation of semiorthogonalization constants. - Matrix manipulation: - Switched to manipulating H matrix. - Now the energy plus three errorbars (i.e., the end of the 99.73% confidence interval) is minimized. - Rewritten search over manipulation constants: an initial search is performed over the entire range, and a single parabolic search is done at the likely minimum. - Unbiased, weighted estimators are now used. - Bug in weighting corrected: initial wave function now used instead of current. Also fixed a problem with buggy MPI implementations with an MPI_BARRIER. Additional changes by PLR: - Removed log files and rearranged output to suit implementation -- in three levels depending on OPT_INFO being 1, 2 or >2. - Removed (internal) ability to manipulate E matrix. - Switched to SVD instead of LU decomposition for resilience against redundant parameters. Emin does nothing about redundant parameters any more, it seem to cope well without resorting to tricks. - Removed ability to do 'fresh' VMC estimates within emin; all estimates now use correlated sampling with the original VMC configurations. Therefore input keyword EMIN_SAMPLING is now redundant. - B_tilde and BH_tilde now stored transposed. This allows simplifying the MPI communication to a single MPI_GATHER without intermediate buffers. Removed need for un-transposed matrices. thus reducing memory usage by > 33%. Removed other unnecessary arrays. - Optimized some operations (favouring use of LAPACK/BLAS routines) and reduced amount of data passed via MPI. - Default value for OPT_FIXNL is now T for both varmin and emin. - OPT_MAXITER now controls the number of global iterations (as it does in varmin) instead of the grid size in the manipulation-constant search. The grid size is now fixed. Default value for OPT_MAXITER is now 10 for both varmin and emin. - Other minor changes. 29. [PLR] Improved warning message for N-N energy mismatches. 28. [PLR] Slight adjustment to autotest. 27. [PLR] Added COMBINE_CDATA utility. When optimizing a wave function, the first few (often just the first) iterations move the parameters towards the region of the minimum, and afterwards the parameters oscillate around the minimum without any further convergence due to the numerics of the process. It turns out that the values each parameter takes in this stage of the optimization are normally distributed around the optimum value (J.R. Trail, to be published), so it makes sense to simply average them to attempt to produce the best wave function. The COMBINE_CDATA utility averages parameters in two or more correlation.data files. On standard input it requires the name of the correlation.data files (the first of which is taken as the reference) and an additional newline to signal the end of the file list. It then produces a correlation.data file on standard output. Note that the program communicates with the user via standard error. The command line to invoke this program should be: combine_cdata > cdata_final and then the user would enter the names of the files, or more compactly: echo -e "cdata1\ncdata2\ncdata3\n" | combine_cdata > cdata_final 2> /dev/nu Also removed utils/comms_files which are not being used, and removed the contents of permanently-outdated utils/README. 26. [PLR] Minor cosmetic change to varmin.f90. 25. [PLR] Fix for a crash in gaussians.f90: add error trap for too few orbitals. 24. [PLR] Fixes to multirun utility. 23. Fixed typo in the 'runcrystal' script. Someone had (accidentally?) added a superfluous backslash in the "#!/bin/csh -f" at the top, with the result that the script would only work if run from a (t)csh command line, but not in any other shell. 22. [PLR] Fixed minor problem with SDW calculations. The random number stream in SDW calculations appeared to change very easily with small numerical changes in the Slater module. This was because in SDW runs no-change moves are proposed very often, and the numerical value of the wave function ratio q for these moves (which is 1 analytically) is often slightly above or below unity. A random number is generated if q<1 but not otherwise, therefore small numerical changes in DBAR can change the random number sequence very quickly. Fixed by not computing q for no-change moves. 21. Added Norbert's Slater example (stretched H2 dimer) illustrating use of Jastrow D-term. 20. [PLR] Fixed compilation of alloc_shm.c and etime.c with some compilers. Depending on the Fortran compiler, C functions may be required to have zero, one or two underscores appended for use in Fortran code, and their names may be required to be in lowercase or in capitals. Added precompiler flags 'F90_NO_UNDERSCORE', 'F90_TWO_UNDERSCORES' and 'F90_CAPITALS' to deal with this. Use by adding '-DF90_NO_UNDERSCORE', '-DF90_TWO_UNDERSCORES' and/or '-DF90_CAPITALS' to CCFLAGS. The default is one underscore and lowercase. A few examples to illustrate the situation: - the PathScale compiler requires lowercase with two underscores - the Intel compiler requires lowercase with one underscore - the IBM compiler requires lowercase with no underscores - the T3E (if that still exists) requires capitals and no underscores The changes affect etime.c and alloc_shm.c. I've also applied consistent formatting throughout these C source files (with the unusual convention that preprocessor macros are indented as if they were part of the code, which I like). Modified some make includes to account for this. Also modified the global Makefile so that 'clean' and 'vclean' imply 'clean_all' and 'vclean_all' under CASINO/src, respectively. 19. [PLR] Fixed ve_helper to understand new format for variances in out file. 18. [NN] Use portable formatted output for stowfn debug infos. 17. [NN] Correct output in VMC: "Var. of local energy per sim. cell" (only for periodic systems). 16. [NN] Correct usage of errstop_master in jastrow.f90. 15. [NN] Added mixed second derivatives to Slater-function evaluator in order to allow backflow calculations in this basis. 14. [NN] Several bugfixes for wfn_check * (.not.XXXtol) to deal with NaNs * correct logic for sderivs 13. [NN] Fixes to the Jastrow-D term. 12. [NN] Minor fix to the adf2stowf converter. 11. [PLR] Minor update to FAQ. 10. [NDD] Fix to linuxpc_g95.inc file: use g++ to compile ppconvert. 9. [PLR] Fixes for a couple of Makefiles in the standard release. Fixed global Makefile to not complain about the absence of manual/src. Fixed utils Makefile not to require the presence of git_utils. Added check and warning for BLAS/LAPACK not having been compiled when they are required, in case users try to compile from src/ and utils/ instead of from CASINO/ (as was normal practice until this release). 8. [LA] Correction in bwfdet.f90. The subroutine DGEMV was called in BLIP3DGAMMA with the wrong arguments. The number rows of the matrix MAVC (NORB) was put in the place of the number of rows (NROWS_MAVC) of the array holding the matrix MAVC and vice versa. 7. Fixed problem with manual compilation from patch 2063fd0. 6. [PLR] Changed meaning of DBARRC and made its default value 100,000. DBARRC is now specified in number of accepted single-electron moves, instead of number of proposed configuration moves. Tests show that it should be safe to do 1024x1024 matrices with DBARRC = 1,000,000; the default value is fairly conservative in this regard. This change is intended as a performance enhancement. 5. [RQH] Fixed SHM code for machines whose node names have different lengths. 4. [PLR] Added warning discouraging use of Gaussian g functions. We have reports suggesting that Gaussian g functions may be wrong. Fixing this involves MDT going down memory lane, remembering what the code does and figuring out what could be going wrong (now we have a test case). Note that g functions usually have a low weight in the wave function, so this is tricky to track down. Also note that if there is indeed an issue it could also be with wave function converters and not with CASINO itself.. 3. [PLR] Changed the tolerance for zero variance in correlation-time calculation. The previous tolerance of 1E-10 was causing the reblock utility (and surely CASINO too) to not give a correlation-time-based correction to the standard error. The tolerance has been reduced to 1E-100. 2. [NDD] Minor change to clearup. 1. Reset distribution files for development of the 3.0 version. List of changes for CASINO 2.4 ------------------------------ Released 20/7/2009 213. Final tweaks and changes for the 2.4 release. 212. [PLR] Fixed usage of r2s in write statements in wfn_check.f90 Recursive writes are not allowed in Fortran 95, and will make NAG-compiled binaries choke at runtime. This happened in verbose orbital-check fails, so it's hard to hit. Also fixed broken [read: ugly] format for this piece of output. 211. [PLR] Updated CHANGES file for release. 210. [PLR] Fixed bug in W Jastrow term for bilayers. The Jastrow W term had not been modified to account for patch 2.1.159, and was therefore wrong in its treatment of bilayers. Fixed. This automatically fixes the inability to use one-dimensional W terms too. Also allowed using an H term for one-dimensional systems. Also fixed bugs in the evaluation of the one-dimensional f term. Also added timers for the individual Jastrow terms. 209. [PLR] Fixed a slight inefficiency in calculation of backflow functions. 208. [PLR] Added a (redundant) check in correlation.f90. 207. [PLR] Adjustment to parameters of orbital and kinetic-energy checks. The stepsizes for numerical derivatives now cover a slightly increased range, which in some cases prevents spurious failures. 206. [PLR] Fixed bug in pairing orbitals whereby constrained parameter c_1 in the polynomial pairing function is written to correlation.out.x if c_0 was not originally specified. 205. [PLR] Minor change which somehow escaped previous patch. 204. [PLR] Added `QCUSP' Jastrow term. In bilayers and biwires, the U term is a cuspless function of the in-plane/in-wire interparticle distances (see DIARY entry 159 for CASINO v2.1). However in a single layer/wire the U term has Kato cusps. As the interlayer/interwire distance tends to zero, the cuspless U term does not have the variational freedom (at usual expansion orders, that is) to smoothly grow the single-layer/single-wire cusp. If one plots the VMC energies for decreasing interlayer/interwire distances, they do not tend to the single-layer/single-wire energy as they should: there is a discontinuity in the energy and variance due to this issue. The QCUSP term adds a cuspless 'quasi-cusp' (hence the name) function for these systems. This function tends to the Kato cusp as the layers/wires approach each other, and it should fix this problem. The QCUSP term only has one parameter (a cutoff length), and its format in correlation.data is: START QCUSP TERM Cutoff (a.u.) ; Optimizable (0=NO; 1=YES) 0.d0 1 END QCUSP TERM 203. [PLR] Updates to the manual. Added STO autotest example. Added example of Slater-type orbital files. Update description of TCM and HTML repository, now mentioning GIT. Organized list of features. Removed duplication of contents across sections of the manual (didn't remove all instances). Added mention of madmin in description of optimization methods. Added instructions for using hardware-optimized BLAS/LAPACK libraries. Updated autotest description and added instructions for using autotest with git-bisect. Added a Slater-type orbital autotest example. Removed unused path CASINO/examples/TEST/Examples . 202. [PLR] Fix for bug in stowfdet.f90 introduced with patch 9fbb3b8 (104). Also reduced verbosity of stowfdet by default (can be re-enabled using intenal DEBUG_STO flag). 201. [PLR] Bugfix for DMC. Commit 76a653d (i.e. patch 174) causes more problems than the PCF one addressed in a recent patch, as evidenced by the autotest. Change reverted. This is the last patch required to make the autotest succeed and have its results match those of commit 737c03e (patch 163). Legitimate differences between output files exist, and are due to: - commit b80b3ec (patch 179), which affects (corrects) non-local energies, - commit 3da0806 (patch 167), which alters the course of optimization when cutoffs are optimizable, - commit 582e311 (patch 164), which slightly alters the kinetic energy values when GPCCs are in use (by less than 1E-10 in relative terms), and - commit ad4c636 (patch 195), which alters some text output. 200. Fixed problem with uninitialized variables in configs module. This produced a crash with the NAG compiler in debug mode. Detected by the autotest. 199. Fixed minor formatting problem with commit ad4c636 (patch 195). 198. Bugfixes for blip module. Fixed three bugs in bwfdet.f90, each caused by one of commits 9fbb3b8 (187), fab1a887 (168) and 3f77f09 (194), all detected by the autotest. 197. Fixed problem with DMC pair-correlation function accumulation. Commit 76a653d (patch 174) introduced a problem with PCF accumulation resulting in a crash (detected in autotest). Fixed. 196. [PLR] Speed fix for not-so-QUICKSORT. A previous patch had removed scalar buffering of vector elements in QUICKSORT. This resulted in a factor of 100 slowdown for large vector sizes. Fixed. Also searched for the optimal value of the 'M' parameter, and changed it from 9 to 30 as suggested by the results -- the speed gain from this is small, though. 195. [PLR] Minor aesthetic changes to print_input_parameters. 194. [LA/PLR] Gradient and Laplacian of blip orbitals at gamma point computed with BLAS. For gamma-only calculations, an auxiliary matrix is used to store blocks of blips which are fed to BLAS's DGEMV to produce the orbital derivatives. This gives measurable speed improvements in blip calculations, although the gain is a very small fraction of the total CPU time of a typical calculation. For complex blips this seems not to be advantageous because the code uses mixed complex/real data types, and the extra copy operations appear to counteract any speed gain. Adjustments by PLR: fixed indentation of a chunk of bwfdet.f90 and re-routed DGEMV call via numerical.f90 as with all other BLAS routines. 193. [LA] Minor corrections to read_configs. Removed VSTATUS since there is a STATUS array in module parallel.f90 (I hadn't noticed). Corrected the value of MAX_NCONFIG_BUFF. Other minor things. 192. [PLR] Fixed severe bug in quicksort routine. The bug would manifest itself as an infinite loop, and was caused by wrong exit conditions for said loop. 191. [PLR] Fixed a problem with previous configs patch. The code would not compile on single-processor machines due to missing 'status' arguments in the mpi_recv calls. Also removed some unused variables in expval.f90. 190. [PLR] Fixed problem in localization tensor accumulation. (See patch 181). The MPI_REDUCE in WRITE_LOC_TENSOR should collect PERIODICITY**2 elements per set, but PERIODICITY elements were being requested instead. Fixed. Also fixed potential (and likely) division by zero and made a few minor adjustments. 189. [LA/PLR] Rewrote routine for reading config.in in parallel. The previous version of config reading, where all cores read config.in at the same time, proved to be very slow for runs on many cores. This patch introduces a new method in which the CPUs are split into groups of size defined by input parameter CHECKPOINT_NCPU. In each group, one CPU reads config.in and sends the data to the other CHECKPOINT_NCPU-1 CPUs in the group over MPI. CHECKPOINT_NCPU defaults to NNODES, and this is the recommended setting. The previous behaviour can be recovered if CHECKPOINT_NCPU is set to 1. Note that CHECKPOINT_NCPU must be a divisor of NNODES. Some adjustments by PLR. 188. Minor cosmetic changes. 187. [PLR] Reorganized libraries and includes. Some work on numerical routines. BLAS and LAPACK now live under CASINO/lib, and are shared (when/where needed between src and utils. This also means that utilities can now use hardware-optimized versions of BLAS and LAPACK routines. Directory CASINO/utils/external_libs (which contained a subset of BLAS and LAPACK) has disappeared. Make includes now live under CASINO/arch/make.inc, and are shared between src and utils -- no need to keep the zmakes in sync any more. Note that the utilities use MPI compiler wrappers (mpif90 etc) despite all being single-processor programs, which is not a problem. CASINO/ARCH was renamed to CASINO/README_ARCH to avoid problems in filesystems with case-insensitive filenames (e.g., under FAT32/NTFS). Also added a CXX variable for those QMC_ARCHs where an appropriate C++ compiler is known. CCFLAGS and CXXFLAGS variables are now supported (although not defined for many QMC_ARCHs). The Makefile system has also seen some changes, e.g. the dependencies of utilities with independent Makefiles have been removed from utils/Makefile, and sub-makes are now always invoked to deal with these dependencies. Also fixed a problem with recent Makefile changes that prevented building CASINO/src on TCM's ancient alphas. qmc_make and lapack_make have been moved to src/update_makefile.sh and lib/update_makefiles.sh, respectively, so as to draw people's attention before they try to update the Makefiles by hand. Rewritten a couple of numerical routines. 186. [PLR] Suppressed output of pdflatex in the absence of errors. A wrapper script buffers the output and displays it only when there are error messages to be reviewed. 185. [PLR] Minor cosmetic changes. 184. Minor tidying of obsolete casino_to_abinit pseudopotential converter. 183. [NDD] Added warning to manual about choosing localisation centres in highly symmetric molecules. 182. Replaced old polint and polintd routines (interpolation with Neville's algorithm) in numerical.f90 with new, better versions with the same functionality. 181. [BJ] Added localization tensor to expval module. Use keyword 'LOC_TENSOR' to activate accumulation. 180. [NDD] Minor change to emacs syntax file. 179. [PLR] The randomization of the integration grid used for the evaluation of non-local pseudo-potential energies was still not uniform. Now fixed. 178. [PLR] Bug corrected in bwfdet, new zmakes/hector.inc. Specifically, removed a bug in the readbw subroutine whereby array BAND_OCCUPANCY was being allocated twice. Added a new zmakes/hector.inc file that selects compiler flags according to environment variable PE_ENV and generates an executable name that contains the compiler name and version. 177. [NDD] Some tidying of bwfdet.f90. 176. Minor changes to the manual regarding the CRYSTAL program. 175. [PLR] Added a bunch of functions needed for MPI IO to comms_serial.f90, since the code wouldn't compile witout a proper MPI library (see patch 168). 174. DMC keeps final configs in memory (for re-use in subsequent stats run). This saves time, especially in runs with many processors. 173. [NDD] Added a note to the manual explaining that syntax highlighting is possible with vim and emacs and referring users to the READMEs. 172. Removed CASINO/data/syntax/emacs/casino.emacs file at NDD request. 171. [NDD] Improved the syntax highlighting of CASINO input files using emacs. If you made the change to your .emacs file suggested in patch 170, get rid of the stuff you added and add the three lines suggested in CASINO/data/syntax/emacs/README. This gets emacs to look for the font-lock definitions in CASINO/data/syntax/emacs/casino.el, so that next time I change the syntax highlighting you won't need to alter your .emacs file... 170. [NDD] Allow highlighting of CASINO input files using emacs. See the README in CASINO/data/syntax/emacs. 169. [PLR] Fixed Makefile - slight oversight in my checking of previous patch. 168. [LA, some adjustments by PLR] Added the option to use shared-memory allocation on groups of CPU cores to store the blip coefficients. This is a compile-time option which can be turned on for supported architectures by setting NEED_SHM=yes in the corresponding include file. Also added MPI-IO for efficient and protable reading/writing of binary blip coefficients, which can be turned on by setting the input parameter USE_MPIIO to T (with WRITE_BINARY_BLIPS set to T as well, of course). 167. [PLR] Removed hyperbolic parameter limiting. Following very positive tests, all parameters are now limited using the "parabolic" limiting scheme. The hyperbolic limiting routines have been expunged from the code. 166. [PLR] Replaced algorithm for parabolic parameter limiting. The single-sided parabolic-limiting function now becomes linear away from the limit. Added a two-sided (lower+upper limit) version which uses a cosine The parabolic limiting function should probably replace the hyperbolic function as the default limiting function, since it's not expected to exhibit the problem of parameters getting stuck at the limits that the latter suffers from. 165. [PLR] Improvements to syntax files. Improved ESDF syntax definitions to account for case-insensitivity, equal signs, etc (all are NDD's suggestions), and differentiate %block and %endblock as special delimiters. Made the cdata syntax file aware of the different indentations used by correlation.data and expval.data, for example, plus it now avoids highlighting lines starting with numbers as comments. Also introduced compatibility recomendations from the VIM manual and removed the folding-enabling lines from the syntax files, instead recommending that users enable folding explicitly in their ~/.vimrc file. 164. [NDD] Rewrote Brent minimization subroutine in numerical.f90. Note that it now assumes that the initial bracketing triple are in ascending order. Changed gsbracket to ensure that this is so. 163. [RML] Made grid_upto_cutoff in expval.f90 more general (the autotest was failing at several points before) and fixed a spelling error in autotest itself. Tested with NAG and ifort on parallel and serial machines for a variety of systems and parameters. 162. [NDD] Made small change to the debug flags in linuxpc-g95.inc. 161. [NDD] Made various changes to src and utilities suggested by g95 warnings and errors. (Removing unused variables, giving variables INTENT, etc.) 160. [NDD] Replaced complementary error function from NR with one proposed in P. van Halen, Elec. Lett. 25, 561 (1989), which is supposed to be more accurate. 159. [NDD] Removed NR-derived fft from numerical.f90, and used fftn from singleton.f90 for the FFTs in generate_mpc_data.f90 and jastrow.f90. 158. [NDD] Replaced NR-derived ranx in the utilities with an algorithm suggested by D.E. Knuth in Seminumerical Algorithms, with a modification suggested by M. Luescher. 157. [NDD] Rewrote golden-section bracketing routine in numerical.f90. 156. [NDD] Added norm-conserving DMC and poprenorm DMC examples to autotest. 155. [PLR] Moved qmc_plotter into its own "plotter.f90" module. Cleaned up and clarified some bits of qmc_plotter. Also fixed a few compiler warnings around the code and a couple of minor bugs in plot_2D. 154. [NN] Add (minimal) documation for STO wavefunctions and ADF converter. 153. [NN] State that variance is given in au/sim.cell in VMC output 152. [NN] Minor fix to ADF wfn importer 151. [NN] Simplification of algorithm for correlation time estimate in the reblock utility. 150. [NN] Introduce new parameter LWDMC_FIXPOP that activates the lwdmc variant with fixed population. By interpreting wdmcmin and wdmcmax relative towards the current population the population and the total weight are decoupled. The population is nearly fixed while the total weight fluctuates as usual. While this generally reduces the statistical efficency of the DMC algorithm, it is a simple way to eliminate population explosions or extinction in cases of small population and large population fluctuation. WARNING: this is *not* a solution for walkers trapped in singular points of the wave functions, nor is it a solution for populations that get trapped in high-energy states. Be careful about this option when you do not know the reason for the population problems in the first place. 149. [PLR] Fixed some problems with syntax files. 148. [PLR] Fixed typo in previous patch. 147. [PLR] Added VIM syntax files for some of CASINO's file formats. The currently-supported files are: - input - correlation.data, expval.data, and expot.data - parameters.casl [incomplete support] The syntax files allow syntax highlighting, of course, but they also define the nesting structure of documents for the 'fold' feature of VIM, which allows users to collapse the view of whole sections of files ('za' is the 'toggle' command) to reduce clutter. See data/syntax/vim/README for more info. 146. Some minor updates to various README files. 145. [RML] Minor change to expval.f90. A write statement in generate_expval_g_vectors was being executed by all of the nodes. Fixed. 144. [PLR] Fixed bug in EXMOL module. The parameter limits for a cutoff length were being applied to a different parameter instead, because I can't count. 143. [PLR] Corrections to patches 139-141 (ve utility). Moved correlation time report to under the energy, removed extra heading, use EPMD2ED to format its errorbar like for other quantities. Also fixed extra line breaks around warnings. 142.[PLR] Rewritten SELECTOR again. I clearly underestimated how long a naive sorting algorithm could take. This time I've gone back to a partitioning method in a routine called FIND_PTH_SMALLEST written from scratch, which uses a mapping array to avoid scrambling the input vector. This new one does not suffer from the risk of segmentation fault either. 141. [PS] Addition to ve utility to support relativitistic terms. ve can process relativistic data when flag -rel is used. All the following terms are displayed separately: Total energy with relativistic correction, mass polarization term, mass velocity term, e-n Darwin term, e-e Darwin term (combined with spin orbit interaction), retardation term and total relativistic correction. 140. [PS] Made correlation time an available option in VE utility. ve -ct will now output the correlation time in steps as well. 139. [PS] Correct on-line help for ve utility. Virial ratio flag was missing. 138. [PLR] Replaced SELECTOR routine with simpler, slower alternative. SELECTOR would produce a segfault when fed NaNs in the input vector. I've rewritten SELECTOR so that it does not segfault on bad input, does not scramble the input array, is simpler, (very importantly) has no licensing issues, and is almost surely slow as hell (scales as n^2). The latter point shouldn't be too important since computing the median represents a very small fraction of the time invested in madmin runs. 137. [PLR] Ability in runqmc to use alternatives to xterm in parallel gdb mode. Alternatives could include 'gnome-terminal -x' and 'konsole -e', only that gnome-terminal thinks it's too smart and detaches itself from the calling process (which makes runqmc think it has finished), and konsole I haven't tried in a while. So no visible change here. Also stopped requesting a custom terminal size. 136. [PLR] Synchronized ifort flags in utils with src. 135. [NN] Add wave function converter utility for ADF program (produces stowfn.data file). 134. [NN] Add correlation.data file for polyacetylene example. 133. [PLR] Fix for a rare MPI bug. Adding a call to qmc_barrier in varmin.f90 fixes a rare hang I'm experiencing lately. This should affect neither results nor performance. 132. [PLR] Revert "Prevent redundant recalculation of parameter constraints." This reverts commit d2755c89ce68b0666f93bb06eddeec813d981cb8 (i.e. DIARY entry 126.) The recalculation was not redundant; skipping it gave wrong results. 131. [PLR] Refer to C++ as CXX not CPL. 130. Fixed scrambled DIARY file. 129. [PLR] Fixed problem with computation of norm in pairing orbitals. When an orbital formed by a plane-wave expansion and a polynomial (and any other functions) is used, the code would ignore the plane-wave coefficients when checking for zero orbital norm. Fixed. 128. [PLR] Fixed wrong unit_scale for non-periodic atomless systems in VMC/DMC. 127. [PLR] Minor changes to errstop_master and errwarn. 126. [PLR] Prevent redundant recalculation of parameter constraints. 125. [PLR] Fixed negative errorbars in ve_helper. This caused existing VMC cycles to be reported as missing in ve. 124. [PLR] Cosmetic changes to loop_time_estimate. Restored block aspect of certain bits of output, and added a time2human routine to display elapsed/remaining times more conveniently. 123. [RML] Removed upper limit on EXPVAL_CUTOFF - maximum number of G vectors allowed along any single direction in a set was hard coded. Grids are now generated such that they will always extend just up to the cutoff. Runs with old input files should not behave differently unless EXPVAL_CUTOFF was too large. 122. [RML] Wavefunctions using the RPA u caused optimization to fail when running the debug version. Fixed by deallocating L_u_pbuffer at the end of the optimization cycle and by checking that alpha_full is actually allocated before referencing it. 121. [NDD] (i) Allow runqmc to use the free queue on HPCx; (ii) don't require the user to enter redundant components of k_offset in low-dimensional systems. 120. [NN] Documentation for MOLORBMODS. 119. [RML] Small modification to extrapolated_est.f90 utility so that it compiles under NAG. 118. [AB] Added converter from GAMESS-US to CASINO. There is short README explaining how to use the converter and how to build up an MCSCF wave function from scratch. There is a self-contained example with output at all stages of the MCSCF wave function generation. [see CASINO/utils/wfn_converters/gamess]. 117. [RML] Improves extrapolated_est, the utility I wrote a while ago. Statistical errors are now treated properly and the manual adjusted accordingly. 116. [NDD] Slight change to ve_helper.f90 to avoid a g95 compiler bug. 115. [NN] Add labels to the long dmc loops to clarify exit and cycle statements. 114. Minor edit. 113. [NDD] (i) Tidying of multiple-population DMC. 112. [NDD] Modification to graphit so that it doesn't complain about "hostname -s". 111. [NN] Add Jastrow D term. 110. [NN] Add debugging output to jastrow routines. 109. [NN] Symmetrize the individual jastrow terms in 'jastrow.f90' 108. [NN] buffer rionion globally 107. [NN] stowf: Minor fixes 106. [NN] Some tuning of stowfdet. 105. [NN] Enable spin-unrestricted STO wave functions. 104. [NN] Add support for Slater-Type-Orbitals (STO). 103. [NN] Fix for ifort 11.0 102. [NN] bwfdet.f90 - avoid problem in communication of time_reversed by running check_kpoints on all nodes. 101. [NN] Fix type check for single precision bcast in serial mpi code. 100. [NN] Make field for random seed output 10 digits long to avoid ********* output. 99. [NN] Add call to loop_time_estimate to linjas G array construction loop. 98. [NN] Some cleanup of source-code style issues 97. [NN] Write job id to out file on batch systems. 96. [NN] runqmc: new option -nompi to avoid mpirun on parallel platforms. 95. [NN] Correct the setup of NMOVE in the presence of DMC_DECORR_PERIOD. 94. [NN] Use DMC_INIT_EREF for ebest as well. Otherwise, the value will be lost as soon as eref is updated from ebest after the first step. 93. [NN] numerical: rearranged inversion routines. 92. [NN] Turn complex constants from variables into PARAMETER. 91. [NDD] (i) Renamed "NC_DMC" keyword as "DMC_NORM_CONSERVE", as requested by PLR; (ii) reintroduced a version of population renormalization, controlled by the "DMC_POPRENORM" keyword; (iii) allowed independent populations of configurations on parallel machines (controlled by "DMC_NPOPS" keyword; at present only for case that population is controlled by renormalization). E.g., NCONFIG=7, NNODES=12, DMC_NPOPS=3 would give 3 independent populations, each running on 4 processors and each having a target population of 7 configurations per processor or 28 configurations in total. 90. [RML] Removed Fortran extensions from previous patch. 89. [RML] Added utility for calculating extrapolated estimators. See /utils/extrapolated_est/ and the manual for more. 88. [NDD] (i) Prevented population from dying out on any processor in norm-conserving DMC; (ii) fixed some spelling mistakes in esdf_key.f90. 87. [NDD] Fixed various spelling mistakes throughout the CASINO distribution. 86. [NDD] Added experimental norm-conserving DMC algorithm, which eliminates population fluctuations. Activate using NC_DMC keyword. Documentation to follow. 85. [PLR] Wherejob now filters login warnings when updating the computer list. 84. [PLR] Minor change to utils Makefile. Fixed manual build for old pdflatexes. 83. [PLR] Previous patch 82 wouldn't work as advertised. Fixed, and added comments to loop_estimate routine to aid understanding. 82. [PS] Modified loop_time_estimate to cut when available time is less than time needed. Processes (particularly emin and varmin) that can estimate time needed to complete will not continue if estimated time to completion is less than the available time. CASINO quits via errstop_master. 79. [NDD] Automatic block resetting was broken. Fixed. 78. [PLR] Adapted runqmc to new Darwin rules 77. [NDD] Simplification to the calculation of the error bars in extrapolate_tau (similar to previous patch for quad_fit). Shouldn't change any of the results. 76. Deleted old quad_fit notes. 75. [NDD] Various improvements to the quad_fit utility. It now gives the fitted function and the error on the fitted function in a form that can be pasted into XMGrace; if you don't supply error bars then it will guess some for you by assuming your data are normally distributed about the fitted curve; and I have relaxed some of the assumptions in the calculation of the error on the minimum, etc. 74. [NDD] Fixed uninitialized-variable bug in abinit_to_casino_pp.f90. 73. [BM] Fixed a bug in the current abinit_to_casino_pp.f90 psp converter. Previously it was likely to core-dump if a psp file with less than two L channels was given. 72. [PLR] LAPACK and BLAS Makefiles now automatically regenerated. Added script 'lapack_make', similar to qmc_make, which updates the LAPACK and BLAS libraries included with CASINO. To be run (interactively) under CASINO/src. 71. [NDD] Added some new examples for autotest and a modification to the sorting routine in make_p_stars. 70. [NN/MDT] Extend debugging output for gaussian cusp corrections Fix for gaussian cusp corrections in the case of complex k-points (which got broken in patch 2.2.232). Fix usage of errstop vs. errstop_master in gaussian setup. 69. [NDD] Bug fix to preceding patch. 68. [NDD] Made modifications so that the GP cusp corrections are only evaluated at all-electron ions in the primitive cell, rather than at each all-electron ion in the simulation cell. This is all that is necessary for Bloch orbitals, and saves a factor of N in the memory requirements. However, it means that certain excited-state or metallic calculations cannot be performed with a real wave function (calculations in which bands are occupied at k but not -k, where k is not equal to G/2 for any primitive-cell lattice vector G). In such a case the simplest solution is just to use a complex wave function if you want to cusp-correct your orbitals. 67. [PLR] Fix for compilation on alphas. Made DEC's medieval make and palaeolithic sh compile CASINO again. Alpha users will be happy. All three of them. Also fixed a minor BSD compatibility problem problem with the Makefile under utils/wfn_converters/gp. 66. [PLR] Reverted patch 59: "Make: Set OMPI_FC as environment variable for OpenMPI, using the necessary export." Breaks BSD and Sun make. Fixed the issue addressed by the reverted patch using in-line environment-variable setting. 65. [PLR] Reverted patch 58: "Replacing $(PWD) by $(shell pwd) in Makefiles." Else the Makefile won't work on BSD make or Sun make. Even though GNU make is widespread, we never know what we (or our users) may want/have to use in the future. Plus the change gained nothing. 64. [NN] Additional fix for svd-changes of last patch. 63. [NN] Introduce F90-style assumed-size interfaces for some numerical routines. 62. [NN] Fix path in crysgen script 62. [NN] Replace errstop by errstop_master wherever appropriate in monte_carlo.f90. 61. [NN] loop_time_estimate: general routine to print simple time estimate of potentially time-intensive loops. 60. [NN] Some fixes for cusp_info debugging output 59. [NN] Make: Set OMPI_FC as environment variable for OpenMPI, using the necessary "export". 58. [NN] Replacing $(PWD) by $(shell pwd) in Makefiles. The environment variable $(PWD) within a Makefile does not honour the -C command line option. The shell function $(shell pwd) works better in GNU Make. 57a. [NDD] Allowed GPCC to work with Gaussian orbitals. 57. [NDD] GPCC has been modified to avoid a memory bottleneck encountered by NN. (Instead of calculating all the required orbitals at once and then performing the spherical averaging afterwards, the spherical averaging is carried out as we go along.) Also, since the setup was taking quite a long time, I have made the spline grid coarser. 56. [PLR] Preparation for future changes. - qmc_make now ready for forthcoming shared-memory allocation facility. regardless of optimization level. Some compilers need non-default values for FFLAGS_lapack and FFLAGS_lapack0 flags in the .inc files (notably NAG 5.1); the default values are FFLAGS_opt and '-O0', respectively. - Removed BLAS clones from numerical.f90 (now using the actual BLAS ones). Notice the minor adjustments required (zdot -> zdotu, etc). Replaced SVD and eigenproblem routines with LAPACK calls. These operations should be a lot faster than before. Removed commented-out routines. - Complex SVD routines are now available, so implementing complex emin should be trivial. - The following QMC_ARCH.QMC_ID combinations have been configured to use precompiled libraries: - linuxpc-ifort.tcm - linuxpc-ifort-parallel.tcm - linuxpc-path.tcm - linuxpc-path-parallel.tcm - linuxpc-ifort-pbs-parallel.darwin [untested] Please report any problems with these. NB, libraries should be configured in QMC_ID-specific include files, not in the generic $QMC_ARCH.inc. Adjustments to other include files to be done by people with access to the relevant machines, should they want to take advantage of external libraries. NB, we can provide no help to this end, since each machine may be configured differently. - I'm assessing the speed improvements, these are likely important. 47. [PLR] Fixed problem with emin and varmin's newer time reports. 46. [NDD] Minor editing of numerical routines. 45. [NDD] Allow GPCC to work with plane-wave orbitals. 44. [NDD] Tidied GPCC. Finer radial grid. Faster spline lookup. 43. [NDD] Update to manual describing patch 40 for GPCC. 42. [NN] Changed CRYSTAL input files in examples directory to new format introduced in CRYSTAL06. Also added new diamond Gaussian all-electron example (since all other crystalline Gaussian all-electron examples were simple systems). 41. [NN] New CRYSTAL06-->CASINO converter (introduced in 2.3.43) was not adequately tested for periodic systems and didn't work in many cases. Code now debugged, simplified, and tested - appears now to be fully working. 40. [NDD] Modified GPCC to cusp-correct complex orbitals. This is a slight extension of the method of Ma et al., which I'll write up for the manual. I've also allowed it to work with excited-state and multideterminant blip orbitals. 39. Included PLR's guide to the git revision control system in CASINO/doc/git_guide.pdf. Made appropriate changes to the manual with remarks about using git and where to find info about it etc. 38. [NDD] Tidying and speedup for generate_mpc_data.f90. 37. [NDD] Have found and fixed a bug affecting 2D MPC calculations for real systems. The minimum-image routine wasn't taking the 3D minimum image when the Fourier transform of v_E(r)-f(r) is evaluated (when runtype=gen_mpc). There was also a strange (and wrong) re-evaluation of amat and ainv in eval_geometry for 2D systems, which I have removed. The MPC energies now look sensible. I'll ask Norbert to test it. I don't know whether this affected Ben Wood's calculations. I don't think it can have, because his results look sensible, whereas the results I was getting in my test case were not. 36. [NDD] Minor no-importance edit to eval_geometry.f90 35. [NDD] Minor mods to blip treatment of MPC interaction (i.e. patch 2.2.209). 34. DIARY update. 33. [NN] Fixes for the MPC interaction in slab geometry. 32. [NN] Increase tolerance for lattice generator to 1e-6. The problem that ZR encountered (see patch 4) should be solved by using relative tolerances. The current value of 1e-12 would require to specify the primitive vectors to higher precision than some programs provide as output. 31. [NN] Automatically flip time reversed k-points in blip wave functions. 30. [NN] Slightly clarify output of varmin. 29. [NN] Interpret wdmcmin and wdmcmax as relative towards the current average weight (inactive until thoroughly discussed and tested). Traditional behaviour of lwdmc: The bounds wdmcmin/max are interpreted as absolute weight per config. As a result, the total population fluctuates approximately along with the total weight. New alternative behaviour of lwdmc: The bounds wdmcmin/max are interpreted as relative to the average weight per config. As a result, the total population is independent of the total weight. While the total weight fluctuates and is controlled by the changing reference energy as usual, the total population is nearly constant at the target population. This new behaviour is hopefully more stable for very small populations but it may be slightly less efficient. The crucial line is commented out until more tests are done. 28. [NN] Add timing information for the numerical derivatives to varmin output. 27. [NN] Add option "runqmc -prof" (analogous to "runqmc -debug"). 26. [NN] Generalize twistav to handle KPOINT_MP_OFFSET. 25. [NN] If FINITE_SIZE_CORR=T during vmc_opt run: Display finsize_corr_ke calculations after each vmc_opt iteration to evaluate changed Jastrow parameters. 24. [NN] Fold lines above 80 chars and remove trailing spaces. 23. [NN] Fix some trivial compilation errors and warnings for ppconvert. 22. [NN] Replace bash-specific shell syntax in Makefile by POSIX-sh standard. 21. [NDD] Added divide by zero trap in ewald routines in interactions.f90. 20. [NDD] Minor change to check_kpoints routine in eval_geometry.f90 to stop NAG compiler complaining. 19. [NDD] New internal reblocking feature (patch 2.3.46) didn't display the MPC results. Fixed. 18. [NDD] Minor allocation error in gaussians.f90 module fixed. 17. Fixed minor typo in manual and esdf_key for the free_particles block. 16. [PLR] Changed polarisation -> polarization in patch 15. We use the "international" spelling when allowed in British English (e.g. customize), else the British spelling (e.g. centre). See e.g. http://dictionary.cambridge.org when in doubt. 15. [GC] Modified CASINO to improve calculations on non-collinear spins. Rather than having an initial trial wave function which is all spin-up, and then rely on spin flips during a long equilibration process to achieve the correct polarisation, I have introduced the parameter SDW_INIT_POLARIZATION into the FREE_PARTICLES block that allows the user to set the initial polarisation and therefore have a shorter equilibration time. This parameter defaults to all spin-up, so if the new parameter is not included in the FREE_PARTICLES block then CASINO will work as before. 14. [PLR] Prevent manual PDF from being produced if compilation fails. 13. Minor corrections to previous patch: Manual needs to be compiled three times to get all the cross referencing done properly. Fixed minor errors in git_archive script. 12. [PLR] Shuffled the manual files a bit more, this time into manual/src. The PDF is now not included in the repository (binary + large != gets along well with quotas), but is correctly generated under manual/ by the git_archive script. git_archive, by the way, now produces tarballs with CASINO/ rather than CASINO_v/ as prefix, and makes use of [QMC_]TMPDIR to speed things up for users other than mdt26. Updated the manual Makefile to compile the LaTeX into the CASINO tree rather than onto the ~casino directory, as well as to keep things tidy and to tell pdflatex not to try to interact with the user. Also added a global CASINO/Makefile which does all three targets (src, utils manual), and understands useful things like opt/dev/debug, clean/vclean, inf etc. Made sure this plays along well with the case where there are no manual sources to make. 11. Simplified the manual Makefile so that the .ps.gz and online HTML versions of the manual are no longer generated (what's the point?). Tidied manual directory by moving all figures into a subdirectory 'figs'. Previously the standard versions of the figures were .eps files (with the .pdf equivalents generated automatically by epstopdf). This was only required to generate the casino_manual.ps.gz file so the base figures are now the .pdfs. I have retained the .eps files for reference in a figs/EPS directory (they are no longer actively used). 10. Modified .gitignore file and the git_archive script such that: - the manual/casino_manual.pdf file is included in both the repository and generated archives. - the manual/casino_manual.tex and manual/Makefile files are included in the repository but not in generated archives. The repository is distributed to developers (who want to read the manual and update it) and the generated archives are distributed to users (who only want to read the manual). 9. [PLR] Enabled compilation of ppconvert on systems where g++ is available. Modified its Makefile to make it aware of the relevant directory structure. 8. [PLR] Found problem with traceback facility by which the SETUP block would be identified as a string of "^@" if TIMING_INFO is F. The problem is that TIMING_INFO is toggled to F when already inside SETUP, switching to a different mechanism for tracking timer calls but leaving the first call unaccounted for, resulting in an unassigned string. Fixed. 7. [PLR] Fixed problem with last patch: utils Makefile now updated. 6. [PLR] Removed utilities casino_update, bliss and mod which git has made redundant. 5. Added 'obfuscate' scripts to administrator repository (i.e. mine) so I don't lose them then modified .gitignore so that they don't get distributed. 4. [ZR] Fixed bug in lattice_generator in eval_geometry.f90 where it misclassifies the lattice vectors when arranging them in stars. This happens when the magnitude of the vectors are smaller than about 1.d-2 (i.e., very large and/or very dilute systems). Also fixed various checks in init_interactions which were trying to check if the various sums ran out of the pool of pregenerated lattice vectors. 3. Added .gitignore file to the distribution to tell git to ignore the bin_qmc directory and its contents, any zlib directories and their content, isolated object files ending in .o, and anything in the manual directory other than eps and tex sources. 2. Added /utils/git_tools directory containing some useful scripts ('git_update' for updating the main repository (~casino/CASINO - MDT only) and 'git_release' for preparing a tar file of the currently checked-out branch. Modified utils Makefile to include these. 1. Removed old 'release' script as we are now moving to using the 'git' revision control system. List of changes for CASINO 2.3 ------------------------------ 66. Undone patch 2.3b15 for release, to improve performance of the stable version. 65. Updated CHANGES file. 64. [NN] gen_mpc: removed hard-coded grid sizes. Grid is now computed from geometry and MPC_CUTOFF. 63. [PLR] Runqmc was treating dmc_trip_weight (and its evil, evil twin trip_popn) as integers, but they are reals. Fixed. Added a check for the simultaneous presence of old/new keywords (NMOVE/VMC_NSTEP etc) which is forbidden. Further adjustments to runqmc (in addition to patch 59 below) to make its behaviour match the error checks in monte_carlo.f90. 62. [PLR] Fixed (lack of) format for some integers in ORBMODS block. 61. [PLR] Modified utils Makefile to allow use of multirun on parallel workstations. 60. [PLR] Fixed crash at end of DMC if any node finishes with no configs. Not a critical bug, but it's neat to finish in style. 59. [NN] Minor changes to runqmc script: - Permit running without bwfn.data if bwfn.data.b1 is present. - Correct a few check in runqmc for zero values. 58. [PLR] Cosmetic adjustments to patch 53. 57. [PLR] Modified clearup so that it does not delete binary blip files by default, since they are intended to remain there to save time the next time the calculation is run. Use 'clearup -all' to force their removal. Minor fixes to the multirun utility. 56. [PLR] Utility crysgen had changed from script to binary. Scripts are symlinked, so the old symlink was being followed when creating the binary, which landed in the utils directory. Fixed the Makefile and the make_wrappers script to delete the symlink before compiling/wrapping, so that this doesn't happen again. Also modified crysgen's sources to allow the application of qmc_make (which doesn't allow closing 'MODULE foo' with neither 'END MODULE FOO' nor 'END MODULE'). 55. [PLR] Folded NN's kilometric lines from the last few patches. 54. [NN] finsize_corr_ke: Correct tolerance in jastrow Gstar detection (completing patch 28). 53. [NN] varmin: Make output more informative. 52. [NN] varmin: Set v(rcftol) to estimated relative error in variance/MAD. 51. [NN] lwdmc: Fix incorrect joining. Bug was introduced by rewrite between 2.2.157 and 2.2.162. 50. [NN] Print out position r in case of failed wfn check. 49. [NN] Various modifications to ifort compiler files : - Added debugging options -ftrapuv and -debug all - Suppressed obnoxious notifications about parallelizing loops etc - Enable use of OpenMPI with both linuxpc-ifort-parallel and linuxpc-gcc-parallel 48. [PLR] Enabled prefetch of wave-function values at old drift vector evaluation in DMC to speed things up. This should've been on all along. 47. [PLR] Fixed issue with e-e interaction evaluation: double counting, which had been removed by NDD in 2.0b42, had accidentally been reintroduced by my patch 2.2b151 or so, slowing down the code appreciably. 46. [PLR] Ability to do on-the-fly reblocking of data. This is handled by the new 'reblock' module. Notes: - The results are identical to those obtained with the reblock utility. - The cost w.r.t the number of moves M goes as M*log(M). I.e. 'for free'. - The memory usage w.r.t. M goes as log(M). This means 'for free', too. - Added a simple algorithm to find the plateau in the reblocked data. Naive as it is, it seems to do an excellent job compared with both hand-picking the plateau onset and the outcome of the correlation-time method. And bear in mind that an error bar is little more than an order-of-magnitude estimate of the accuracy of the expectation value, so accuracy is not precisely critical. - The only thing printed to the output file at the moment is the reblocked error bar of the total energy at the end of VMC and DMC (the latter at the stats accumulation stage, clearly) - No means for saving/restoring the reblock data yet, so continuation runs will give independent results -- this will be fixed soon Eventually I intend to eliminate the need for post-processing the data under normal circumstances. 'Rare circumstances' would include things like explicit statistical studies of QMC and the accumulation of ill-behaved expectation values like forces. 45. [PLR] Fixed a problem reported by Martin Krupicka regarding CASINO wrongly stopping with an error when there are cusps in the chi Jastrow term under certain additional circumstances. 44. Modified the runcrystal script so that the old -qmc option performs all the steps needed to generate the gwfn.data file automatically also for CRYSTAL06. Updated documentation to reflect this. 43. [MDT/NN] Full CRYSTAL06 support added. MDT CRYSTAL03 converter which we could not use for political reasons with that code has now been combined with the official CRYSTAL06 API routine. New utility code 'crysgen' will convert the output of the API call in the properties program to a CASINO gwfn.data file. Old 'crysgen' utility which works with CRYSTAL95/98 now renamed to 'crysgen98'. Manual updated to reflect these changes. 42. [NDD] Updated tcm_comps utility to reflect the new names of the PCs in TCM. 41. [PLR] Implemented a routine 'mpi_bcast_safe' that automatically splits large arrays in 32MiB chunks in MPI broadcasts. Applied it to the reading of binary blips where DA was having trouble. 40. [PLR] Fixed an uninitialized-variable problem in bwfdet, caught in the autotest. 39. [PLR] Fixed a problem in VMC with vartemp_err being used referred to in slave nodes and causing an error, caught in the autotest. 38. [PLR] Updated wherejob to use the new pcXX names instead of the old tcmpcXX names for computers in TCM. NB, this is undocumented, but it is possible to use wherejob on any network you like. Modify/create ~/.casinorc to contain e.g. SECTION NETWORK nclasses = 3 network_name = My weird setup name_pattern 1 = 192.168.&&n,1,2&&.&&n,1,12&& nick_prepend 1 = pc name_pattern 2 = letter-&&a,a,z&&.localdomain nick_prepend 2 = name_pattern 3 = localhost nick_prepend 3 = my_pc END SECTION NETWORK 37. Update the billy script to use CRYSTAL2006 in addition to older 03/98/95 versions. 36. Updated the runcrystal script to run CRYSTAL 2006 in addition to older 03/98/95 versions [NOT file generation for QMC yet]. 35. Fixed error in utils Makefile : linking of scripts required for only a subset of QMC_ARCHes was broken. 34. [PLR] THE CODE IS NOW OFFICIALLY FORTRAN 95. NB, no actual changes were required, save for switching '-std90' -> '-std95' in ifort's debug flags. NB2, sorry for shouting. 33. [PLR] Fixed a problem whereby core-polarization energies wouldn't be written to the history file, although they were correctly added to the total energy. 32. [PLR] Added tcm.inc's for g95 compiler so that we use the one in /rscratch/compilers. Also updated sunf95 location. 31. [NDD] Updated tcm_comps utility to reflect fact we are now allowed to use tcmpc19. 30. [NN] Reverted some incorrect changes that slipped in with the last submission (patch 29) - code could not compile. 29. [NN] Write a file correlation.out.0 with the original values before starting an optimization. Especially useful when the default parameter values are non-zero (like for molorb) or for verifying that correlation.data was read in correctly. 28. [NN] The pstar selection in finite_size_correction_ke used to use much lower tolerance than lattice_generator, causing problems with low-precision lattice vectors. Fixed that. 27. [NDD/PLR] Fixed a compilation problem with gfortran 4.1.2 by adding a global PRIVATE directive to jastrow.f90 (it should have been there anyway). Gfortran 4.1.x seems to choke on things too easily; use at least 4.2 if possible (but ideally 4.3, which does much better code optimization). 26. [PLR] Added quick CASINO pre-installation instructions for popular current Linux distributions to the FAQ. 25. [PLR] Added missing include files for gcc on Darwin and parallel pathf90 in TCM. 24. [NDD] Modifications to allow cusp correction to orbitals in any basis along the lines of MDT scheme for Gaussians. It constructs a spline representation of the spherical average of the orbitals about each ion, which plays the role of the s-type Gaussians. At present it works for blip orbitals (this is why it was needed) and Gaussian orbitals (to allow for comparison with the earlier scheme). At present it only works for single-determinant calculations and orbitals at Gamma. .... I still need to work on a number of things: (i) try to come up with a better scheme for correcting orbitals that go to zero near the nucleus [probably along the lines of the scheme for the Gaussian cusp correction]; (ii) allow for complex orbitals (i.e. at k/=0); (iii) allow for multideterminant calculations, etc.; (iv) get it to work with plane waves (for the sake of completeness). .... For complex orbitals, I think one should work on the assumption that the phase of the orbital is constant over the cusp region (physically, this should be reasonable). The equations to be solved are then almost the same as in the real case, except for the final multiplication by the phase. One cannot simply correct the real and imaginary parts independently using the scheme for real orbitals, because the one-electron local energy is not linear in the real and imaginary parts. 23. [NDD] Added the directive "#PBS -r n" to the Darwin submission scripts generated by runqmc, so that interrupted CASINO jobs are not rerun. (To continue a CASINO job, one needs to move config.out file to config.in, etc, before rerunning.) 22. [NDD] Added a trap to prevent people from attempting to run SDW calculations with real wave functions. 21. [PLR] Fixed a bug in the application of the k-offset to complex pairing orbitals with backflow. Also discovered no less than five other bugs in the calculation of the imaginary part of the kinetic energy: two affecting all complex wave functions with backflow and three specific to complex pairing determinants with backflow. Luckily the imaginary part of the KE was not used anywhere in the code until patch 2.3b17. 20. [PLR] Created placeholders for Pfaffian and geminal wave functions, called pfaffian.f90 and geminal.f90. If anybody is interested in implementing these, feel free to do so; the structure is already connected with WFN_UTILS, you have the SLATER and EXMOL modules for reference, and you may contact me with any questions you have. Else I'll do it at some point in the not-so-distant future. 19. [PLR] Modified runqmc so that, by default, CASINO is run with a nice value of zero on Linux computers with cpufreq enabled. This can be overridden, as usual, with 'runqmc -nice '. NB, the default setup for cpufreq is to keep the CPU frequency at the minimum until the load from processes with nice values of zero or less reaches 80%, then go up a step, repeat, etc. This ignores CASINO's hunger for CPU power when the default nice value of +15 is used. 18. [PLR] Fixed a problem with the mask used in patch 2.3b10. NB, it seems that gfortran detects runtime errors which neither nag, g95 or ifort report. Nice. It's not a hassle to run the autotest with three compilers already. The more the merrier. 17. [PLR] Modified the VARMIN module to take into account the imaginary part of the local energies --which should *average* to zero but are not *individually* zero-- in the evaluation of the target function. This affects OPT_METHODs 'varmin' and 'madmin', but not 'emin' nor 'varmin_linjas' since these are separately coded. If unsuccessful on AJM's cistern, this feature may be unimplemented since we don't know if it'll make a difference. On the autotest it seems to do just fine with the two complex wave function examples. 16. [RQH] Fixed bug with unallocated array being accessed in the bwfdet module. 15. [PLR] Prepared playground for the forthcoming Jastrow and backflow modules. The old modules have been moved to PJASTROW and PBACKFLOW ('P' for 'previous'), the new modules are GJASTROW and GBACKFLOW ('G' for 'general'), and JASTROW and BACKFLOW contain wrappers for the two versions. All public variables from PJASTROW and PBACKFLOW have been moved to other (still appropriate) places, since one cannot wrap variables in Fortran. The G* modules are empty at present. Added two temporary keywords to allow me to switch between the two versions, USE_GJASTROW and USE_GBACKFLOW. 14. [PLR] Fixed a problem encountered in the EXMOL autotest example where the kinetic energy check for a very bad wave function would crash EMIN if in debug mode. Also shortened the EXMOL run so that autotest takes less time. 13. [NDD] One-line modification to runqmc to allow users to specify the length of the job for QMC_ARCH=ibm_sp3. (So that one can run 48hr jobs on HPCX.) 12. [PLR/NN] Output from slave nodes now go to '.out_node*' rather than to 'out', since piping streams together was never a good idea. Similarly with '.out_discard' during emin. Runqmc has been taught to append the contents of '.out_node*', if non-empty, at the end of 'out' after the calculation, with a label to explain where that came from. Label also added when appending '.err' to 'out'. Clearup has been taught to remove these files, plus it actually deletes all other hidden files ('.*') it was meant to remove. NB, we don't output much from slave nodes anyway. NB2, this may fix the output problem on Darwin. Or not. 11. [PLR/JJ] Fixed problem in slater.f90 whereby accepting a configuration move did not update nor invalidate the lapsmat array. This seemed to break config-by-config DMC with orbbuf=T only. 10. [PLR/GGS] Fixed crash when optimizing some Jastrow terms with others kept fixed. 9. [PLR/GGS] Kinetic energy check was having trouble with near-zero analytical values for Ti and Fisq. Values of Ti and Fisq smaller than epsilon(1.d0) are now flushed to zero. 8. [PLR] The tcm.inc's in the zmakes directories have ceased pointing at ifort9.1; version 10.1 is now used by default. TCM users probably have to rebuild the sources from scratch to prevent version clashes. 7. [RQH] Fixed bugs in the blip routine bwfdet.f90 that for some non-spin polarized systems can cause problems when computing excitations, or when using trial wave functions with some types of multi-determinant expansions. 6. [NN] Use display_param (see patch 3 below) in gaussian molorb code. 5. [NN] Minor bugfix to 4. 4. [NN] Restructured gaussian/molorb: - Keyword use_molorbmods is obsolete. Use use_orbmods instead, which works for both atom_basis_type=="numerical" and "gaussian". - Merged molorb.f90 into gaussians.f90. - Added gauss_per_cusp.f90 (from gauss_per.f90). - Enabled cusp_correction in combination with opt_orbitals during VMC optimization. - Added parameter buffers for gaussian cusp correction data. - Fixed a few details inside Gaussian orbital optimization. - Added an orbital-evaluation wrapper 'gwfdet' in gaussians.f90, called from wfdet. - [PLR] Made use_molorbmods obsolete, rather than remove it. Cosmetic changes and minor bugfixes to the changes above. 3. [NDD] Wrote general-purpose subroutine for displaying parameter values (to reduce the number of "if optimizable ..." and "if +ve ..." lines in jastrow.f90). Now used in jastrow.f90 and orbmods.f90. 2. [NDD] Modified various utility programs to stop compilers whingeing and to void various compiler bugs when in debug mode. 1. [NDD] Wrote script for helping users monitor large numbers of CASINO jobs on Cambridge HPCF Darwin machine. If you have a set of CASINO jobs in directories X* then type "job_in_queue -f X*" to find out whether any of the jobs are no longer in the queue (or running). (This saves one having to match the names of the jobs listed by qlist with the names of the job-submission scripts in X*.) List of changes for CASINO 2.2 ------------------------------ 281. [NDD] Modified localizer.f90 to display a warning if the determinant of the linear transformation of the orbitals is small. (A user encountered problems with localised orbitals, because his choice of localisation centres led to a singular linear transformation.) 280. [NDD] Fixed sign convention in plot_mpc utility. 279. [NDD] Modified twistav script to allow the user to skip the QMC calculations by setting the "-justcastep" flag. (So the script just runs CASTEP to prepare a set of CASINO input files). 278. [NDD] Fixed unallocated array bug in Rene's mods in pwfdet.f90. 277. [NDD] Improved the random number generators used in the CASINO utilities twistoffset and blip. The new RNG is that of l'Ecuyer with a Bays-Durham shuffle. In blip, the RNG is only used to compute the wave-function overlaps as information for the user. However, twistoffset generates the twist angles to be used in CASTEP/CASINO calculations, so one ought to use a good RNG in this case. 276. [PLR] Removed printout of scratch-space information for final release. 275. [PLR] Changed the default values of *_NBLOCK to 1, which is more sensible (or less random) than the previous defaults. 274. [PLR] Added RUNTYPEs 'dmc_stats' and 'dmc_equil'. These make IACCUMULATE obsolete, and it is recommended not to use it. RUNTYPE 'dmc' is now the same as the previous 'dmc_dmc' if IACCUMULATE is not present in the input file, else the old behaviour is adhered to and a obsolescence warning is issued. 273. [PLR] Added RUNTYPE 'plot', which enables the QMC_PLOT block in the input file. Thus the block can be left in the input file untouched while running other things, without unexpected consequences. Thanks to this year's summer school students for their suggestion (implicit in their swearing at the code for ignoring them). 272. [PLR] DMC now checks if the number of VMC configurations loaded is too small or too large w.r.t. the target weight. In the former case it prints a warning, and in the latter it also discards configurations to avoid a 'population explosion' error at the beginning of the calculations. Thanks to M.Krupicka for the tip. 271. [PLR] Fixed problem with plot_2D script when attempting to plot files in directories other than then one where plot_2D is run. This is really a problem with the auxiliary utility findmax.f90 when compiled with ifort (and maybe other compilers). Thanks to F.Jornada for the tip. 270. [PLR] Fixed silly bugs in autotest and modify_inputs utilities. 269. [PLR] Added an exmol example to the autotest suite. 268. [PLR] Fixed two NAG-spotted uninitialized variable problems (one in the slater module and the other in the jastrow module). 267. [PLR] Added QMC_ARCH intelmac-gcc. Thanks to I.Gutierrez for letting me play with his computer. 267. [PLR] Updated FAQ, README, README_INSTALL and ARCH files. 266. [NDD] Fixed uninitialized variable problem in merge_pwfn.f90. 265. [PLR] Fixed silly recently-introduced error where the code would crash if did more moves than configs generated in VMC. 264. [NDD] The gfortran compiler choked with a compiler internal error on atomic_forces.f90. Fixed. 263. [PK] Fixed problem with optional argument being used in bwfdet.f90. 262. [PLR] Bugfix for EXMOL, which wouldn't work without backflow. 261. [PLR] Added new input keyword DMC_INIT_EREF, whose value (if present) replaces the VMC energy as the reference energy at the start of a DMC run. This can be used to avoid large population fluctuations in equilibration. Suggested by DA, who apparently uses this technique successfully by modifying the config.in file by hand. 260. [PLR] Added a keyword "small_transfer" which, when set to T, enables the code to skip large arrays in config transfers in DMC (this is DBAR only for the moment). This is likely to speed things up in parallel machines if the system is large and/or the network is slow. Turned off by default. Notice that DBAR is an array of size ~N^2, but it costs ~N^3 operations to re-evaluate, so for sufficiently large values of N recalculation will be more expensive than a transfer (the critical value of N depends on the network and CPU performance, of course). 259. [PLR] Acceptance probabilities are now used in the accumulation for VMC method 3, a la old VMC method 2. 258. [PLR] Created a new set of basic keywords for VMC and DMC. These are: * VMC_NSTEP * VMC_NCONFIG_WRITE * VMC_DECORR_PERIOD * VMC_AVE_PERIOD * VMC_NBLOCK * VMC_EQUIL_NSTEP * VMC_NTWIST * VMC_REEQUIL_NSTEP * DMC_TARGET_WEIGHT * DMC_EQUIL_NSTEP * DMC_STATS_NSTEP * DMC_EQUIL_NBLOCK * DMC_STATS_NBLOCK * DMC_AVE_PERIOD * DMC_DECORR_PERIOD * DMC_TRIP_WEIGHT * DMC_NTWIST * DMC_REEQUIL_NSTEP * DMC_REEQUIL_NBLOCK replacing: * NMOVE * NWRCON * CORPER * NVMCAVE * NBLOCK * NEQUIL * VMC_TWIST_AV * NEQUIL_TA * NCONFIG * NMOVE_DMC_EQUIL * NMOVE_DMC_STATS * NBLOCK_DMC_EQUIL * NBLOCK_DMC_STATS * NDMCAVE * CORPER_DMC * TRIP_POPN * NUM_DMC_TWISTS * NMOVE_DMCT_EQUIL * NBLOCK_DMCT_EQUIL respectively, with slightly different meanings (more convenient ones). For the moment it is possible to use the old keywords, and there is no hurry in removing them. Read the manual or use casinohelp to get more info. 257. [PLR] Updated ve to use the error bar of the variance from each block. 256. [PLR] Changed 'Parallel efficiency' to 'Load-balancing efficiency' in the output of parallel DMC, so as to reflect what the number really means. 255. [PLR] Updated manual for new release. 254. [PLR] Finished reworking backflow: - Changes meaning of Farray and Harray so that they respectively correspond to the vector of drift vectors and the Hessian of Psi_S w.r.t. its argument (X, not R). - Added routines to the BACKFLOW module to compute Fi and Ti by application of the chain rule for any form of Psi_S. - Integrated the BACKFLOW module into the scratch-space facility. - Made sure all backflow routines take full advantage of backflow sparsity (regardless of BF_SPARSE, which only affects how determinant updates are handled). - Merged some bits of SLATER_BF back into SLATER, some back into BACKFLOW, and removed SLATER_BF. - Implemented backflow for EXMOL wave functions, and fixed a couple of harmless issues in EXMOL. With all this, the backflow implementation is easier on memory and faster. Remark on entry 241 below applies again. 253. [PLR] Fixed minor setup problem with biex1. 252. [PLR] Patch 243 didn't make VE display warnings from anywhere other than the beginning of the file, which it should have. Fixed. 251. [NDD] Update of the manual. 250. Prevented CASINO/TODO file from being included in the distribution, since it is no longer kept up to date and is of limited interest to users anyway. 249. [NDD] Updated clearup utility to delete bwfn.data.b* files if bwfn.data is present. 248. [NDD] Added a check that the k-vectors lie on a grid of simulation-cell reciprocal-lattice vectors (which may be offset from the origin). I have also added a check that the k-vectors are inequivalent. 247. [NN] Fix to bracketing routine in gaussians.f90 (led to occasional problems with cusp correction algorithm). 246. [NDD] Modified bwfdet.f90 to warn users if both bwfn.data.b# and bwfn.data are present (Norbert and I have just fallen into the trap of updating bwfn.data but not bwfn.data.b1). 245. [NDD] Minor bugfix to run_control.f90 routine to remove compiler warning. 244. Added information about the CASINO-GAMESS interface to manual and utils/wfn_converters directory. 243. [PLR] * Changed the format of 'errwarn'. All warnings issued by CASINO are now errwarns. Changed VE utility to print out the warnings it finds in the output file, in the hope that users will be less likely to ignore them. Warnings omitted if '-nowarn' flag is specified. 242. [PLR] Fixed runqmc so that it allows non-integer values of NCONFIG (see patch 240). 241. [PLR] Removed buffering of electron-by-electron backflow arrays, and streamlined and cleaned the entire backflow module. This has resulted in readable code, fewer useless flags, the BF_SAVE_MEMORY input keyword being now redundant, correct integration with wfn_utils, hugely improved memory scaling with system size, ~1,600 fewer lines of code, and consistent 20%-50% improvements in *total* CPU time for the backflow runs I've tested. Which prompts the question: what was I thinking when I coded this in the first place? 240. [NDD] Allowed target population to be not equal to an integer multiple of the number of processors. 239. [NDD] Made CASINO stop with an error if have_ae and have_ppots and not allow_ae_ppots, where the latter is a new keyword: "If a user runs CASINO with pseudopotentials for some ions but not others, the usual reason is that he or she has forgotten to provide a pseudopotential. Hence CASINO stops with an error. However, some users may wish to use the bare Coulomb potential for e.g. hydrogen ions, while other ions are represented by pseudopotentials. In this case, ALLOW_AE_PPOTS should be set to T." 238. [AJM] Minor update to free_orbs.f90 such that CASINO now correctly outputs the k offset when complex-pairing orbitals are used. 237. [NDD] Fixed two minor errors in backflow.f90 relating to deallocating parameter buffers, and to zeroing the in_set_ae_cut array. 236. [NDD] Minor fix to backflow.f90 to avoid crashes when some ions are not included in any set. 235. [NN] Simple bugfix for gen_mpc with periodicity=2. (init_interactions tried to read mpc.data while was still being written.) 234. [RML] Added the ability to calculate spherically-averaged pair correlation functions (using PAIR_CORR_SPH) in finite systems. Made appropriate modifications to plot_expval. 233. [PLR] Minor fix to 232. 232. Added cusp corrections for virtual orbitals expanded in Gaussian basis for finite systems with and without backflow. Virtual orbital cusps for periodic systems to be added later. Not fully tested yet - caution! 231. [PLR] NAG's f95 was failing to compile CASINO since 2.2.162, choking on slater and slater_bf with an internal compiler error. Now fixed. Done several scattered changes suggested by this compiler. NB, the problem was with a non-TARGET array being passed to a subroutine where the argument has the TARGET attribute, and was fixed by declaring the original array as a TARGET too. This shouldn't be necessary, and g95 will suggest you to remove the TARGET attribute. Don't. At least until NAG fixes the issue. 230. [PLR] Backflow deactivation/reactivation in vmc_opt runs wasn't consistent with the WHICH_PSI_S variable during parameter setup, causing problems when the initial backflow function was empty. Now fixed. 229. [PLR] Ability to have cusps in the orbitals in the EXMOL wave function. 228. [PLR/RML] Fixed bug in emin caused by a recent patch. 227. [PLR] Complex pairing orbitals are now multiplied by exp[i r_ij.k_offset]. For an added twist. 226. [PLR] Menugrep utility now skips over *.old by default. 225. [RQH] Adding additional line 'call wfdet_synchronize(.false.)' to vmc.f90 gives considerable speed up for a VMC run when NWRCON>0 and NUM_CPUS_IN_GROUP>1 in a large system. 224. [PLR] Minor bugfix for the H Jastrow term. 223. [RQH] Fixed a problem with patch 210. 222. [NDD] Minor change to bwfdet.d90 in order to avoid segfaulting for complex wave functions. 221. Changed the default value of SINGLE_PRECISION_BLIPS to .false. in monte_carlo.f90 (and relevant description in esdf_key). 220. [PLR] Wave function parameters are now renormalized by the modulus of their initial value (if > 1E-150) in WNF_UTILS. This addresses two issues: - In EMIN, because derivatives w.r.t small parameters are much larger than those w.r.t. large parameters, many large parameters are systematically dropped after SVD decomposition, as there is a tolerance of 10E-10 * largest value. With renormalized parameters this should not be the case, and tests show that the number of spurious SVD singularities drops dramatically. - NL2SNO chooses 1E-7 as the stepsize for the numerical derivatives in its first iteration, regardless of parameter size. This can cause a very bad initial move when small parameters are present, producing an unrecoverable situation and making NL2SOL quit without doing anything. This can also result in zero initial derivatives for large parameters. These issues should go away with renormalized parameters. 219. [PLR] In the matrix manipulation stage, EMIN now uses a 'search parameter' in the range [0,1) that maps into manipulation constants in the range [0,Inf), rather than (0,Inf) as before. This means that EMIN should be able to use the unmanipulated result (man.const=0) as a bracket point. And, since the 'search parameter' has a finite range, it is possible to divide it into equally-sized slices for the basic scan: OPT_MAXITER controls the number of divisions. 218. [PLR] Implemented early exit from matrix manipulation in EMIN in the case where the unmanipulated result is a clear improvement over the VMC result and the manipulated results are getting clearly worse than the unmanipulated result ('clarity' being defined in terms of the VMC error bar). This was in EMIN (in a simpler form) a while back, so it's nothing new. 217. [PLR] At OPT_INFO>2, EMIN will print the derivatives of the mean energy w.r.t. all the parameters, which is useful to spot problems. 216. [PLR] Added the ability to buffer parameters during the computations of numerical derivatives in optimization, as suggested by NN. This applies to all existing parameters except those in the MOLORB set, which I think NN may like to do himself. This change should produce very significant gains in speed, especially with F and H Jastrow terms and Phi+Theta backflow functions, whose parameters are inter-connected by large systems of linear equations. NB, parameter-changing has become a more time-consuming part of VARMIN with recent changes (it already was in EMIN), since it is now performed NCONFIG*NPARAM times per iteration, as opposed to the previous NPARAM times per iteration. 215. Some modified utilities from recent patches failed to get included in the release. Fixed. 214. [PLR] Parameter rescaling now applied to the H Jastrow term during optimization. 213. [PLR] Implemented a new wave function type, handled by module EXMOL. This can be used to describe excitonic/positronic molecules, and it replaces the Slater part of the wave function, now generically called "Psi_S", the 'S' being for 'symmetry' rather than for 'Slater'. Added a new input keyword 'psi_s' to select between Slater determinants ('slater', default), excitonic-molecule wfn ('exmol'), and any other form we may need in the future (think 'pfaffian', 'general_pairing',...). Manual entry to be added soon. NB, the amount of changes required to get the new module into CASINO has been almost zero, which indicates that the new CASINO structure is a change in the right direction. NB2, people in TCM wishing to implement a new Psi_S type may want to start from the stub under ~casino/documents/pl275/exmol/exmol_stub.f90 . CASINO developers not in TCM may ask PLR for it. NB3, this makes the 'BIEX2' Jastrow term redundant. This redundancy will be fixed soon. 212. [PLR/RQH] Added a bunch of routines to comms_serial for patch 210 to work on single-processor machines. Added a tiny module INPUT_TYPES containing derived types which the MPI library is expected to deal with directly. Moved utils/wfn_converters/pw_to_blips/singleton.f90 to src/singleton (used by patch 210), and soft-linked back into utils/wfn_converters/pw_to_blips. 211. [PLR/RQH] Fixed a problem where opening EMIN's '.out_discards' file on multiple processors at the same time would make CASINO crash. 210. [RQH] Rewrote several subroutines in bwfdet.f90. Note: - Blip evaluation of delocalized orbitals was optimized, such that the orbital evaluation is now over 7 times faster in systems with more than 200 electrons. - The blip evaluation of localized blips was optimized, such that the orbital evaluation is now about 2 times faster. - To reduce computer memory when using blips one can set 'single_precision_blips' (logical) to T in the input file. The coefficients in the blip expansions of the orbitals will then be stored using single precision precision real/complex numbers rather then double precision real/complex numbers. The default is T. - Blipped orbitals can now be distributed across a group of CPUs when there is not enough memory to store all of the orbitals on a single CPU. This feature can be invoked by setting 'num_cpus_in_group' (integer) in the input file. Allowed values are 1,2,4,8,16,32,64,128,256,512,1024. The default is 1. The answers one obtains from runs with the same number of total CPUs but with different values of 'num_cpus_in_group' should be the same to within machine precision. - When using blips, binary files will be created in the run directory the first time any type of CASINO calculation is performed if 'write_binary_blips' (logical) is set to T in the input file. The default value of 'write_binary_blips' is T. The number of binary files created will equal 'num_cpus_in_group'. The next time another CASINO calculation is performed in the directory that contains these binary files bwfn.data.b* CASINO will read these binary files rather than the file bwfn.data. These binary files should be deleted or moved to another directory when one changes the computer architecture or the value of 'num_cpus_in_group' changes in the input file. To avoid potential problems binary files are not created if you specify MDET information in bwfn.data. If you want binary files to be created specify the MDET information instead in correlation.data. If MDET is changed in correlation.data then as a precaution the user should delete any existing bwfn.data.b* files in the run directory. More extensive checking can be added later. 209. [RQH] When using the MPC interaction for the electrons in systems that have periodic boundary conditions in 3 dimensions the user can use a blip evaluation of the second term in Eq. 130 in the manual of CASINO 2.1, rather than using the plane-wave evaluation, if the option 'blip_mpc' is set to T in the input file. Tests in VMC show that the blip and plane-wave evaluation of MPC yield results that are the same to within 8 or 9 significant digits. I use ecut_fac=3. Depending on the system, setting 'blip_mpc' to T can significantly increase the speed of the calculation. For example DMC in a system with 256 aluminium atoms using blip_mpc=T results in a three-fold speed up of the entire DMC calculation. The default value of 'blip_mpc' is F. 208. [PLR] Varmin was not broadcasting the final set of parameters to the slave nodes, resulting in bad post-varmin VMC runs. Fixed. 207. [PLR] Fixed problem with uninitialized '*jasdetail_sz' in jastrow.f90. Fixed problem with accessing 'temp_is_redundant' just after its deallocation in emin.f90 206. [PLR] Integrated EMIN and VARMIN into new code structure. Notes: - VARMIN_LINJAS will follow shortly, along with analytical derivatives for VARMIN and EMIN. - Parameter handling now goes through WFN_UTILS exclusively (save for VARMIN_LINJAS). The optimization routines can access all the required properties of the parameters via GET_PARAMS, and decide which ones not to optimize (if any) by passing an IGNORE vector to the relevant routines. This replaces the previous implementation of cutoff fixing used in EMIN. - When calculating derivatives with respect to the parameters, the code now loops over configurations and then over parameters, as was done in EMIN. - VM_DERIV_BUFFER and VM_DIST_BUFFER are redundant: the ability to buffer bits of the wave function is now built into the relevant modules, and buffering distances is less of an advantage with the new loop ordering. - Pretty much everything in the config.in file is ignored, the needed data are recalculated instead. The CONFIGS module will be rewritten soon. - By construction, the code will now recalculate the core polarization contributions whenever the non-local energy is not fixed (VARMIN used to ignore this). - This fixes a problem with reweighted-varmin runs (bad weights for Jastrow parameters; I don't know what the source of this was exactly). - Removed DBAR_MATRICES, DRIFTVECTOR and LOCAL_ENERGY, as well as some of the routines in NON_LOCAL. - Parameter monitor now uses two characters to label parameter sections, and labels the different Jastrow and backflow terms. Practical notes: - The speed of the optimization code may have dropped for some cases. This will be improved soon. - The code is now some 3,900 lines shorter. 205. [PLR] Removed configuration re-centring routine and flag. 204. [PLR] Moved some of the backflow arrays to SLATER_BF. More backflow rearrangements to follow. 203. [PLR] Added QMC_IDs 'nicte' and 'hemera' for QMC_ARCH linuxpc-ifort-pbs-parallel. 202. [PLR] Added a -time flag to autotest to make it compare CPU times. 201. [PLR] Expot now allows specifying which particle types are affected by which potential. This is specified as, e.g., START SET 1 Particle types 1 2 (...) The value 'All' is also understood. IMPORTANT: the version number of the expot file is now 2 (due to the change in format). Older files can still be used, as long as they are specify they are version 1. 200. [PLR] Fixed a bug with skipping over lines when reading expot.data in EXWFDET. 199. [PLR] Fixed small bug in varmin which gave bad Jacobians in reweighted varmin due to bad weight normalization. Introduced probably by me in v2.1. 198. [NDD] Fixed problem with MPC in dmc.f90 which occurred as follows: the new i_eloc_def label always refers to the Ewald interaction while the old "leloc" label in dmc.f90 which it replaced referred to the total energy with whichever interaction was being used for propagation. However i_eloc_def was still used to define ebest, irrespective of the interaction. This meant that ebest would be evaluated with the wrong interaction, and you would see weird behaviour in DMC when using MPC. This error presumably introduced in patch 151. [Symptom pointed out by Ken Esler]. 197. [NDD] Changed qmc_plotter again so that the same non-local grid is used on each processor for energy plots (otherwise you would see jumps between regions handled by two different nodes). 196. [NDD] Modified monte_carlo.f90 in order to parallelise qmc_plotter. The plot-points are divided between the processors. 195. [NDD] Changed CASINO to halt with an error instead of just printing a warning if some atoms are not included in any chi, f, mu or Phi set. However, this behaviour can be overridden by setting allow_nochi_atoms = T in the input file, so that someone who knows what he is doing can carry out calculations in which some atoms do not have chi terms, etc. Most users will not need to know about this keyword, however. 194. [NDD] Corrected bug in free_orbs.f90 affecting biex3 wave functions in parallel. Added lots of extra traps for r/=0 before evaluating 1/r to jastrow.f90. 193. [NN] Turned orb_norm into a global variable located in store.f90. 192. [NDD] Minor correction to backflow.f90 to stop compilers complaining under certain circumstances. 191. [NDD] Fixed a bug in jastrow_assess_check_kinetic in jastrow.f90 which affected systems in which some ions do not belong to a chi or f set. 190. [NDD] A user encountered problems caused by the maximum representable integer being exceeded in dmc.f90, so Pablo suggested replacing real(i*j) by real(i)*real(j) at the appropriate point. I've tried to make vmc.f90 and dmc.f90 more robust against integer overflows, and I've added traps for iteration numbers etc exceeding the maximum representable integer. (The maximum representable integer is just over two billion.) 189. [NDD] Rearranged the order in which things are printed out in reblock.f90, so that the most important things are printed last. The new order is: DMC population, acceptance ratio and effective time step data, then basic analysis of total energy, then analysis by thirds, then correlation-time analysis, then reblocking analysis, and finally all the energy components with reblocked error bars are printed out. BTW, I find it useful to define alias reblock="reblock 2>&1 | tee reblock.results" so that the results of reblocking are stored in reblock.results. 188. [RML] Fixed a bug which made it possible to violate the cusp conditions when using BIEX1 or BIEX3. 187. Minor correction to print out of nn repulsion. 186. [PLR] Patches 180-182 broke all the examples. Fixed. 185. [AB] New force estimator inserted in DMC forces that includes the nodal term and has the favourable zero-variance property. 184. [AB] Forces routines rewritten so that all 22 parts required to calculated the atomic forces expressions are written out into the vmc.hist/dmc.hist file. Before that change, some parts were combined before being written out. This new way allows for a more general output but requires slightly more storage. 183. [AB] CASINO manual updated: put forces into their own chapter, explaining VMC/DMC force estimators written out by CASINO explicitly. 182. [RML] Added safety/bug checks for changes made in patch 180. 181. [RML] Modifications to runqmc script in patch 180 were incorrect. Fixed. 180. [RML] Added a new keyword, FIX_HOLES (Boolean), to allow the choice between fixing the hole positions or the exciton centres of mass when using BIEX3. Both constraints use the same interaction, biex3pot, but have different jastrow factors (the new one being biex3_holes_jas). xx_sep is now the exciton-exciton separation (replacing rx_com). Made relevant changes to runqmc script. 179. [NN] Flush the random-number buffer so that the RNG state is restored identically when continuing a run so we can reproduce a VMC run exactly block-by-block. 178. [NDD]. Modified format descriptor for dtvmc variable so that the VMC time step can be printed out for low-density HEGs, where it may be hundreds of a.u. 177. [NDD] Modified vmc.f90 to report the maximum distance from the centre of mass in aperiodic systems without nuclei. 176. [AB] * Update of manual: new subchapter about atomic forces under chapter expectation values in CASINO, and new chapter on future walking. 175. [NN] Two changes to the VMC variance calculation: (i) Correct the calculation of the variance in VMC in the case of serial correlation smaller than nvmcave. Previously, the correction of the variance estimator bias correction assumed uncorrelated samples, slightly underestimating the variance in the case of serial correlation. (ii) Compute and print an estimate the error of the variance of E_loc within each block. This estimate is based on the assumption of normally distributed local energy, so it should not be taken too seriously. Still, it gives a simple, immediate feedback during a VMC run without the need for block averaging. These two changes do not affect varmin, but only the summary. 174. [NN] Bugfix in the Jastrow f-term constraints. Bug affected calculations with duplication of u and chi forbidden (which nobody should use anyway) and was introduced in CASINO 2.1. 173. [MDB] Update to the manual for energy minimization: 6.3.1 Updated for emin. 7.4 Updated some keywords for emin. 7.5.2 Made clear that the behaviour "blank parameters -> use HF wavefunction" applies to all optimisations. 26 Total rewrite. 28.2.1 Removed caveats about emin not being able to do complex wavefunctions. Note that I have written this manual update as though emin can optimize complex wavefunctions. It cannot do this yet in the code, although I think the algebra is worked out and it's just a case of putting it in. In ~casino/documents/mdb37 (where my thesis and the QMCDG talk on emin can be found) there is now a directory called "Leaving_notes" where I've put two documents. One is on how to use energy minimisation to optimise complex wavefunctions, and the other is on ideas for optimising cutoff parameters using energy minimisation. 172. [NDD] Fixed problem with readgw routine for gaussian polymers in parallel. 171. [NDD] Modified expval_average utility to allow weighted averages. Hence one can e.g. evaluate the total PCF using results for the up-up, up-dn and dn-dn PCFs. 170. [NDD] Modified local_energy.f90 and slater_bf.f90 files. Fixed a bug affecting multideterminant calculations with backflow and complex wave functions: the imaginary part of fi_prod_detsq wasn't calculated. 169. [NN/NDD] Patch 168 led the code to segfault in cases other than HEG. Fixed. 168. [NDD] Modified free_orbs.f90 and monte_carlo.f90 with a few bug-fixes for excited-state HEG calculations. I have removed "additions" and "subtractions"; these can instead be specified using promotions. 167. [NDD] Modified various routines to allow the use of chi terms in biex3 calculations. 166. [NDD] Modified qmc_plot function so that we don't get weird results when plotting biexciton wave functions. 165. [NDD] Slight modification to vmc.f90 so that VMC uses the same units as DMC, reblock, ve, etc. for aperiodic electron gases. 164. [PLR/AB] Forces require drift vectors during wfn-ratio evaluation only for undisplaced nuclei. This evaluation was indeed being skipped, but the drift-vector arrays were being allocated anyway. Fixed. 163. [PLR/NDD] Fixed problem with BIEX3, whose particle coordinates must not be recentred. 162. [PLR] Further structural changes in addition to 151 below, this time tidying up things below WFN_UTILS in the hierarchy: - Split SLATER into SLATER and SLATER_BF. Moved GELIM etc to NUMERICAL. - Arrays SMAT, DSMAT, etc are now indexed so that RPSI, GRAD, etc are contiguous (except for row-wise RPSIs in pairing wfns, clearly). Pointers to array sections are now used to simplify calls to routines like WFDET. - Moved all knowledge of specific wfn parts from WFN_UTILS to their respective modules (SLATER, SLATER_BF and JASTROW) - Created a new SCRATCH module, a bottom-level module which holds scratch-space information and setup routines, and handles the geometrical data in them (RELE, SELE, EEVECS etc) - From the above follows that WFN_UTILS is now a mere collection of wrappers around other bits of the code, whereas SLATER etc now hold (pretty much) all the the wfn information and procedures in a self-contained fashion. - DMC configurations now defined in DMC instead of CONFIGS. The 'configuration' derived type in turn consists of three derived types (geometry, wfn and method) whose components are only known and handled by the appropriate module. The configuration list is now a two-way linked list, which simplifies some things a tiny little bit. NB, new configurations are now systematically appended to the end of the list, so the random-number sequence for DMC calculations with branching will be affected. 161. [PLR] Fixed a (harmless) problem with an uninitialized array in free_orbs.f90. Fixed a problem with dmult being used outside the loop over configurations in weighted DMC runs. 160. [PLR] Further improvements to autotest. Most importantly, system files are now copied once and linked for each test, and gmon.out files are deleted, so one doesn't need half a GB of disk space to run the test suite. Also added '-error' and '-mismatch' flags to run only those calculations which resulted in an error or didn't match the library output in a previous run. Empty files are used to flag errors, mismatches and unfinished tests (which also improves the behaviour of '-missing'). 159. [PLR] qmc_make now checks for cyclic dependencies before writing the Makefile, and prints a list of the source files in compilation order to prove that it knows what it's talking about. Removed the --nomods flag since qmc_make can decide what to do based on the contents of the existing Makefile. 158. [PLR] Added a '-gdb' flag to runqmc to pass CASINO through the GNU debugger in interactive mode. In parallel runs on SMP machines, this is accomplished by launching each gdb in a separate xterm (ie, executing something of the form "mpirun xterm bash gdb casino" instead of "mpirun casino"), with the restriction that DISPLAY must be *:0.0 (ie, CASINO is to run on the same computer as the X server). NB, in my opinion the usefulness of gdb for Fortran is rather limited. 157. [NDD] Modified tcm_comps utility. The script will now update the list of computers itself if you use the "-update" flag. 156. [NDD] In VMC twist averaging, changed vmc.f90 so that twist angles used in the first block are random, rather than just being whatever the user has specified (usually zero). 155. [MDB] Current semi-orthogonalisation method in emin can fail under certain circumstances, and might make things worse rather than better. The fix is just a sign change applied when required - done. 154. [RML] Added a normalization factor for the biex3 biexciton wavefunction. 153. [NDD] Modified blip.f90 to report error bars on the overlap estimate. (Requested by Ken Jordan.) 152. [PLR] Last minute change to previous patches broken some test cases. Now fixed. 151. [PLR] Changed structure of the code so as to make it more strictly modular: - Wave-function operations (wfn. ratios, drift vectors, Jastrow buffering, etc) now handled by WFN_UTILS module. This module is now an important node in the dependency tree. It provides storage ('scratch spaces') for handling one configuration, or (more commonly) a small number of them simultaneously. - Local energies now calculated in ENERGY_UTILS module in a much cleaner manner than they were. - Both WFN_UTILS and ENERGY_UTILS are capable of remembering what they have computed already and re-use it automagically. - Merged DBAR_MATRICES, DRIFTVECTOR and most of LOCAL_ENERGY into SLATER, which provides all the routines required for Slater, Slater-pairing, Slater-backflow, and Slater-pairing-backflow wave functions. - Removed wave-function and energy calculation bits from DMC, VMC, NON_LOCAL, EXPVAL, ATOMIC_FORCES and MONTE_CARLO modules. - Many other little tidy-up changes (e.g. POINTS not called from EQUILIBRATION, gathered a few DMC things in subroutines to de-clutter DMC_MAIN, moved OBUF, JBUF and the config-transfer bit of DMC into CONFIGS, etc...). - Some bugs fixed: - TBDM and condensate fraction accumulation handled the Jastrow factor incorrectly, resulting in small (but existing) errors. - Jastrow-less DMC method 1 gave wrong energies due to not updating the e-e distances correctly after each electron move. - Orbital buffers for DMC method 1 with pairing didn't work, giving wrong drift vectors. - Mishandling of DSMAT in backflow-pairing DMC method 1, giving wrong drift vectors. - Other minor things which wouldn't have caused problems (e.g. wrong accumulation of BIEX3POT with MPC, VALJAS not written for VMC method 2, etc.) NOTE: VARMIN and EMIN haven't been integrated into this scheme yet. Thus the old DBAR_MATRICES, DRIFTVECTOR, LOCAL_ENERGY and obsolete routines in NON_LOCAL are still in use. EMIN temporarily hosts old CONFIG_ENERGY routine, removed from the CONFIGS module. NOTE2: this is a large change involving 13,000+ lines of modified code, so expect some issues while the structure settles down. The code passes the autotest nicely (including .hist, expval.data and *plot.dat files), which is excellent but not a 100% guarantee. I may have forgotten to update some of the comments in the code. NOTE3: the previous code was pretty optimal speed-wise. These changes introduce an additional overhead due to book-keeping which I would expect to scale linearly with system size N at worst, so they should become less important as N increases and the N^3 term takes over. My benchmark suite (four tests which I use to measure relative performances for the wherejob script) shows the speed has dropped by 14% (runs take 16% longer to complete). Which is not a big deal: according to Moore's Law this will be compensated for with 4 months of CPU evolution. Anyway the speed aspect will be worked on soon. NOTE4: The random-number stream has changed: an acceptance probability of 1.0 doesn't leave one much choice but to accept the move, in which case it is reasonable to save the random number for later on. 150. [PLR] In connection with wave function disappearing from the main method modules, DBARRC changes its meaning slightly: DBAR matrices are recalculated after every DBARRC*NETOT updates (NETOT = total number of particles), instead of every DBARRC (attempted) configuration moves. On average the recalculation rate is unchanged in DMC and halved in VMC. It would be good to investigate what the rate should be according to how the errors behave with respect to system (or determinant) size and number of updates. 149. [PLR] Removed VMC method 2. SDW calcs can now use VMC method 3. Forces can be calculated in the presence of backflow (the same restrictions as for backflow-less calculations apply: molecular Gaussians only, etc). Relativistic corrections for closed-shell atoms can be calculated in the presence of backflow. This reduces the non-applicability of backflow (at least according to the error traps in MONTE_CARLO) to the use of screened Gaussians since they don't have the SDERIVS coded. 148. [PLR] EXPVAL now has a single interfacing routine - ACCUMULATE_EXPVALS. Gathered a myriad of Fourier-basis-accumulating loops into one routine. Pi-weights now applied to all expectation values. *_DMC arrays not used unless Pi-weighting is on. As pointed out by John Jumper, EXPVAL should return the local expectation values so that the accumulation, which is method-dependent, can be carried out in VMC/DMC/RMC. Later. 147. [PLR] Split UTILITIES into FORMAT_UTILS and FILE_UTILS, and merged ERRSTOP routines and TIMER_MODULE into RUN_CONTROL. Thanks to this, implemented a traceback facility which uses the timer labels to report the point in the calculation at which ERRSTOP was called (even if TIMING_INFO=F), which should help with debugging and reporting bugs. A map of the routine call structure is produced if the internal flag DEBUG_STRUCTURE is set (the lines produced have a '+' sign at the start so that one can grep them out). Added printout of unaccounted-for time in final timer report, to aid people who have difficulties with subtracting, and added printout of the fraction of CPU time of an element relative to its parent's total. Moved QMC_BARRIER and CHECKMPI to PARALLEL. Updated the relevant utilities which link to ESDF to account for these changes. 146. [PLR] Protected/limited exponentials now done in EXP_PROTECT and EXP_LIMIT in the NUMERICAL module. 145. [PLR] ESDF arrays now deallocated after reading input file, freeing a couple of MB of keyword descriptions and unnecessary stuff. ESDF_KEY now uses a linked list to build the keyword list, which is a bit more elegant as it only uses the precise amount of memory it needs. 144. [PLR] Rearranged the way AUTOTEST examples are arranged, so that the input/output/library files are kept in separate trees, saving all output files and thus allowing for detailed comparison of runs, and for easily re-running by hand in necessary. Made test-selection more flexible by unrestricting the use of -not and -only, e.g. '-only carbon_atom biex1 sdw/varmin -not carbon_atom/dmc emin_bf'. Added a '-missing' option to run tests only if they haven't been run before. Modified a few test examples to account for the removal of VMC method 2 etc. 143. [PLR] Fixed a BLISS glitch. 142. [PLR] RUNQMC now knows about the existence and requirements of BIEX3. 141. [PLR] QMC_PLOT now forces the user to run on a single processor, since it is immoral to load the CASINO binary on many nodes just to remain idle and exit. 140. [NDD] Wrote script "twistav" for carrying out twist averaging using CASTEP and CASINO. It runs CASTEP, CASTEP2CASINO, BLIP and CASINO, then offsets the grid of k vectors randomly and starts again. The CASTEP and CASINO output files are put in directories called twist0001, twist0002, etc. The progress of the calculation is reported in the STATUS file. All the necessary CASTEP and CASINO input files must be set up in the directory in which the calculation is run. The complete list of k vectors must be specified (i.e. both members of a +/-k pair must be given), and complex_wf must be T in the input file. The script uses runqmc to run the CASINO calculations. If the script is being used on a machine with a queueing system then the -batch flag should be set and the command for running CASINO should be specified with e.g. -casino "runqmc nnodes 4 time 00:05:00". The script doesn't currently let you submit the CASTEP jobs to a queueing system, but the CASTEP runs are relatively quick. The script requires the attached program "twistoffset.f90" to generate the random offset to the k-vector grid. (This program is intended to be run by the twistav script, not by humans.) There is also a short script called "clearup_twistav", for getting rid of the results of a twist-averaging run. 139. [NN] Made main data array in nl2itr (in nl2sol.f90) allocated on heap to prevent stack overflow in case of large number of configurations. 138. [AB] Removed constraints on number of atoms in reblock utility. Further tidy up. 137. Fixed error in reblock utility when handling forces (presumably from patch 134 - forces reblocking could never have worked). Slight clean up of reblock and a few other utilities. 136. [NDD] Modified clearup utility to get rid of emin's .out_discard files. 135. [NDD] Updated tcm_comps utility. 134. [AB] Atomic force routines and utilities generalized to allow an arbitrary number of atoms. 133. [RML] Added biex3 parameter read-in and checks to monte_carlo.f90 132. [NDD] Minor modification to error message in runqmc script. 131. Update license documents for 2.2. version. 130. [NDD] Modified blip so that the user is asked for the number of points to use in the overlap test. I'd suggest ~10,000. (The current default of 100 is much too low, and the test gives dodgy results for benzene; however, the test takes longer when more random points are used.) 129. [RC] Modified gaussiantoqmc utility to read CAS wave functions generated using modern versions of Gaussian (which have slightly modified output files compared to older versions). 128. [NDD] Put a "if(chi_squared_sf/=0)" before the write-out of the chi^2 value in write_out_vmc.f90 in vmc.f90. Added a "write(o,*)" after the FS data has been written out (so there is a space between the FS corr. info and the variance). Finsize utility required use_backflow and use_jastrow to be present in the input file, but didn't actually seem to use them anywhere therefore I've dropped the requirement that these be present. Also the write-out of chi^2 is now skipped if chi^2=0. Finally, the write-out of chi^2 is also now skipped if chi^2=0 in dmc.f90. 127. [NDD] Modified plot_expval with an "if(x==y)" replaced by "if(abs(x-y)' to be used, as there is no 'budgets' command to determine this like in HPCx. The PathScale compiler is recommended on this machine, as it has AMD processors; mind that the default modules include the PGI (pgf) compiler, not the PathScale one. NB, gfortran 4.1.2 chokes (internal compiler error) on atomic_forces.f90, at least on Hector. 84. [PLR] Fixed a bug in the complex version of update_dbar for pairing wave functions, which is currently unused (but is going to be used shortly). 83. [PLR] Clearup utility was taking too long to do its job. Fixed. Minor changes to wherejob. [BUT SEE PATCH 94]. 82. [JRT] Fixed a problem with parallel emin runs, where 'succ' from emin_change_params was always .true. on slave nodes. 81. [PLR/JRT] Fixed a problem with runqmc on darwin. The PBS resource manager apparently doesn't like output from mpirun being redirected, as it currently was. Now the output is managed as it is supposed to. This involves output files being written to in $HOME (sorry, this is the only way for PBS to flush stdout/stderr real-time). The script should produce a link in the appropriate directory during the run, and move the actual file at the end --provided it doesn't overrun the time limit. 80. [PLR] CHECKPOINT=1 should produce checkpoint files after each block in vmc-only runs, but it wasn't doing so. Fixed. 79. Removed patch 77 in quiet desperation. DA says he will try to wangle us a login ID on hector so we can do this for him. Number of emails exchanged up to this point : 12. [SEE PATCH 85] 78. DA has complained that the previous patch doesn't work. Let's wait and see what happens now. 77. Added hector.inc include file for new Cray XT4 national facility at Edinburgh. Not tested - file sent by DA so obviously it won't work. ;-) 76. Recreated last known distribution following accidental deletion of the main files. Hopefully it matches correctly with patch 75. Let me know if not. 75. [PLR/AB] Problem with parallel initialization of forces fixed. 74. [PLR] Further fix for bliss' key buffer (patch 50 below). bliss -testkeys will allow one to test whether keys are correctly recognized. Also fixed a minor problem with casino_update when exporting an entire distribution. 73. [PLR] Fixed a number of recent bugs associated with patches 67, 69 and some unadvertised modification to eval_geometry from around patch 65 which had broken most runs in the autotest suite. NB, the forces example still fails, but AB will fix that. 72. [PLR] Fixed a problem with 3-body Jastrow terms which caused config-by-config VMC and DMC runs and EMIN not to work correctly when these were present. 71. [PLR] Restored a section of history.f90 accidentally deleted by patch 70. 70. [AB] Various minor corrections to patch 63 (forces). Keyword CALC_FORCES changed to FORCES. Keyword FORCES_INFO to change output verbosity. Automatic detection of axis and number of atoms. Added ability to analyse the symmetry and suggest rotating the system if that would improve the efficiency. New forces example for TEST directory [not totally satisfactory as forces output goes into vmc.hist, which autotest ignores in its comparisons]. Took out writing statements from slave nodes. Tidying up. 69. [PLR] Fixed problem with patch 60 below, where I had forgotten to modify the backflow version of the momentum density routine, and had made a silly (but critical) typo in the Slater-Jastrow version. Also fixed a bad array index pointed out by NDD. 68. [PLR] A very noticeable slowdown of the code due to i/o and parallel communication during config write has been reported by DA and JRT. Fixed this by adding a CHECKPOINT input keyword, whose default value (1) prevents VMC from writing configurations out after each block. If CHECKPOINT is set to 2 the old behaviour is adhered to, and when set to 0 the config.out file is not written until the end of the entire run, for continuation purposes. Notice that TRIP_POPN>0 requires CHECKPOINT>0; the value of CHECKPOINT is automatically set to 1 if this is not so. Also removed unnecessary config files during EMIN's embedded VMC runs. 67. [PLR] Added a BIEX2 Jastrow term, which is a simplification of the BIEX1 term with just 4 parameters and support for 1D, 2D and 3D systems. Made both of these properly bufferable in varmin/madmin. Some bugfixes for finite systems without atoms. 66. [PLR] Fixed a problem with forces patch (63 below) spotted by NDD. This was going to be fixed by AB, but it crashes any run with more than one VMC cycle in it, so we need this fixed as soon as possible. Fixed another issue with patch 63 by which reblock.f90 wouldn't compile under a strict f90 compiler ['if(flag==.true.)' error]. 65. [NDD] Couple of minor changes to clearup utility. 64. [NDD] Produced updated version of autotest. Added some checks of new features added in the last couple of months. Also made some of the examples run more quickly. 63. [AB] Preliminary implementation of VMC forces. Controlled by new keyword CALC_FORCES. Notes: - There are several variables in geometry.f90 to limit the number of axis and atoms along/for which the forces should be evaluated in order to speed up calculations. They only need to be changed rarely. (MDT NOTE : should be generalized - users shouldn't be editing the source code). - the forces code will generate customized labels in the vmc.hist file to specify the different force estimators or parts of them. These customized labels will then be recognized by a modified reblock.f90. - The vmc.hist file can now become really wide (in terms of columns) when forces for several atoms are calculated. Each atom can result in 18 columns if all forces/Pulay/test items are calculated. In practice, one can limit the number of columns depending on the geometry of the molecule and info_forces level. So far I have not yet increased the limit of 640 character per line (~27 columns). I will do this when I deal with the DMC algorithm. - In some places, the variable declaration can be made more general as I have limited the forces algorithm to simultaneously evaluate forces at no more than nine atoms. I will do this generalization later. - I introduced a variable INFO_FORCES to classify different degrees of output depending on the knowledge and interest. Currently, I put info_forces into store.f90 as I did not want to give it a new flag. And I hardwired INFO_FORCES to its highest value 5. However, since Matt uses the flag opt_info for his emin method, I thought it may be sensible to merge my info_forces flag with his opt_info flag. (MDT NOTE : this needs to be under control of the user. Make INFO_FORCES into new keyword FORCES_INFO (no need to confuse with OPT_INFO). 62. [DA] Reimplemented patch 24 for the blip.f90 utility. 61. [NDD] Modified jastrow.f90 in order to improve the model u(k) used to calculate the finite-size correction in 2D and the "alternative" finite-size correction in 3D. In 2D I now use u(k)=-a/k^(3/2)-b/k and in 3D I use u(k)=-4.pi(A/k^2-B/k). 60. [PLR] Fixed a problem with the accumulation of the momentum density. The random displacements are now generated in the entire cell rather than inside the Wigner-Seitz radius. 59. [PLR] Flagged CALC_VARIANCE as redundant. The VMC variance is now always displayed. Shortened descriptions for redundant keywords. 58. [PLR] Implemented a full three-body Jastrow term which I've called H (NB, we're running out of letters in the latin and greek alphabet to name things). The spin-triplet dependences are NOT generated automatically, they must be supplied in the new CUSTOM_STRIPLET_DEP input block (see casinohelp for info). The H and W terms cannot be used at the same time. 57. [PLR] Ability to simulate infinite-mass particles: set the particle mass to 'heavy' in the 'particles' block in the input file. Most routines should use 'inv_pmass' instead of 'pmass' for computing things, to avoid problems (this is currently so). 56. [PLR] Merged OBDM and momentum density accumulation routines, to save time when both are being computed at once. A problem with the accumulation of the momentum density is still to be fixed. 55. [PLR] Fixed a bug caused by the implementation of the BIEX1 'Jastrow' term. Varmin's KE buffering was broken. Now fixed, and also added the ability to buffer the U term when BIEX1 is present. 54. [PLR] Fixed a problem with format_configs. 53. [PLR] Fixed bug in plot_expval by which the OBDM/TBDM/condensate fraction would be plotted against an incorrect grid of points in 3D. 52. [PLR] Made 've' use the units indicated in the output file, instead of trying to work out what the units should be. 51. [PLR] Updated wherejob to gather more information about the CPU model than the name string, which is insufficient. E.g., now the CPU in tcmpc23 is correctly distinguished from that in s1.tcm. 50. [PLR] Fixed bliss' key buffer so that it actually works. 49. [PLR] Updated runqmc so that it allows 'biex1' orbitals. 48. [NDD] Introduced a ndmcave input parameter, which allows one to average over successive lines of DMC data (like nvmcave in VMC). 47. [NDD] Made it possible to use other Jastrow terms in conjunction with the BIEX1 biexciton term, and I have fixed a bug that would have affected DMC method 2 or VMC method 3 calculations for biexcitons. 46. [NDD] Modified CASINO to allow the study of biexcitons using Richard's wave-function form, which I first implemented in an ancient version of CASINO. (See Tan et al, PRB 71, 033303). There is a new BIEX1 Jastrow term, and HEG orbitals can be declared to be of type biex1. Blurb for manual to follow. 45. [AJM] Minor bugfix in error check related to patch 44. 44. [NDD] Added new keyword CORPER_DMC, such that expectation values (other than the energy) should only be calculated every CORPER_DMCth move, to avoid inefficiencies due to serial correlation. 43. Neil has proven the Ewald interaction is exact in 2D, so long as the XC hole is contained in the simulation cell. Finite-size errors in 2D systems are thus entirely due to the kinetic energy, and XC corrections need not be computed. Thus I have now turned off the XC corrections in 2D when FINITE_SIZE_CORR is activated. 42. [MDB] Fixed a bug in determining numerical derivative step sizes when optimising determinant coefficients with emin. The problem had the potential to be serious, although in practice the incorrect step size was unlikely to have ever been 'wrong enough' to cause any trouble. 41. [AJM] Modified reblock utility to work when a manual interaction is present. 40. [PLR]. Added allocation for backflow AE cutoff fixing which was missing in patch 36. 39. [PLR] RUNQMC will now renice mpirun on multiprocessor workstations, on other TCM users' request. The nice value of the CASINO process[es] can now be set using the '-nice' or '-n' option to RUNQMC, rather than being fixed at 15 (which is still the default). 38. [PLR] Moved error-bar-formatting stuff from ve to ve_helper, which should hopefully reduce the annoying delays on busy systems that the calls to 'bc' were causing. Removed obsolete ve_old. 37. [PLR] Manual update describing the Slater pairing orbitals (patch 31). 36. [PLR] Changes to emin: * Improved convergence condition for manipulation constant search, and added a bit of golden-rule search. * Emin will now use no Jastrow in config-generation when an empty Jastrow set is supplied (like varmin), rather than an almost-zero cusp-obeying one, and will be permissive with the outcome of the optimization in order to progress in the first optimization cycle. * Fixed two bugs, one which could force parallel vmc_opt runs into infinite loops (MPI call mismatch) and another causing zero weights in correlated sampling. * The conditions for rejecting the results of an embedded VMC run have been loosened a bit, and only apply to embedded runs with lower energies than the config-generation run. * Added a keyword 'emin_sampling' for users to select whether to use correlated sampling only ('correlated', fast), independent VMC runs only ('fresh', potentially robust) or both selectively ('mixed' [default value], usual algorithm) when finding the optimal manipulation constant. * The 'Optimizable' flags in correlation.out[.*] are not affected by cutoff fixing (whether by emin's redundant-cutoff check or by the use of opt_noctf_cycles>0). Some corrections to the algorithm for choosing which cutoffs are fixed. 35. [PLR] Fixed a bug in vmc.f90 by which the correlation time written to the config.out file was actually its square if NBLOCK=1. 34. [PLR] Added block keyword 'dtvmcs' with which one can supply different VMC timesteps for each particle family, and make each of them optimizable or fixed (overrides DTVMC and OPT_DTVMC). 33. [PLR] Added block keyword 'initial_config' with which one can supply the initial positions of any of the particles in a system at the start of VMC equilibration, overriding the positions given by the 'POINTS' routine. 32. [PLR] Some minor changes to allow non-periodic systems without fixed nuclei. 31. [PLR] Added a 'Slater' type of pairing orbitals [manual entry soon] 30. [PLR] Moved the calculation of the 'Gamma' constant for e-e and e-N cusps from the jastrow module to eval_geometry (ee_kato_Gamma and eN_kato_Gamma). Support for applying the e-e cusp condition on a pairing orbital instead of on the Jastrow factor [no orbital does this yet, though]. 29. [PLR] Minor change to casinohelp output format. 28. [PLR] 've' was failing to display CASINO timings. Fixed. 27. [RQH/MDB] emin update which does the following: (1) A bug is fixed whereby optimising only determinant coefficients did not work in parallel. (2) The existing ability to buffer calls to eval_dbar is now turned on for determinant coefficients. This should have been the case all along, but only makes a difference when backflow is not being used. (3) Buffering of the local potential energy has been added when re-calculating the energy after moving parameters (the local potential depends only on the particle coordinates). No. (2) makes a very large difference to the time taken to calculate derivatives with respect to determinant coefficients, but this speed-up only applies when backflow is not used. (Halved time taken for determinant coefficient derivatives in a tiny test system). No. (3) must cause some speed-up (for all parameters), but on the tiny test I did it was too small to show up. 26. [GGS/PLR] Implemented accumulation of momentum density for homogeneous systems in expval.data. 25. [MDB] config_energy in configs.f90 was broken in two ways: there was no first_call=.false. statement inside the if(first_call) clause, and for which_interaction=0 the kinetic energy was being ignored so that the overall energy was zero. emin.f90 updated to include the same which_interaction=0 fix, and to trap oversmall numerical derivative step sizes for determinant coefficients. 24. [DA] Fixed new bug in blip utility, where for single k-point calculations CASINO always assumed the Gamma point, even if it wasn't. 23. [PLR] Minor updates to some utilities, including a bugfix for wherejob which was somewhat broken. 22. [PLR] Update qmc_make so that it can reconstruct the makefiles in the util directories. This requires the new '--nodeps' flag, and in the cases where extra .f90 files are present in the directory, '--ignore .f90' is also required. qmc_make won't produce the complete makefile if non-F90 files are meant to be compiled [jeep_io.c, lapack_src.f], or if all the needed files are not in the same directory. 21. [MDB] BF AE cutoff redundancy is now dealt with properly (determining when an AE cutoff is redundant is slightly more complicated than in other cases). 20. [MDB] CASINO now prints a warning from read_jastrow and read_backflow if emin is being used, any cutoffs are optimizable, and the truncation order is not 3. 19. [NDD] Modified jastrow.f90 to be able to plot lap(p) along straight lines (using jastrow_plot). This gives us a qualitative understanding of the origin of finite-size errors in the kinetic energy. At large distances the 2-body Jastrow should be 1/r by the RPA, for which the Laplacian is zero. The fact that the 2-body Jastrow must be periodic forces it to deviate from 1/r near the cell boundary, causing the Laplacian to be nonzero. We want to find a correction that removes this contribution to the KE. 18. [PLR] Allow VMC runs to continue on more nodes than the original run used (warning the user). 17. [PLR] Fixed errstop_master so that slave nodes wait when they get to an error, instead of (i) stopping without an error message, as with the previous version of errstop_master, or (ii) ignoring the error and continuing [and possibly crashing elsewhere], as with 'if(am_master)call errstop'. Then fixed a particular instance of (ii) in free_orbs. Using errstop_master instead of 'if(am_master)call errstop' is encouraged. 16. [PLR] Minor bugfixes to format_configs and ve_helper. Removed unused random_gen.f90. 15. [PLR] A couple of bugfixes to runqmc. In particular, now it will search for the CASINO binary in the directory tree where the runqmc script lives (/utils/runqmc/runqmc) rather than assuming =$HOME/CASINO, though it will do the latter if the former search for fails. This allows one to install CASINO anywhere on a filesystem. Hopefully. 14. [PLR] Wrappers for the utilities are now generated in the bin_qmc directory. This means that now the correct PATH to add for CASINO to work would be .../bin_qmc, not .../bin_qmc/utils/$QMC_ARCH. In turn, this means that switching from one QMC_ARCH to another is as easy as changing the value of QMC_ARCH, so this is very convenient. The old PATH will still work, though. 13. [PLR] Redesigned the Makefile system, implying several good things: - Adding a QMC_ARCH or QMC_ID is now simpler, as the amount of data in the include files is minimal [removed FC, LD, AR, MPF90, PATTERN_RULE, targets etc]. - The 'parallel make' feature of e.g. GNU make now works for both the sources and the utils. Type 'make -j' for a compile fest, especially useful in parallel machines. - For consistency, 'make clean' under src now removes the object files only, and 'make vclean' removes the binary as well. 'clean_all' and 'vclean_all' do this for all versions for the current QMC_ARCH. - The object files for the utils are now all stored in utils/zlib, instead of scattered around the tree, and are only deleted when 'make clean' (or 'make vclean') is issued. - IMPORTANT: bin_qmc, src/zlib and utils/zlib can now be symlinks, so you can store large temp files and binaries in a different filesystem. If you're in TCM, you _want_ to link these to somewhere inside rscratch. - The output produced in the make process is neater. I've tried the new system on Linux, Tru64, SunOS and FreeBSD. 12. [PLR] Updated casino_update to be able to generate self-installing packages by embedding itself into the package, included the option of exporting an entire distribution, replaced diff3 by a custom procedure, and introduced 'diff maps' and 'diff3 maps' of changes. Improved bliss in several ways; the cygwin terminal is now fully supported. 11. [PLR] Updated wherejob to improve reliability and to store its computer list inside ~/.casinorc rather than in a separate file. 10. [MDB]. When a cutoff is cutting off a zeroed term, making it a redundant parameter (it has no effect on the energy), it seriously disrupts emin. Now, at each cycle, every term in J, BF and orbs which has a cutoff parameter is checked. If a term is zero, its cutoff parameter is fixed for that cycle (even if it is set to optimizable in correlation.data). (The idea being that the non-cutoff parameters will then be optimised away from zero, so that the cutoff parameter will be made optimizable again at the next cycle). 9. [MDB] A new keyword is introduced: OPT_NOCTF_CYCLES. When set to a positive integer, all cutoffs will be fixed for the last OPT_NOCTF_CYCLES of an optimisation run. E.g. if OPT_CYCLES=10 and OPT_NOCTF_CYCLES=6, CASINO will do 4 cycles with cutoffs either fixed or free as determined by correlation.data, followed by 6 cycles with all cutoffs fixed regardless of correlation.data. This also helps emin, but is of course unnecessary in varmin and madmin. So the default value of this keyword is 0 for non-emin runs, and 50% of OPT_CYCLES (rounding down) for emin runs. 8. NUCLEUS_GF_MODS is set to T by default if the keyword is not included in the input file - even in cases with no all-electron atoms. Prevented a 'WARNING!!' about this default behaviour always being printed - now it is only printed if NUCLEUS_GF_MODS is specifically defined in input. 7. [NDD] changed the default behaviour for some keywords: NEQUIL=5000, CORPER=10, OPT_MAXITER=20, CALC_VARIANCE=T, OPT_CYCLES=4, NEQUIL_TA=500, NMOVE_DMCT_EQUIL=40 and NBLOCK_DMCT_EQUIL=4. Also stopped it complaining about the need for a complex wave function when NUM_DMC_TWISTS>0 but a DMC calculation is not being performed, etc. 6. [NDD] Improved the "moving grid" version of the T-move algorithm in dmc.f90, and have therefore set the parameter tmove_fixgrid=.false. in non_local.f90. The randomisation of the nonlocal integration grid should be a bit better, although this is unlikely to make a measurable difference. 5. [NDD] There turned out to be more to the patch 3 problem than appeared to be the case at first sight. For homogeneous systems, eepot(3) has to be set to (1/2).mpc_constant wherever it is used (vmc.f90, dmc.f90, etc), and ee_potential should not change it. However, eepot has intent(out) from subroutine ee_potential, and NAG was objecting to this. I have changed ee_eval_mpc to return (1/2).mpc_constant and have therefore removed the definitions of eepot(3) from other subroutines in the attached src files. 4. [NDD] Minor improvement to DMC twist averaging: the data used for calculating ebest etc are reset after each twist change instead of being accumulated since the start of statistics accumulation 3. [NDD] Fixed minor problem with MPC interaction for homogeneous systems. [BUT SEE PATCH 5] 2. [MDB] Minor emin update: - Fixed parabolic_min so it gets upset if output points are indistinguishable (could cause an infinite loop otherwise in matrix manipulation). - Put in an error trap for >500 executions of matrix manipulation loop, to prevent any future bugs causing an infinite loop. 1. [MDB] Various changes to emin module : - Determinant coefficients now skip step size determination, because there is no truncation error in their numerical derivatives. - If step size determination fails for other parameters, they are given a (hopefully) more sensible default step size. - Fixed a typo in step size determination routine ('del0=dpsi3'->'del0=del3'). - Removed keywords 'emin_stepsize' and 'emin_svd_cutoff' entirely. - If an optimisation is unsuccessful, and the maximum constant was reached, the minimum constant is lowered for the next iteration (in case it started too high and missed the optimum value). - Removed manual numerical derivative step size testing mode. - VMC energy estimates within emin can now be rejected because of overlarge correlation times or error bars (as well as too-low energies, which was already implemented). - Fixed a bug in the matrix manipulation algorithm whereby if a 'UVW' bracket was rejected, it would make a new 'UV' from the old 'VW' and then look for a new 'W'. This could never work, because the old 'VW' were ascending in energy. - Some other small improvements/fixes to matrix manipulation algorithm. - The parabolic minimiser has been tweaked to avoid errstops cropping up when input points were numerically indistinguishable. - Fiddled with emin_find_lowest_eigvec a bit to give more informative errors/warnings, and prevent CASINO halting on a relatively common, non-fatal error. - Various cosmetic tweaks to user output and code comments. List of changes for CASINO 2.1 ------------------------------ 400. [MDB] Emin makes use of a minimum energy for a system, below which energies/eigenvalues will be regarded as anomalous. This can either be supplied by the user on physical grounds, or automatically estimated based on the vmc configuration-generation run preceding an optimisation. Currently, whichever of the two numbers is higher will be used. This patch changes it so that if a user-supplied number is present, it always overrides the automatically generated number, even if the user's number is lower. The reason for this is that I have encountered examples where the automatic one is too high and impedes the optimisation. The best example is a 16-atom Si diamond, optimising the Jastrow from scratch, i.e. all parameters zeroed and cutoffs default. The optimised energy will be ~-7 hartrees, but the energy with zeroed Jastrow is ~+80 hartrees. The automatic estimate of the minimum energy is ~+70 hartrees, so the optimisation is badly affected. 399. Added expectation value section to the manual and tidied. Noted that future walking, MOLORBS and int_sf sections still to be added, but never mind. 398. [MDB] Previous patch still bugged in parallel. Fixed. 397. [MDB] The recent slew of patches to emin had broken it for the case where matrix manipulation is deactivated. Fixed. 396. [NDD] Modifications to blip.f90, localizer.f90 and bwfdet.f90. Fixed a minor bug affecting localised orbitals with large, parallelepiped-shaped localisation regions (basically it's not appropriate to use the minimum image distance to the centre of the localised orbital to judge whether or not a point lies inside the localisation region). I have also made blip a bit faster, by making the blip-evaluation routines more like the ones in bwfdet.f90. 395. [PLR] Backflow 'sparsity' is now taken into account when computing the kinetic energy, reducing the cost of calculating local energies when backflow is used. This is done regardless of the value of BF_SPARSE. Pairing wave functions not done yet. 394. [PLR] Added QMC_ARCH linuxpc-ifort-lsf-parallel, with supported QMC_ID=tungsten, for machines with an LSF batch queue system. 393. [PLR] Various improvements to emin's internal workings. 392. [PLR] A new keyword OPT_STRICT which defaults to F. When T, all optimisations are halted if the energy increases by more than 3 errorbars for 2 successive iterations (saves cpu time if an optimisation is diverging). 391. [PLR] config.in now stores the overall result of the full vmc run (which may have used a larger number of configs), to give emin access to the most precise VMC results available. 390. [PLR] Dealing with empty initial Jastrow or backflow during optimisation has been tidied a bit, and changed slightly for emin. 389. [NDD] Modified expval.f90 and numerical.f90 so that one can accumulate the "spherical" structure factor in 2D and 1D (homogeneous systems only). 388. [NDD] isdmc_dmc flag was missing in several places in expval.f90 - fixed. 387. [NDD] Modified expval.f90, numerical.f90 and plot_expval.f90, so that one can calculate the spherical structure factor using the method described in PRB 75, 155105. It doesn't yet work in 2D and 1D - I'll finish this soon. In brief tests, it seems to perform very well, except that it doesn't go to 0 at k=0. Gaudoin & Pitarke correct for this by replacing S(k) with the RPA result at small k. 386. [NDD] Fixed problem which caused crash in backflow calculations for Wigner crystals. 385. [PLR] Fixed problem with patch 379 for pairing wave functions with backflow and BF_SPARSE=F. 384. [PLR] Fixed unallocated-array issue with periodic Gaussians when using backflow. 383. [PLR] Prevented output from test_gamma during emin's parameter changes (introduced in patch 381). 382. [NDD] Modified expval.f90 so that the one-particle and two-particle density matrices and the condensate fraction can be accumulated in 1D. Checked current algorithm for the structure factor also works in 1D and 2D, and hence removed the error check which previously prevented this. 381. [PLR] Some playing with emin (all changes seem to have positive effects, but further fine-tuning may be required): (i) Fixed emin issue with Jastrow value buffering. Fixed an infinite loop in emin under certain conditions. Made emin not stop with an error if optimization fails, instead it'll go into the next VMC cycle to see if new configs remove the stall. Fixed a weight normalization problem in emin. Sped up emin by using dcopy etc. Made interfaces of emin with other modules simpler. Rearranged output from emin so that it is more informative at the default opt_info=2. Switched internal flag to use SVD instead of LUD, as the former won't complain if parameters are linearly dependent/redundant. (ii) Added an estimate of the lowest possible ground-state energy so that emin will automatically apply a lower eigenvalue cutoff even if emin_min_energy is not supplied by the user. (iii) Made emin work out derivatives using forward differences, as this requires half the number of evaluations as central differences. All timesteps are now assessed using the first configuration by checking for convergence of the backward- and forward-difference estimates. (iv) Made emin use an initial estimate for the manipulation constant based on the norm of the diagonal of the manipulated matrix, to ease finding the solution [this is yet to be fine-tuned to introduce the entire matrix norm into the estimate]. (v) Made emin prevent cutoff changes larger than 50% of the absolute value of (the internal representation of) the cutoff during matrix manipulation, to avoid optimization problems/crashes. I would recommend that emin become the default optimization method once things settle down a bit. It's a lot faster than varmin, and a lot more accurate too. Most of the above changes aim at robustness, which it failed to achieve in many cases; now it appears to work as happily as varmin. 380. [PLR] Changed format of PAIRING block in FREE_ORBS in correlation.data, so that every function that can be combined linearly with other has its own block, which makes it easier to play with them, as well as extend the PAIRING block further if needed. Now these linear combinations use a simpler normalization convention which removes the (redundant) 'gamma' parameter. Updated manual and examples to account for this. 379. [PLR] Implemented a version of calc_q and update_dbar for backflow, using the Woodbury formula, which is faster than recomputing the entire determinant in cases where the ratio of the number of electrons affected per electron move to the total number of particles is less than ~0.3--0.5. Feature activated using new keyword BF_SPARSE. Major tidy-up of backflow wfn evaluation bits repeated all over the code. (NB, this should make large BF calculations scale as SJ ones when the backflow cutoffs are independent of system size). 378. [PLR] Fixed expval problem with empty expval blocks in parallel machines. 377. [PLR] Fixed an array-size problem which would have made the routines in eval_dbar compute wrong DBARs and dets when using complex wfns for systems with neu /= ned. 376. [PLR] Taught configs.f90 to accumulate the total Jastrow value so that the total wfn can be reconstructed with the information in config.in. Currently unused, but would be useful for embedded VMC runs in emin, and could potentially be used for other things in the future. (This does _not_ make the config files incompatible, as the current format is flexible. However CASINO may refuse to continue an older VMC config accumulation. I don't think anyone needs to do this anyway.) 375. [NDD] Further correction to blip localized orbitals. 374. [NDD] Added new 16-atom silicon example with localized orbitals to examples/crystal/localized/silicon_loc. Deleted old localized orbital example in CASINO/examples/molecule/localized as its input files are obsolete. 373. [NDD] Evaluation of non-local pseudopotential energy with localized truncated orbitals was broken. Modified source so that hit_array is passed as an argument of wfdet, calc_q and update_dbar. This should make it more difficult to break. The idea is that the wave-function evaluation routines (at present only bwfdet) determine whether an orbital is 0, and so the array specifying which orbitals are nonzero should be passed around with rpsi. Also eliminated the loc_orbs.f90 module : its contents are now in store.f90 and monte_carlo.f90. 372. [NDD] Minor change to blip & localizer utilities to prevent over-long titles from spilling onto two lines when the title is copied from pwfn.data to pwfn.data.localized or bwfn.data. 371. [NDD] The autotest utility will no longer flag differences in the version number as discrepancies between old and new output files (since the version number now changes very frequently). 370. [NDD] Modified source so that blips can be read on the master processor and then broadcast (instead of being read on every processor). To switch between the two methods, change the hardwired parameter all_procs_read in bwfdet.f90. It is set to F at present, meaning that the read-on-master-and-broadcast algorithm will be used. 369. [PLR] Replaced LAPACK with a set of routines in numerical.f90 (SVD, eigenvalue calculation, etc). This removes the inconvenience of having to deal with fortran 77 sources at all, allowing full optimization and reducing the chances of compilers breaking. Tests comparing the new routines and the ones in LAPACK were run: for random matrices the difference in the results is very small (basically just rounding errors), and no difference was found in emin calculations. Also removed F77 flags from make include files. 368. [PLR] Slightly modified various aspects regarding varmin optimization monitoring. E.g., now it prints the parameters before computing the variance (in case it crashes), prints a letter (J=jastrow, D=det. coeffs., O=orbitals, B=backflow) to indicate where each section starts in the param list, etc. 367. [MDB] Changed emin's numerical derivatives calculation to use a variable step size which is a fraction of the parameter value, rather than a fixed step size. Correspondingly, the meaning of the keyword EMIN_STEPSIZE has changed (the description has been changed accordingly in esdf_key.f90). Should fix a problem identified with 2D Wigner crystals. 366. Eliminated XC_CORR_METHOD=2 (polynomial fitting of structure factor for calculation of XC finize size correction) from expval.f90 and the finsize utility on account of not being sufficiently accurate. Renamed XC_CORR_METHOD=3 (non-linear exponential fit to structure factor) to XC_CORR_METHOD=2. Implemented the latter in the finsize utility. 365. [MDB] Fixed a tiny problem with emin. When doing the first correlated energy estimate (for manipulation constant 0.0) emin should always generate a new configuration set. For 2nd and subsequent iterations, it was trying to use the config set from the between-iterations VMC run. It would always find it to be useless, so this update doesn't change any results, it just makes things minutely faster. 364. Some more XC finite-size effect improvements. Accuracy still not good enough - working on it. 363. [AJM] Updated the manual for the inclusion of polynomial pairing wave- functions. Also clarified the manual interaction section. 362. New nonlinear fit for structure factor using fitting function [1-exp(\sum_i a_i*k^i)] * [1 + \sum j a_j*k^k ]. This to replace the fit implemented in patch 54, where the fitting function was by definition not allowed to have a value greater than 1 - unlike the structure factor! Report on XC finite-size correction with this new fit to follow. 361. [PLR] Fixed a problem with optimizing polynomial+plane-wave pairing orbitals. 360. [PLR] The modification that allowed users to use an expval.data file with an 'empty' EXPVAL block (i.e., without the system data in it) was deleted by mistake at some point after it was introduced in patch 124. Reinstated. 359. [MDB] Small update to let emin know whether the cutoff length in polynomial pairing orbitals is being optimised. 358. [MDB] Fixed bug in emin where it was comparing energies with different units (it wasn't doing energies per particle for electron gases). 357. Implemented numerical integral of fitted non-linear function from patch 354 in order to get a third way of calculating the XC finite size effect. Reports on accuracy to follow. 356. Added Gauss-Legendre quadrature functionality to numerical module. 355. [MDB] Minor bugfix for VMC emin. 354. Implemented new nonlinear fit to structure factor using fitting function 1-exp(\sum_i a_i*k^i) in attempt to solve accuracy problems with XC finite size effect (XC_CORR_METHOD=3). 353. [MDB] This small update adds a new keyword, EMIN_MIN_ENERGY. If present in the input file, this defines a minimum energy threshold below which eigenvalues will be ignored, as will energy estimates. It's useful because bad initial wavefunctions can produce 'mad' eigenvalues and/or energy estimates, but if these are ignored the optimisation can still progress well. The user should set this parameter slightly lower than the best energy they would expect to get from their wavefunction. If the keyword isn't present in the input file, the functionality is disabled. 352. Spin density part of the structure factor was accidentally declared as a real rather than a complex array in the plot_expval.f90 utility (meaning that structure factors would be plotted incorrectly for systems without inversion symmetry). Similar problem in the finsize utility. Fixed. 351. [AJM] Implemented polynomial pairing orbitals, activated by setting the pairing type to 'polynomial' in the FREE_ORBS > PAIRING section of correlation.data. Also implemented a 'polynomial+plane-wave' pairing orbital. Modifications to the manual will follow. 350. [PLR] Hunted down a mysterious bug to do with polynomial pairing. 349. [NDD] Modified manual to reflect patch 313. 348. Modified finsize utility in same way as 346. 347. Added new (very simple) algorithm for XC finite size corrections which only involves fitting to the structure factor at the first non-zero k point (!). Undocumented keyword XC_CORR_METHOD to switch between the various methods. 346. Some improvements to fitting of structure factor for new finite size corrections (equations in the theory notes were not right). However, even though the new code appears to be correct it still does not give the right answer because the algorithm is not sufficiently numerically accurate. Still working to fix this. 345. [DA] Fixed some bugs in merge_pwfn.f90 utility for PWSCF code. 344. Output of INT_SF (XC energy/Hartree energy) was not divided by the number of electrons/cells in the output file. Fixed. 343. [MDB] Update significantly improving emin's matrix manipulation algorithm (to use a parabolic fit). Also substantial tidying to emin's code structure. 342. [NDD] Wigner-crystal orbital type can now be "Gaussian", "plane-wave" or either "hybrid" or "Gaussian+plane-wave". Capitalisation doesn't matter. [I've added a tool in utilities.f90 'capitalize' for turning lower-case letters into upper-case ones or vice versa.] One can also specify the orbital types as 1, 2 or 3, for backwards compatibility. 341. [ZR] Added section to manual on non-collinear spins. 340. [PLR] Fixed a problem with ve_helper when finite-size corrections are on. 339. [PLR] Modified runqmc to report the version and patchlevel according to the DIARY. ("it looks at the first 20 lines of the DIARY, so that Mike doesn't have to modify main.f90 every single time he updates the distribution. It gets the version number from the first line that begins with 'Provisional' or 'Changes' (the former happens for betas and the latter for releases), and the patchlevel from the first line that starts with an integer followed by a dot.") 338. [PLR] Implemented automatic run continuation ('runqmc -autocont') in runqmc for workstations (no batch-queue systems yet). 337. [NDD] Modified varmin.f90 so that stupid people like me don't cause CASINO to segfault by setting opt_orbitals=T when there are no optimizable orbital parameters. 336. [NDD] plot_hist utility had got confused because of substitution of old integer keywords ITERAC and BTYPE with character-string keywords INTERACTION and ATOM_BASIS_TYPE. Fixed. 335. [NDD] Various modifications for Wigner crystals in free_orbs.f90 and vmc.f90. I have enabled the use of hybrid orbitals, which have both Gaussian and plane-wave terms, for Wigner crystals. This is specified by setting the type of Wigner-crystal orbital to 3 in the free_orbs block in correlation.data. The plane-wave data comes after the Gaussian data. I have also enabled the use of Wigner-crystal orbitals in 1D, and I have fixed a couple of bugs affecting plane-wave Wigner-crystal orbitals. 334. [MDB] Removed error trap leading to message "Energy minimization is not currently possible for systems with particles other than electrons" as I have now verified that it is in fact possible. 333. [MDB] Get divide by zero error in emin when using fewer than 100 configurations per processor. Fixed. 332. Problem with parallel restarts in the obscure case where a new expectation value is begun only at the restart and requires an additional G vector set different to any that might already be present (!). Fixed. 331. Allowed new finsize utility to deal with non-existent KE correction (e.g. if no Jastrow or the wrong kinds of Jastrow terms). 330. Modified main.f90 to include the patch level in the version printout at the start of the out file. 329. Timer for heg_mpc_long was broken. Fixed. 328. Parallel accumulation of 1+2p density matrices + cond fraction broken. Fixed. 327. Fix 311 to DMC structure factor was incomplete - leading to factor of two error in the result. Fixed. 326. DMC restarts broken in expectation value module. Fixed. 325. [NDD] Ensured homogeneous-density algorithm is used in expval for ferromagnetic systems where there are no spin-down electrons. 324. [NDD] Modified plot_expval utility to work with 1D systems. In particular, the 1D PCF can now be plotted. 323. [PLR] Changed MAX_CPU_TIME and MAX_REAL_TIME : now dealt with by timer_module, and they affect VMC and varmin as well as DMC. On stopping, CASINO prints out information on how to continue the run. This is in preparation for runqmc's automatic-continuation capability. Modified runqmc so that it can continue runs on request ('runqmc -cont') but not chain them automatically yet. 322. [PLR] Added RUNTYPE 'dmc_dmc', to do DMC equilibration, then statistics accumulation, which is a good thing to be able to do. 321. [PLR] Logical flags 'lw' and 'lgl' were still integers for the gaussian modules (see patch 212). Now they are boolean. 320. [MDB] Enabled backflow for gaussians with virtual orbitals (previously, sderivs were not coded for this case). 319. [MDB] Removed calculation of lap entirely from the BF finite gaussians routines as it isn't needed and removing it speeds things up. 318. [MDB] Removed error trap preventing emin+pairing_wf in monte_carlo.f90 - this was an oversight, as emin has been able to optimise these parameters for some time. 317. [MDB] Made emin give more information on its progress during the most CPU-intensive part of the calculation, for opt_info>2. This stage is taking days for Ron Cohen's runs, so he wants some indication it's actually doing something. 316. [MDB] Made the emin xi parameter an input keyword : EMIN_XI_VALUE. Updated manual to reflect this. "During energy minimization, this parameter determines the wavefunction with respect to which the linear basis of first derivatives is semi-orthogonalized. Please see the manual for more details." 315. [MDB] Removed energy_gradient.f90 entirely, with associated changes to Makefile, monte_carlo.f90 and vmc.f90. No more calc_gradient keyword either. 314. [NDD] I sent the wrong version of vmc.f90 for patch 301 - it still had the old twist-averaging algorithm. Fixed. 313. [NDD] Made DMC equilibration independent of NMOVE_DMC_EQUIL, e.g. NMOVE_DMC_EQUIL=25 & NBLOCK_DMC_EQUIL=10" is equivalent to NMOVE_DMC_EQUIL=50 & NBLOCK_DMC_EQUIL=5". I have introduced a new keyword defining the number of moves over which the best estimate of the energy is averaged in equilibration: EBEST_AV_WINDOW, which is 25 by default. The majority of users will never need to know about or change this keyword. Hopefully this will make choosing nmove & nblock less confusing. 312. [NDD] In both jastrow.f90 and backflow.f90 the parallel-spin cusp conditions will now be used if the spin-dependence is 0 and only one type of particle is present (e.g. ferromagnetic HEGs, hydrogen atoms). 311. DMC accumulation of structure factor had been broken - meaning DMC XC finite-size correction was wrong. Now fixed. [BUT SEE 327.] 310. Reduced default grid size in heg_mpc_long routine in free_orbs.f90 (for calculating the long-range MPC constant in homogeneous systems). This is much faster with little loss of accuracy and appears to prevent jobs from hanging on darwin (for a reason I don't know yet). 309. Fixed problem in expval.f90 affecting systems with homogeneous_density on parallel machines (not all required variables broadcast to all nodes). 308. [NDD] Slight modification to routine calculating the twist-averaged HF energies in free_orbs.f90. Numerical errors could lead to argument of a square root to be slightly negative - fixed. 307. Modified linuxpc-ifort-lam-parallel compiler options so that CASINO will compile in debug mode. 306. Deleted obsolete pwfn_purge utility. 305. [NDD] Update to the manual. 304. [PLR] The runvp virtual parallel script was working only for optimization runs and not for VMC/DMC runs due to a missing /dev/null redirection. Now fixed. 303. Fixed parallel infelicity in expval.f90. 302. Removed obsolete 'preprocess' and 'extrapolate_N' utilities. 301. [NDD] modified the VMC twist averaging algorithm so that it is basically the same as the DMC one. I have removed the MC_TWIST_FREQ keyword and introduced VMC_TWIST_AV (flag for whether twist averaging should be performed in VMC) and NEQUIL_TA (number of post-twist-change equilibration moves in VMC. The changes to the twist angle are made at the start of each block in VMC; hence nblock should be chosen to be the required number of twist angles. [MDT NOTE : THOUGH SEE PATCH 314] 300. Added new utility 'finsize' which will calculate the full table of KE + XC finite size corrections to Ewald/MPC energies from an accumulated structure factor in expval.data, the input, and out files. The KE correction is currently not recomputed from the current correlation.data file, but is taken from the value printed in the 'out' file. This facility is required as the finite size corrections are only printed out at the end of a DMC calculation, and if your calculation is stopped early e.g. by some time limit, then the finite size data can now be computed anyway. 299. Minor bugfix to 295. 298. Fixed 'esdf_defined' function in esdf.f90 so that it works properly for all keyword types. 297. [NDD] Couple of minor bugfixes to DMC twist-averaging. 296. Changed names of new DMC twist-averaging keywords introduced in 294. NMOVE_DMC_EQUIL_TA --> NMOVE_DMCT_EQUIL (keyword too long for input file) NBLOCK_DMC_EQUIL_TA --> NBLOCK_DMCT_EQUIL ( " " " " " " ) NO_DMC_TWISTS --> NUM_DMC_TWISTS (since it sounded like an exhortation not to use DMC twists) 295. Added more detailed printout of finite-size correction data at end of DMC calculation. 294. [NDD] New DMC twist averaging algorithm. Each time the k-vector offset is changed, a DMC equilibration process is carried out. I have introduced three new keywords: 1. NO_DMC_TWISTS, which is the number of k-vector offsets to be used in the course of DMC statistics accumulation, 2. NMOVE_DMC_EQUIL_TA, which is the number of moves per block in post-twist-change equilibration stages and 3. NBLOCK_DMC_EQUIL_TA, which is the number of blocks of moves in the post-twist-change equilibration stages. The number of moves in each statistics-accumulation stage is NMOVE_DMC_STATS*NBLOCK_DMC_STATS. Since there are NUM_DMC_TWISTS such stages, NMOVE_DMC_STATS and NBLOCK_DMC_STATS should be rather smaller than is usually the case. Likewise equilibration from a change of twist angle probably doesn't need to be as long as equilibration from the set of VMC configurations, so NMOVE_DMC_EQUIL_TA and NBLOCK_DMC_EQUIL_TA will probably be less than NMOVE_DMC_EQUIL and NBLOCK_DMC_EQUIL. [MDT NOTE] - changed names of these keywords - see patch 296. 293. [MDB] Fixed bug in the config_energy routine in configs.f90 which could cause crashes. 293. [NDD] Modified the way that Monte Carlo twist averaging is performed. In VMC there is now a Metropolis accept/reject step after changes of twist angle, so the algorithm does not require a large value for CORPER. I have removed the twist-angle changes from DMC, as I am going to implement a new version. 292. Tidied up new finite size correction output. Code now does sensible things when there is more than one VMC block (XC correction computed from structure factor accumulated so far; total energies + XC + KE printed in all combinations at end of each VMC block). KE correction now calculated at start (following Jastrow read) independently of XC correction. 291. [MDB] Bugfix to bugfix 286. 290. [AJM] Fixed bug by which pairing-orbital coeffs would be renormalized incorrectly during optimization if not all coeffs were optimizable. 289. [PLR] Bugfix for wherejob on PCs to counterbalance 287 below. 288. [PLR] Modified the definition of backflow and pairing functions for bilayers and biwires as done for the Jastrow factor in patch 159: now these are functions of the in-layer distance between particles, rather than the 3D distance. Previous backflow and pairing orbitals for bilayers/biwires need to be reoptimized; the new energies and variances should be the same as before (or better). Thus simplified the overall handling of all such 2D functions: eevecs(4,*) contains the in-plane distance, to be used everywhere except in interactions.f90 where the z component (eevecs(3,*), as usual) is added. (For pairing orbitals, it is convenient to switch from gaussian_expfit to a single gaussian, as exp[-|(x,y,0)|] is a lot sharper than exp[-|(x,y,z)|] as (x,y) -> (0,0), and the variance can be strongly affected.) 287. [PLR] Bugfix for wherejob on alphas. Use 'wherejob -rsh' to get it to work properly (alphas don't like ssh, or, I don't like the particular version of ssh installed on TCM's alphas). 286. [MDB] Bugfix to previous. Changed keyword to OPT_FIXNL which has appropriate effect depending whether varmin or emin is used. 285. [MDB] Update to emin. Introduced the ability to buffer non-local energies in emin, along with a few minor changes, mostly cosmetic, e.g. an update to emin's sections of print_input_parameters in monte_carlo. New keyword : 'EMIN_FIXNL' to turn this on and off. Kept this separate from VM_FIXNL at the moment, because it should probably (for now) default to false, whereas VM_FIXNL defaults to true. If more extensive testing shows that the approximation is always reliable, we could move emin's default to true and merge the two keywords into opt_fixnl. There are two places where non-local energies could potentially be buffered in emin: when calculating the numerical derivatives of the wavefunction and local energy, and when calculating correlated energy estimates in vmc. My basic testing of the new code showed that the former ruins the optimisation and the latter seems ok, so EMIN_FIXNL enables only the latter. 284. [PLR] Patch 280 was the wrong fix to update_config. Now corrected. 283. [PLR] Downgraded 'first random numbers equal on nodes i and j' from error to warning (at least until a better check is implemented). 282. [PLR] TRIP_POPN is now also affected by PARALLEL_KEYWORDS = total. 281. [AJM] Prevented plane-wave pairing orbitals from being pre-screened. 280. [PLR] Bugfixed update_config for systems where npcells > 1. 279. [AB] Two bugfixes for molorb.f90. 278. [MDB] Major update to manual for emin. 277. Minor fix to vmc.f90 to prevent all nodes writing to output on restart. 276. [NDD] Added a trap to bwfdet.f90 to test for the presence of unsupported "additions" and "subtractions" in the MDET block. 275. [PLR] Updated runqmc so that the name given via the 'name ' option replaces (rather than being appended to) the word 'casino' in the job's name. Added the option to specify the name of a binary, e.g. 'binary casino_new' will use the 'casino_new' binary (as compiled by typing 'make EXECUTABLE=casino_new' in CASINO/src). 274. [PLR] Bugfixes to 268 and 262 below. 273. [NDD] Modified wfn_check.f90 so that the "hit_index" array for localised orbitals is used correctly when the kinetic-energy check is performed. (At present the KE check always fails for localised orbitals.) 272. [PLR] Added support for the (free) GCC gfortran compiler (g77's successor in the GNU Compiler Collection from v4.x; QMC_ARCH=linuxpc-gcc) and Absoft af90 compiler (QMC_ARCH=linuxpc-absoft), and parallel counterparts linuxpc-gcc|absoft-parallel, as well as linuxpc-path-parallel. Restructured CASINO/ARCH a bit so that the whole bunch of linuxpc compilers is one entry on the list. NB, after running tests with some of these compilers on a 64-bit AMD PC: . GCC gfortran 4.3 seems to be a lot (2x) faster than g95 0.91; . pathf90 2.9.99 outperforms iforte 9.1, but only slightly; . af90 10.0.2 is not too impressive, although it ranks high on other people's benchmarks. . 32-bit systems may be a totally different business. 271. [PLR] Fixed a couple of issues (numerical.f90/varmin.f90) which af90 doesn't like (correctly/wrongly). 270. [PLR] Updated etime.c to account for the (distant? inexorable?) transition from (probably?) POSIX.1-1988 to ISO C99 (what?), defining CLK_TCK in etime.c if not defined in time.h. Needed by gfortran 4.3. 269. [PLR] Made varmin complain less loudly about NL2SOL's return codes. 268. [PLR] Fixed a bug in free_orbs.f90 which prevented the Rex parameter from being optimized. Added preliminary support for 1D pairing orbitals. 267. [PLR] Fixed two problems with finite-size corrections in vmc_dmc runs. 266. [PLR] Added a check for wrong argument types in comms_serial.f90. This doesn't get checked otherwise, and if the proper parallel MPI library is linked, a type mismatch could appear in the shape of a segmentation fault, or as a mysterious error. 265. [PLR] Updated runqmc for Darwin (yet again). 264. [PLR] Added autotest example for an e-h 2D bilayer with pairing orbitals. 263. [PLR] Updated wherejob to deal with multi-processor machines, and to be able to use rsh or ssh as needed for each machine. Also added a trap to kill all its children on receiving the TERM signal. s1.tcm and s2.tcm are part of the new default definition of TCM's network. 262. [PLR] Revamped casino_update with a wizard-like structure. Added lots of new options and capabilities (import a patch, edit files from within the utility, transfer modifications between machines, etc.), rewrote scan engine for generality, fixed a few visual glitches and completed the online help. Removed some other features (search for moved files, detect broken links for no purpose). Therefore switched version number to 0.9. 261. [PLR] Fix to spin density accumulation in parallel. 260. [NDD] New autotest for parallel machines. 259. [NDD] Fixed a variety of recently introduced minor errors associated with parallel calculations (revealed by running autotest). 258. [PLR] Changed runqmc script so that it uses a paying account by default on the Cambridge HPCF (or whatever it is now called). 257. Fixed bug in parallel structure factor accumulation (also affected finite size correction calcs). 256. [PLR] Error in runqmc from 250 fixed. 255. [NDD] Another fix to emin. 254. [NDD] Modified the points routine in vmc.f90 so that the initial distribution of electrons in a 1D HEG has the electron positions being equally spaced, instead of being randomly chosen. I have done this to avoid numerical problems that occur when electrons coincide in large systems. 253. [MDB] Update to add the subroutines check_jas_opt_consistency and check_bf_opt_consistency to jastrow.f90 and backflow.f90. They are called by read_jastrow and init_backflow after reading in the parameters, to check for some things which crash emin, primarily cutoff parameters being optimizable when the parameters they are cutting off are all zero (the cutoffs are cutting off nothing, so shouldn't really be optimizable). Varmin doesn't have a problem with this because nl2sol already knows how to deal with redundant parameters. 252. [MDB] Made emin much less verbose at lower opt_info levels, and cleaned up the output a bit at all levels. 251. Fixed recently introduced error in eval_geometry.f90/neighbour_analysis which caused Gaussian atoms to stop working. (Error from patch 242). 250. [PLR] Modified runqmc so that the submission script for Darwin loads the default-infinipath module, which appears not to be loaded automatically for all users. Added an '-account ' option, where can be 'free' (default, max 20hrs x 128 CPUs, low priority) or 'paid' (max 60hrs x 2048 CPUs, high priority). Other values will be used in the 'qos=' option to the qsub command. 249. Removed -e90 flag from linuxpc-ifort-pbs-parallel.inc debug mode as it caused darwin to choke. 248. [NDD] Correction to varmin_linjas part of 247. 247. [NDD] Attempted to speed up varmin_linjas.f90 a bit by using BLAS, and min_image.f90 by testing each vertex explicitly in the min_image_brute_force routine. 246. [AB] Bug fix for Gaussian f functions. 245. [AB] Inclusion of Cartesian Gaussians transformed to spherical harmonics for s,p and d orbitals. [NOTE: This transformation turned out to be more involved than I thought, where overlap matrices need to be considered not only between Gaussians on each atom, but also between atoms. This overlap matrix is neglected in my transformation so far but also Claudia ignores that overlap matrix. However, she only goes up to d orbitals and we want to go to f and g. I don't see a reason to ignore that overlap matrix but also, I don't want to calculate it which would be different for each molecule and wfn. parameters. Well, maybe we can talk about this at one point but for now, I stick with s,p and d Cartesian Gaussian orbitals transformed to spherical once which seem to work fine in all my tests. In the near future, I consider to implement real Cartesian Gaussians where I don't need any transformation up-front.] 244. [AB] Change mdet_max_mods (maximum number of modifications to ground state) from 20 to 1000. 243. [MDB] Fixed a problem with emin on large systems. Part of the algorithm involves calculating (numerically) the derivative of the wave function with respect to parameters, divided by the value of the wave function. These quantities become huge enough to be a numerical problem for large systems. This update makes emin deal with logs of these quantities everywhere to avoid this problem. 242. [NDD] Corrected various instances where allocatable arrays were not explicitly deallocated at the end of subroutines. 241. [NDD] Fixed bug in emin.f90. 240. Fixed spelling mistake in debug compiler options for linuxpc*-ifort.inc files. 239. [PLR] Fixed error in format_configs utility introduced in patch 149. 238. [NDD] Wrote utility for averaging over sets of expval data produced by plot_expval. (For example in a HEG bilayer there are 4 particle types giving 10 PCF components, but one only wants the same-plane-same-spin, same-plane-opposite-spin and opposite-plane PCFs; so one should average the data for particle-pair sets {1-1,2-2,3-3,4-4}, {1-2,3-4} and {1-3,1-4,2-3,3-4}.) If one has more than two particle types, using XMGrace to average the data gets a bit tedious: hence the utility. The long-term solution would be to add a spin-dependence flag to expval.data, as is done for sets of parameters in correlation.data. 237. [NDD] Various modifications to 235. 236. [NDD] Fixed a bug in qmcplot (the x coordinate of the (i+1)th point was written out to lineplot.dat instead of the ith point). 235. [NDD] Implemented a cusp-correction scheme for plane-wave and blip orbitals (and Gaussians too, although it won't work so well for those). If the new keyword USE_GPCC is set to T in input then a function of the form f(r)=omega.(r-L)^C will be added to each orbital at each ion to impose the Kato cusp condition. 234. [MDB] Enabled optimisation of orbital parameters by emin. Changed monte_carlo so that emin uses same method of dealing with empty Jastrow and backflow functions as varmin. 233. [NDD] Modified source to allow custom spin dependencies to be defined. For example, if one were studying a paramagnetic fluid bilayer, with spin-up and spin-down electrons in one plane (spins 1 and 2) and spin-up and spin-down electrons on the other plane (spins 3 and 4) then one would want sets of u(r_ij) terms for same-plane, same-spin pairs, same-plane, opposite-spin pairs and opposite-plane pairs. This can be achieved using %block custom_spair_dep no_spair_deps 1 # Number of custom spin dependences to define. spair_dep -1 3 # Spin-dependence label is -1. There are 3 groupings 1-1,2-2,3-3,4-4 # Same-plane, same-spin 1-2,3-4 # Same-plane, opposite spin 1-3,1-4,2-3,2-4 # Opposite-plane %endblock custom_spair_dep The spin-dependence label in the two-body Jastrow factor and backflow functions could then be set to -1, to use this spin grouping. Custom spin-singles are defined similarly. 232 [PLR] Rewritten graphit + graphitx in bash as a single script ('graphit -x' will do what the old 'graphitx' did). Thus fixed some problems with the 'which' command, and updated graphitx to skip file headers when adding line numbers. 231. [PLR] Another fix to update_config utility. 230. [PLR] Fixed Makefile issue from patch 225. 229. [PLR] The update_config utility was not taking constant energy contributions into account, resulting in updated config files with the wrong energies. Fixed. 228. [PLR] Using backflow in large systems could result in a whole cluster crashing --as inconvenient as it is amusing--, the reason being that the internal buffers for the Phi term scale as the cube of system size, e.g., 69GB for 1000 electrons and 500 nuclei. Added input keyword BF_SAVE_MEMORY which can be set to 'T' to disable backflow buffering in such cases. NB, this cannot be used with all-electron atoms at present because the buffers are used as temporary arrays in AE truncation. An alternative implementation can be done with a bit of imagination, but not many people run calculations on large all-electron solids anyway, so it's probably not worth the effort. 227. [PLR] The autotest neon examples use optimizable orbitals, but USE_ORBMODS was missing from the input files. Fixed. 226. [NDD] Added error traps for 225. 225. [NDD] Modified source to allow Monte Carlo twist averaging. The offset to the grid of k vectors will be chosen randomly every mc_twist_freq moves during VMC and DMC, where mc_twist_freq is a new keyword. This can only be done for HEG fluids at present. The twist averaged HF energies will also be printed out. 224. [MDB] Made emin work with pseudopotentials. Minor tidying inc. update to emin_memory_estimator. Removed emin+pseudopotentials error trap from read_pseudopotentials in monte_carlo.f90 223. [PLR] Having q=0 for some (but not all) of the determinants in an MDET expansion is problematic. Fixed, returning to the pre-2.1 behaviour of rejecting such moves, as if all q were zero. This situation is unlikely enough for the bias to be negligible. 222. [PLR] Added -fpe0 to ifort debug flags, to make it stop on exceptions. 221. [PLR] Bugfixed calc_variance + interaction=none issue. 220. [PLR] Bugfixed config.f90, which quickly exhausted all available i/o units in DMC. 219. [PLR] Minor update to runqmc script for new HPCF machine. 218. [NDD] Modified autotest script to filter out subroutine timing info. 217. [NDD] Bugfix to 215. (future walking) 216. [NDD] Bugfix to 213. 215. [PLR] Various minor bugfixes. 214. [NDD] Modified extrapolate_tau.f90 so that the floating-point numbers in the formula to be pasted into xmgrace always uses "E" rather than "d" to indicate the exponent (xmgrace requires "6.02E23" rather than "6.02d23"). 213. [ZR] Added some error traps to avoid people attempting SDW calculations in systems where this is not supported. 212. [PLR] Both wfdet_basis and interactions modules now use integer variables to choose orbital/interaction type. Some speedup. Wfdet now uses logical flags for requesting value and/or derivatives. Attempted speeding up the code by separating igl into ig,il, but orbital buffering in DMC is already taking care of using the Laplacians computed along with the drift vector. Awfdet now computes either lap or sderivs, which appears to improve efficiency somewhat --other modules will follow. No changes to gauss_* modules [AB to complete work on Cartesian Gaussians]. 211. [PLR] Calls to eval_dbar now don't have to be inside a jspin loop, nor pass the smat and rpsi arrays back and forth. The former produces a small speedup, the latter saves some memory. 210. [PLR] Fixed two bugs by which the TI kinetic energy would come out wrong if a backflow+complex wfn was used --mistakes made in patch 151 (logarithmic dets). 209. [PLR] Implemented sderivs for SDWs and the "non-interacting He" special wfn. Tested the former; backflow appears to work for SDWs. Fixed a sign problem with the Laplacian of the latter. Optimized orbital evaluation in both cases. 208. [PLR] Fixed a minor problem with NAG and emin --NAG doesn't like closing units attached to /dev/null. 207. [MDB] Fixed bug in emin.f90 which prevented correct optimisations for non-backflow wavefunctions (buffering of the call to wfdet in emin_config_energy was flawed in the non-backflow case). Also tidied emin output. 206. [NDD] Modified expval.f90 in order to harmonise the definition of the bilayer "spherical" PCF: the radial coordinate is now the in-plane separation for both VMC and DMC. Previously it was the in-plane separation for VMC and the distance between the electrons (including layer separation) in DMC. I have made the equivalent changes for the structure factor too. Corrected new definition of Euler constant introduced in constants.f90 in patch 199. 205. [NDD] Removed -msse2 options from linuxpc-g95.inc files, as this option seems to cause DMC jobs to stop with a segmentation error. 204. [PLR] Fixed issue affecting gaussians + backflow + DMC calculations. Non-backflow routines are now used whenever second derivatives are not requested; therefore removed all gwfdet1*_bf routines, which just duplicated the non-backflow ones. 203. [PLR] Fixed problem with ve_helper and the use of PARALLEL_KEYWORDS=total. 202. [PLR] Added QMC_ID=tcm for QMC_ARCH=linuxpc-ifort-parallel, accounting for the new quad-core 's1' machine in TCM. 201. [PLR] Added new keyword PARALLEL_KEYWORDS. When set to 'per_node' (default), CASINO will behave as usual. When set to 'total', NMOVE, NWRCON and NCONFIG will be divided by the number of nodes. This results in the input files being independent of how many nodes one uses to run the calculation. This should become the default in the future. 200. [PLR] Fixed minor slave-output issue in vmc.f90. 199. [NDD] Modified free_orbs.f90 to allow the calculation of the finite- and infinite-system HF energies of 1D fluids. 198. [PLR/MDT] Modified runqmc so that it works out of the box on the HPCX system at Daresbury. 197. [PLR] Added a CASINO/FAQ file, which hopefully contains some useful information for users. The file is rather incomplete --if anybody can think of any useful (and not necessarily previously-asked) questions, add them to this file. Modified the runqmc README file to describe the available options in full, as well as to detail the process of adding support for new machines. [MDT NB: there is already a FAQ that I wrote years ago in the CASINO/doc directory - should probably merge these] 196. [PLR] Fixed formatting issues for systems with lots of different particle types. 195. [PLR] Parallel problem with gaussians.f90 periodic setup fixed (bug introduced recently in complex orbital modifications). 194. [NDD] Added set of SDW examples to the automatic test suite. 193. [ZR] Fixed a few calls so that the sele array is correctly passed around and SDW calculations now work again. 192. Implemented finite size correction to the exchange-correlation energy using the new method (integration of the structure factor etc.). Activate using FINITE_SIZE_CORR keyword. [TESTING IN PROGRESS] 191. [PLR] Given the small amount of qmc_barriers left in the code, qmc_barrier is not timed anymore, therefore utilities.f90 need not depend on timer_module.f90, therefore timer_module.f90 can depend on utilities.f90, therefore timer_module.f90 now uses 'i2s' to print integers, fixing a compilation problem when using ifort9.1 in debug mode. Minor changes to other modules were also required to make ifort9.1 happy. 190. [PLR] Since patch 117 one could no longer log out from a machine after having called runvp, because of a missing redirection to /dev/null. Fixed. Included CPU-usage logging capabilities into runvp to diagnose potential problems. 189. [NDD] Fixed minor bug in make_p_stars utility affecting 1-D systems. 188. [PLR] Bugfixed interactions.f90 so that MPC arrays are allocated for slave nodes too. 187. [PLR] Added QMC_ID=blueice for QMC_ARCH=ibm_pseries. Fixed an issue with the F77 flags for this architecture. 186. [PLR] "USE parallel, ONLY : ..." in jastrow.f90 replaced with "USE parallel" alone, as (for some reason) the former form won't compile in parallel machines, complaining it cannot find mpi_bcast in the 'parallel' module. 185. [NDD] Stopped NAG complaining about uninitialized variables when 3-body W terms are used in 2D. 184. [NDD] Modified jastrow.f90 to calculate the finite-size correction to the KE for 2D systems. 183. [NDD] Added another feature to autotest utility: the user can now specify "-not example" (several times) or "-only example". Hence slow examples can be skipped, or one can rerun an example that has failed without rerunning all the examples. 182. [PLR] Fixed bug in energy_gradient by which multiple-block VMC calculations would crash when CALC_GRADIENT=T. 181. [NDD] Fixed yet another DMC problem with the configs module when tpdmc>0. 180. [PLR] Minor updates to clearup and casino_update. 179. [MDB] Various changes to emin functionality : -changed from SVD to LU decomposition as default matrix inversion method -made xi parameter variable -added H matrix manipulation technique: major stabilisation technique which necessitates... -...ability to regenerate configs from within emin and calculate correlated energy estimates 178. [MDB] Added an optional 'success' argument to the gamma constraint testing for the Jastrow F function, which when present allows the test to merely tell the code calling it that it has been failed, rather than carrying out an emergency stop. 177. [MDB] Added a global switch errstop_skip which, when T, causes all errstop calls to be skipped. This should obviously almost never be turned on, but is needed a couple of times in emin. 176. [PLR] Added QMC_ARCHs linuxpc-ifort-parallel and linuxpc-g95-parallel. These work with OpenMPI (and possibly other implementations) and are suitable for modern dual- and quad-core workstations (like Intel Duo or AMD X2 machines). See CASINO/ARCH for more info. 175. [PLR] Added QMC_ARCH=windowspc-ifort. This uses the native windows ifort.exe fortran compiler, the MS cl.exe C compiler/linker, and Cygwin for UNIX functionality (make, scripts, etc). Adapted jeep_io.c to compile successfully on this platform, and modified/created wrapper scripts for ifort and icl to deal with .obj object files. The binary is about as fast as the Linux version, but UNIX/Windows clashes can give problems (which I'm not solving: the interested user can try and do so), and the setup can be tedious. See CASINO/ARCH for more info. 174. [NDD] Fixed bug introduced with new configs module: DMC crashed when tpdmc>0. 173. [PLR] Bugfixed vevp and casino_update utilities. 172. [NDD] Added lots of new examples to the TEST directory so that most aspects of CASINO get tested. (It now takes rather longer to run). 171. Added missing error trap for spherical PCF in finite systems. 170. [NDD] Modified make_p_stars utility to generate Jastrow p terms for 2D and 1D systems. The user will be asked to enter the dimensionality. 169. [PLR] Revamped timer module to make it take routine hierarchy into account automatically using a dynamically-allocated linked tree. This eases development; the only thing required to time a routine is a call to TIMER (it used to require modifying the timer setup, adding an integer tag and adding an output statement). Added a warning for users to know that activating TIMING_INFO slows the code down. Merged cputime and timerm into timer_module.f90. Removed mention to the TIMER1 variable from the sources Makefile and include files. 168. [PLR] Added a format updater for config.in/out and vmc.posin/out files. 167. [PLR] Made casinohelp independent of the CASINO binary so that it can be run quickly in all architectures. 166. [NDD] Bugfixed varmin module to avoid crashes because of SELE not being allocated. 165. [NDD] Updated the autotest script. One can now specify the QMC_ARCH to be used. The script can be used to check for warning messages. Script tidied. 164. [NDD] Modified source to allow interacting 1D systems to be simulated. Furthermore, a biwire system (the analogue of the bilayer) can be studied. Note that the wave function must be zero at antiparallel-spin coalescence points in a 1D system with interacting particles, so particles of different spin are only allowed to be present if they are confined to different wires in 1D. 163. [NDD] I have also changed the "points" algorithm, to make the initial distribution of electrons for studies of 2D homogeneous electron gases homogeneous. 162. [NDD] Finally, I have made "interaction : none" work (the case which_interaction=0 wasn't provided for at various points in the code). 161. [NDD] Repeat of patch 157 for exwfdet.f90 and sdw.f90 modules. 160. [NDD] Modified source files to keep the g95 compiler happy. All type conversions that could result in a loss of precision are dealt with explicitly, so no loss of precision occurs; several unused variables which were assigned values but not used have been removed; INTENT is specified everywhere apart from comms_serial.f90. 159. [NDD] Modification to the interlayer terms of the Jastrow factor in bilayer systems. Previously the u term was written as u(r_ij), where r_ij is the separation of electrons i and j, including the interlayer separation. The u term is now written as u(s_ij), where s_ij is the separation of i and j in the x-y plane (i.e. without the interlayer separation). Previously alpha_1 was a free parameter, whereas now it is constrained to be zero by a no-cusp condition; nevertheless u(s_ij) is a more general function of s_ij than u(r_ij). The new form means that one can study bilayers whose separation is comparable to or greater than the WS radius of the 2D simulation cell at the VMC level. Here's a quick comparison of the old and new forms for a bilayer of two paramagnetic electron gases with a total of 36 particles, each layer having density parameter r_s=1 a.u., and the separation is 3 a.u.: OLD: VMC #1: E = -0.1638(9) ; var = 89.253540285038 (correlation.data) VMC #2: E = -0.2510(1) ; var = 1.302865981437 (correlation.out.1) VMC #3: E = -0.2521(1) ; var = 1.188498756075 (correlation.out.2) VMC #4: E = -0.25240(9) ; var = 1.142827459040 (correlation.out.3) VMC #5: E = -0.2524(1) ; var = 1.293507406402 (correlation.out.4) Total CASINO CPU time ::: 17910.056600000000 seconds NEW: VMC #1: E = -0.1638(9) ; var = 89.253540285038 (correlation.data) VMC #2: E = -0.25129(9) ; var = 1.251422488866 (correlation.out.1) VMC #3: E = -0.2528(1) ; var = 1.067806717113 (correlation.out.2) VMC #4: E = -0.25252(9) ; var = 1.052021184482 (correlation.out.3) VMC #5: E = -0.25245(9) ; var = 1.054266486307 (correlation.out.4) Total CASINO CPU time ::: 15721.326200000000 seconds So slightly lower energies and variances can be achieved with the new Jastrow. It's quicker because there are a couple fewer parameters. Unfortunately old bilayer Jastrow factors will have to be reoptimized from scratch. 158. [NDD] Added some useful debugging flags to linuxpc-g95.inc. 157. [NDD] Changed normalization of orbitals expanded in Gaussians or plane waves so that orbitals are multiplied by N!^[-1/(2N)] rather than N!^[1/(2N)]. 156. [NDD] The initial distribution of electrons about their lattice sites in a Wigner crystal should be Gaussian with variance 1/(4C), where C is the Gaussian exponent of the orbitals. This is now implemented in the points routine. 155. [NDD] Changed the normalisation of both crystal and fluid orbitals. This means that one doesn't need to use orb_norm for large Wigner crystal calculations. NOTES: For a Wigner crystal, the Slater wave function is approximately equal to a Hartree product of the Gaussian orbitals. Each orbital is of the form phi(r)=A exp(-Cr^2), centred on the lattice sites. The unnormalised distribution of electrons about each lattice site is exp(-2Cr^2), so the RMS distance from each lattice site is sigma=1/sqrt(4C). The orbital value at this RMS distance is phi(sigma)=Aexp(-1/4). We want this to be 1, so that the determinant is approximately 1 when all electrons are at their RMS distances from their lattice sites; hence we should choose A=exp(1/4). For fluids - if Psi is a Slater determinant of N orbitals then Psi has N! terms. Assuming each term is of magnitude 1 [as they will certainly be for complex plane wave orbitals phi(r)=exp(ik.r)], but of random phase, we would guess the RMS magnitude of Psi to be about sqrt(N!). So, we should multiply each orbital by N!^(-1/(2N)), irrespective of the dimensionality. 154. [NDD] Fixed a couple of recently introduced bugs in free_orbs.f90. (The real orbital values of fluid phases had cos(k.r) and sin(k.r) the wrong way round.) 153. [MDB] Minor change to linuxpc-ifort* make include files to reduce verbosity of output in debug mode. 152. [PLR] Use of large automatic arrays can cause stack problems, so have redefined the largest such arrays as allocatable where relevant. 151. [PLR] Logarithms of determinants rather than determinants are now used throughout the code. A routine "slater_ratio" has been added to dbar_matrices to compute the ratio of the Slater part of the wave function from the logarithm of each determinant. 150. [PLR] Modified format of the config.in/out files to make it more flexible, as well as to account for the use of logarithms of determinants. Redefined what fi_prod_det, etc contain, and reindexed some such arrays. Config files are intended to contain information gathered in a previous run required for a later calculation, therefore the new config file replaces the old one as well as the vmc.posin/out files, the varmin_coeffs.data file and .varmin_ran_save. The new configs module replaces the config_gen, config_type and future modules. All read/write operations on the config file are carried out from within the configs module. All runtypes now produce a config.out file and read a config.in file, reading/writing the appropriate information in each case. 149. [PLR] Replaced format_configs, format_varmin_coeffs and format_pos utilities with new format_configs. NB, this utility allows config files to be modified by hand (as the old ones did), if at all needed. 148. [PLR] Optimization with varmin_linjas now takes configurations instead of accumulated coefficients as input, behaving like normal varmin and emin. All three methods read as many configs as contained in the config file, ignoring the value of nwrcon, which is now a VMC-only keyword. 147. [PLR] Added a 'random_seed' keyword which determines the random seed to. use. It can take the values "default" and "timer", as well as an integer value to be used as seed. 146. [PLR] The constant contributions to the total energy have been gathered together in the constant_energy term to make things simpler. 145. [PLR] Keyword nlrule1 has been replaced by nonlocal_grid (nlrule1 flagged as redundant). nlrule2 has been flagged as redundant and is ignored. 144. [PLR] Allowed calc_variance to work within vmcmethod=2. 143. [PLR] Routine write_out_vmc_heg merged into write_out_vmc. 142. [PLR] Minor updates/bugfixes to ve, ve_helper, bliss (large speedup in rendering), casino_update, mod, runvp and autotest utilities. 141. [PLR] Added QMC_IDs 'darwin' and 'teragrid' for QMC_ARCH=linuxpc-ifort-pbs-parallel. Modified runqmc to make it easier to extend with new features/architectures, and made it faster at checking the input file. NB, in the new HPCF machine, runqmc will (correctly) assume the user wants 4 tasks per node, and will therefore use nnodes/4 nodes automatically, i.e., tpn need not be specified. NB2, in the TCM cluster, runqmc will use 'qjump' to submit jobs in 'test' mode, running alongside other jobs for 10 minutes. runqmc will also prevent using this feature if the user is running a normal job, as it would die along with the 'test' one after 10 minutes. 140. [PLR] Reverted the flags for the ifort compiler to a level of optimization at which processors other than Pentium 4's don't have problems. Small performance impact. 139. [NDD] Ability to compute capacitor energy for homogeneous systems with arbitrary particle types. 138. [NDD] Ability to compute the infinite-system HF energies for homogeneous systems with arbitrary particle types in 2 and 3 dimensions. 137. [PLR/NDD] Fixed bug in free_orbs.f90 caused by calling pre_screening_pairing when pairing is not present. 136. [PLR/MDB] Minor bugfixes to emin. 135. [NH] Fixed recently-introduced bug in the blip converter which appeared when the imaginary part of the plane waves was used to construct the blip orbital. 134. CASINO-formatted the Gaussian94/98/03-->CASINO converter. 133. [AJM] Changed pairing wave function specification in correlation.data from an integer to a text keyword. Desirable since there are now five different pairing wave functions and soon to be seven. See changes to manual. 132. Removed some debugging statements which had accidentally been left in the code. 131. Introduction of horrible F77 source in lapack_src.f had broken compilation on hpcx (QMC_ARCH=ibm_sp3). Fixed. 130. [AJM] Some minor tweaks to MANUAL_INTERACTION (see patch 126) including bug fix to Poeschl-Teller. 129. Made 'delete' function of modify_inputs script more flexible. 128. New keyword FINITE_SIZE_CORR to toggle evaluation of finite size corrections (FUNCTIONALITY TO BE INSERTED LATER). 127. All section headings are required in all examples inputs for modify_inputs script to work properly. Missing section headings in new examples/TEST directory restored. 126. [AJM/PLR] Added support for square-well and Poschl-Teller interaction potentials, which can be specified using the new block input keyword MANUAL_INTERACTION. Gave free_orbs.f90 the ability to print the Fermi wave vector during initialization. 125. [PLR] Renamed internal variables use_coul, coul_ewald and coul_mpc so that their names don't imply 'Coulomb' anymore. 124. [PLR] In the line of patch 104 below, the main EXPVAL block in expval.data can now be supplied empty as well. 123. [PLR] Fixed a problem with defining many particle types and not using them. Arrays are now purged of all unused particle types before starting the calculation. 122. [PLR] Minor bugfix to VMC method 2 without a Jastrow spotted via the autotest facility. 121. [PLR] Changed compiler flags for QMC_ARCH=linuxpc-ifort-lam-parallel, with similar speed improvements as linuxpc-ifort in patch 96 below. 120. [PLR] Taught ve_helper.f90 about the existence of MADMIN runs. 119. [PLR] Applied dos2unix to merge_pwfn.f90, which was in DOS format for some reason and wouldn't compile with e.g. NAG's compiler. 118. [PLR] Bugfixed wherejob on alphas, which support a reduced number of simultaneous processes. Updated wherejob so that it can be configured to work in any network other than TCM (works OK for viewing jobs on the nodes of the TCM cluster, for instance). Configuration tool not yet available, though. Implies that runvp can also be used elsewhere. 117. [PLR] Bugfixed runqmc and runvp regarding the unnecessary requirement that './' be in the user's path. Also sped up runvp by removing an unneeded ssh into the calling node which only duplicated the amount of network traffic. 116. [PLR] Created the 'bash library for interactive shell scripts' (BLISS), a rewritten version of the I/O-handling routines from casino_update which can be sourced from within any bash script in need of good-looking interactive features. Added a text browser, completed the file browser, added a low-graphics mode, ensured full compatibility with alphas and improved the general reliability of the routines. Updated casino_update accordingly and added a couple of new features, including dumping diffs to files, an 'administrator' mode (not yet optimal in functionality) and a mostly-unwritten help-on-context facility. 115. [NDD] Introduced protection for the exponentials in dbar_matrices, and reduced the max_exp and min_exp to 1.d150 and 1.d-150, respectively. Also reduced epsdet to 1.d-150. Minor real/complex bug fixed in vmc.f90. 114. [MDB] Minor bugfix in emin.f90. 113. Replaced BTYPE keyword with appropriate values of new ATOM_BASIS_TYPE keyword in examples and manual. 112. Added Ken Esler's ppconvert utility which converts nonlocal pseudopotentials in CASINO's native format into formats usable by other codes. At present, it can convert into ABINIT's Troullier-Martins format or into the XML standard format defined by the FSAtom consortium. NB: This is a C++ code and the CASINO Makefiles do not currently specify how to compile C++ programs - this point needs to be discussed - hence ppconvert is currently not compiled by CASINO standard compilation process. For now go to utils/pseudo_converters/abinit/casino_to_abinit/ppconvert, type 'make', and hope that it works. 111. Replaced ITERAC keyword with appropriate values of new INTERACTION keyword in examples and manual. Gunzipped the input files in examples/TEST so that the 'modify_input' utility works. 110. [NDD] Added a little script and set of examples for testing CASINO automatically, making it easier to verify that CASINO hasn't been broken by the latest change. In directory examples/TEST, type "./autotest -library" to generate the "standard" set of results. If CASINO is updated, just type "./autotest" in the examples/TEST directory to check that you still get the same answers. To add a new example just put the xwfn.data, correlation.data file, etc. in an appropriately-named directory in examples/TEST/EXAMPLES, and put the different input files in a directory called Input_files. See e.g. examples/TEST/Examples/sih4_GS. 109. [NDD] Made the Jastrow f term quite a bit faster. 108. [NDD] Allow Q terms to be used in systems without atoms. The electron positions are now passed to the Jastrow routines in addition to eevecs & eivecs. 107. [PLR] Bugfixes to new include files in patch 96; dev or debug versions would fail to compile. Other related minor changes. 106. [PLR] Backflow is now disabled during the first VMC run of a vmc_opt calculation when the initial backflow block is empty, in order to save some CPU time. 105. [PLR] Bugfixed electron-by-electron backflow VMC equilibration with pairing wave functions, which wasn't updating the wave function properly (the main VMC routine was correct). 104. [PLR] expval.data can now be supplied with empty data sets for all expvals except the [spin] density [matrix]. This means that now one can specify the number of bins, particle types, etc, in a fresh expval.data file. [Spin] density [matrix] omitted because these expvals are non-configurable. 103. [PLR] Added computation of one- and two-particle density matrix for backflow wave functions. Some improvements to the non-backflow routines. 102. [PLR] Fixed verbatim copying of unused correlation.data blocks so that they don't drift to the right indefinitely when dumped into successive correlation.out files. 101. [PLR] Made the wherejob utility blazingly fast by forking and piping. 100. [PLR] Utility qmc_make now keeps a copy of the old Makefile before overwriting it with the new one. 99. [PLR] Increased line length for printout of particle and particle-pair groupings in monte_carlo.f90 to avoid truncation. 98. Fixed minor bug in the COSINE representation of external potentials in expot.f90 (with corresponding changes to manual and example/generic/expot files). 97. [PLR] Some additional compiler include corrections from 96. Updated CASINO/ARCH file to reflect recent changes. 96. [PLR] Played around with compiler options: ------------------------------ Compiler Av. time(s) ------------------------------ ifort9.1 7.2050(75) nag5.0 9.1605(39) ifort8.1 9.3780(28) [best ifort options] nag5.1 9.4800(32) -> gives wrong result ifort8.1 9.9480(88) [current ifort options] pathf95 11.357(17) g95 11.396(11) sunf95 12.1455(81) ------------------------------ NAG turns out to be faster than ifort 8.1, but ifort 9.1 is a great improvement in terms of speed. It also spends less time compiling, in particular it hugely reduces the compilation time of gauss_per_cusp_bf --from 75 minutes with 8.1 down to 6 minutes with 9.1, when using the '-axN' or '-axP' option. The code runs on older PCs, like tcmpcs 1, 6 or 11. Bad thing: it outputs lots of garbage while compiling, and only half of it can be removed, apparently, so I've allowed all the garbage to be printed out. I've also tried out the alpha version of the Sun Studio compiler for Linux and the PathScale compiler, which we have in TCM. Didn't play with pgf90 though. So, changes: Updated options for ifort[e] compiler to version 9.1 (30%-40% speedup over current 8.1 setup). Added a QMC_ID=tcm for QMC_ARCH=linuxpc-*, to take into account that in TCM ifort is to be called ifort9.1 for the time being, and the NAG compiler is f95.old (i.e., v5.0, as v5.1 doesn't like CASINO). Added QMC_ARCHs linuxpc-path for PathScale compiler and linuxpc-sun for Sun Studio for Linux (which is still alpha software but works with CASINO), available in TCM. Updated runqmc accordingly. Recalibrated relative computer speeds in wherejob using new compiler flags. NOTE: place an 'export QMC_ID=tcm' in your .bashrc file (or 'setenv QMC_ID tcm' in your .cshrc file) if you're in TCM. 95. [PLR] Added an 'out ' option to runqmc which may be useful to some people in some circumstances. 94. [NDD] Fixed bug in non_local.f90 Casula scheme (see patch 83). 93. Updated remarks about Linux compiler speeds in relevant files and documentation. 92. [PLR] Following speed tests, changed optimization flags in include files for NAG and g95 compilers to more or less optimal values (NB: NAG compiler now seems to be comparable in speed with ifort in certain circumstances - it used to be twice as slow - but CASINO unfortunately produces the wrong answer with any optimization flags turned on. This is an unresolved problem.). 91. [PLR] Updated wherejob to avoid mistaking the Pentium 2 CPU (tcmpc6) for a Pentium 3, and added performance factor for the P2. 90. [PLR] Minor updates/bugfixes to ve_helper, runvp and vevp. 89. [NDD] Clarified some of the comments in non_local.f90, made sure the random number sequence is the same as before when use_tmove=F [I had swapped the order of two calls to ranx(), so that the random numbers were used differently] and I have fixed a bug in which the Jastrow buffer was not invalidated after a successful T move. 88. [PLR] Added 've_helper.f90', which allows ve to run a lot faster on large files. The main issue was with reading the file, not with post-processing the data, but both things are now done in the helper utility anyway. Fixed a bug in ve by which it would not apply the correlation-time factor when nblock=1. 87. [PLR] Modified varmin.f90 and nl2sol.f90 so that the computation of the Jacobian requires a single call to madr/lsqfun_master, and hence a single communication event between nodes. This is particularly useful for the virtual-parallel capability introduced in 72 below, which now achieves much higher efficiencies. Restructured lsqfun_master in varmin.f90. Renamed qmcspread to runvp, a more consistent name which doesn't make one think of toasts and butter. 86. [PLR] Fixed problems with Makefile and Makefile_localizer in blip-converter directory. 85. [PLR] Fixed minor bug in free_orbs.f90. 84. [NDD] Minor bugfix to 83. 83. [NDD] Implemented Casula scheme for non-local pseudopotentials in DMC. Also made non_local.f90 a bit faster by avoiding unnecessary sin and cos evaluations. If the Casula scheme is to be used then the new keyword use_tmove should be set to T. 82. Changed default grid multiplicity in localizer.f90 utility from 2.0 to 1.0, following suggestion from DA. 81. [NDD] Modified localizer.f90 with the fourn FFT routine replaced by fftn from singleton.f90. I have therefore relaxed the requirement that the grid size be a power of 2. 80. [NDD] Modified clearup to delete ft_of_jastrow.dat files. 79. [NDD] Update of manual including description of the calculation of the finite size correction to the kinetic energy. 78. [NDD] New jastrow.f90 with the following changes: (i) I've changed the FT convention to be the same as that of Chiesa et al (u(k)=Int u(r) exp(-ikr) dr); (ii) instead of working with a spin-averaged u(k), I work out the correction for each spin (particle type) and add them up; I use the FT of the appropriate parallel-spin RPA Jastrow as the model for u(k) in the case (NB Chiesa uses the antiparallel RPA Jastrow, which isn't really correct and doesn't work so well in practice); I also use a simple model u(k)=a+b/k^2 to evaluate the correction. The user can verify that the two models give similar results (or, if they don't, he knows not to trust the KE correction). 77. Corrected spelling mistake in name of linuxpc-ifort-lam-parallel.inc file. 76. [NDD] Added an optimised version of the evaluation of the q term when only the second derivative is required. This is better than just using the (slow) general case. (See patch 69.) 75. [NDD] Modified jastrow.f90 module to print out the Chiesa finite-size correction to the kinetic energy. This may change a bit once I have more experience of using it. 74. [NDD] Modified blip.f90 utility to use various different approximations discussed during recent email exchanges. The parameter gamma_approx determines which of the approximations to use. Since most users won't care about this, it's a hardwired parameter in the code. 73. [NDD] Wrote utility for helping users construct p terms in the Jastrow factor. It assumes that G vectors with the same |G| belong to the same class. For complete generality one would only want G vectors that are equivalent by the symmetry of the Bravais lattice to belong to the same class. However this program should be fine for systems like electron gases (and probably most real systems where one wants to use a p term too). 72. [PLR] Added new utility, 'qmcspread', which can be used to run a calculation using several workstations as if they formed a cluster (TCM only for the moment). For VMC/DMC, the processes are run independently. For varmin runs, a shell-based message-passing scheme (not quite MPI) is setup using rsh and a series of redirections. CASINO communicates with this network using stdin/stdout for efficiency. No support yet for emin/varmin_linjas optimization modes. It is required that the user runs 'wherejob --update' before using 'qmcspread' for the first time. The run lengths are adjusted according to the speed of each computer used, and they add up to the total length specified in the original input file (i.e., input must be setup as if the run was to be performed on a single node). Eg., to run a calculation on tcmpc53, tcmpc1 and tcm10, type 'qmcspread 53 1 a10'. To abort an optimization run, create (touch) a file called 'io/PANIC'. More features, accompanying utilities and documentation are to be added soon. The performance of 'virtual parallel' calculations greatly depends on the number/speed of the computers, etc. E.g., in a test 12-node optimization, the master node's CASINO CPU time was 80% of the real time (20% wasted in synchronization, communication, etc.). It is much more efficient to use a few PCs (2-5) than many (5+). 71. [PLR] Added utility 'random_gen', which generates a random seed with the format of .varmin.ran.save for arbitrary luxury level and number of nodes. Added utility 'vespread', which performs the function of 've' for calculations run using 'qmcspread'. 70. [PLR] Added option 'name ' to runqmc which changes the name of the running process (as displayed by ps/top/qstat) to 'casino_'. 69. [PLR] Fixed a bug in jastrow.f90 by which the presence of a Q term would break a DMC calculation. 68. [NDD] plane-wane --> plane-wave in wfdet_basis.f90 (from patch 65). 67. [PLR] Minor bugfix to runqmc (introduced in patch 63). 66. [NDD] Added subroutines evaluating the Fourier transform of the two-body Jastrow factor to the jastrow.f90 module (will be required for evaluating the finite-size correction to the kinetic energy). 65. [PLR] Replaced keyword BTYPE by ATOM_BASIS_TYPE, which can take the values 'plane-wave', 'gaussian', 'numerical', 'blip', 'non_int_he' and 'none'. BTYPE still recognized both in the input file and in the .hist files. SPECIAL_WFN keyword also flagged as redundant. 64. [PLR] Replaced keyword ITERAC by INTERACTION, which can take the values 'none', 'coulomb', 'ewald', 'mpc', 'mpc_ewald' and 'ewald_mpc'. Notice that 'coulomb' is for finite systems and 'ewald' is for periodic ones; however, CASINO will convert one into the other if it's been misgiven in the input file. ITERAC still recognized both in the input file and in the .hist files. NO_EE_INT keyword also flagged as redundant. 63. [PLR] Updates to reblock, ve, runqmc and update_input utilities to account for keyword changes, keeping backwards-compatibility. 62. [PLR] Added QMC_ARCH=linuxpc-ifort-lam-parallel, which includes linuxpc-ifort-tcm-parallel as a particular case when QMC_ID is set to 'tcm'. Added QMC_ID 'saratoga' for use in Ainsley Gibson's LAM cluster. It would be good to get all TCM cluster users to use the new QMC_ARCH and QMC_ID to clear things up a little. 61. [PLR] Added a 'mod' utility, which modifies a file using 'vi' (or the editor given in the EDITOR environment variable, if set) and keeps a copy of the unmodified file in .old, as understood by casino_update. Updated 'menugrep' to use 'mod' as the editor when the '-m' flag is supplied. 60. [PLR] Added a CASINO/CHANGES file which contains a very brief summary of the DIARY file up to v2.0 [which may be good to put in the CASINO web page]. The contents listed may be slightly inaccurate; feel free to modify it if you think something's incorrect! 59. [PLR] Fixed small bug in esdf_key.f90 by which the number of keywords had to be a multiple of 50 (as it was just now) for CASINO to work. 58. [PLR] Allowed redefinition of particles 1 and 2 (which are up- and down-spin electrons by default) in PARTICLES block in input, as having the electrons defined there when they are not in use is a bit messy in terms of calculating the possible spin- and spin-pair-dependencies, etc. 57. [PLR] Fixed small bug in wfn_check for particles of mass /= 1.d0. 56. [PLR] Added a 'time' option to 'runqmc' which allows one to set the exact time limit in hours for batch machines; currently only available in the TCM cluster. 55. [PLR] Added a '-check' option to 'runqmc' which makes the script exit after having checked the input parameters without running the calculation. This is not compatible with the -f option (which skips the input check) for obvious reasons. 54. [MDB] Changes are to fix some runtime problems with emin when ifort compiler is used, namely: - these modules don't use matmul now - it has been replaced with a new subroutine in numerical_lapack which calls a lapack routine to do matrix multiplication. This is because ifort returns the results of functions on the stack, which causes a crash when the result is a large matrix. - lapack routines are now passed arrays as A(1,1) rather than A, as ifort sometimes makes copies rather than simply referencing when you pass A. - lapack routines now determine their own optimum workspace. - the .inc files have been changed so that the lapack source compiles correctly under ifort. Without the new flags (-mp -fltconsistency -fp_port) ifort compiles the f77 code without conforming to IEEE floating point standards, which leads to successful compilation but numerical errors and crashes at runtime. 53. [PLR] Prevented esdf from crashing when physical input parameters are not supplied with units. 52. [NDD] Replaced complex_wf by complex_pw_wf in a couple of places in the attached pwfdet.f90 (at the moment complex_pw_wf=complex_wf, but one might conceivably want to return real plane-wave orbitals when a complex trial wave function is used, for testing purposes). 51. [PLR] Modified esdf_key.f90 and esdf.f90 so that adding/removing/moving keywords is not a pain anymore. Added ability to include linebreaks in keyword descriptions ('$' forces line break). Moved contents of help.f90 into esdf.f90. Modified plot_expval and plot_mpc utilities to use esdf.f90 in CASINO/src via soft links. 50. [PLR] Some modifications to make some compilers happy. However, NAG in opt mode still crashes on lapack (which I'm not touching) arguing that 'A*B' is not a valid use of the binary operator '*', and the alpha f90 compiler V5.5A crashes on expval (V5.3 and V5.6 work though). 49. [PLR] Implemented DMC accumulation of OBDM, TBDM and condensate fraction. Added ability to use Pi-weights when accumulating expvals in DMC, only used for the OBDM, TBDM and condensate fraction so far. 48. [PLR] Fixed a small bug in the routine that sets up particle pairs. 47. [PLR] Small updates to wherejob, job and ve utilities. 46. [PLR] Added the ability to split an optimization run into two or more workstations. This requires a helper script which I'll finish and submit soon. Added two new input keywords which are not to be used manually. 45. Removed pre-existing mdot routine from numerical.f90 which was identical to zdot_rc routine introduced in patch 41 below. 44. Fixed error in complexification of condensate fraction estimator in expval.f90. 43. [PLR] Modified bwfdet.f90 so compilation doesn't die with an internal compiler error with NAG f95. The bwfdet routine should also be a bit faster, as some 20 multiplies are now performed once instead of twice. 42. [PLR] Fixed minor bug in output print for backflow calcs. 41. [NDD] Modified pwfdet.f90 to be able to use general k points if complex_wf=T (uses a new BLAS-style subroutine in numerical.f90). Made a couple of minor changes to bwfdet.f90 too. 40. [MDB] Emin is now parallelized: configurations are distributed over the nodes and so the compute load of constructing the large matrices is shared. The matrix algebra is still done by the master node. This means that VMC_OPT and OPT_VMC now work fine in parallel for emin. 39. [MDB] Emin now uses numerical derivatives of the local energy and wave function to calculate the matrix elements, rather than analytic derivatives. This allows optimization of parameters for which the analytic calculation would have required prohibitive amounts of coding. 38. [MDB] Emin can now optimise Jastrow cutoff parameters, and backflow parameters (including backflow cutoff parameters). 37. [MDB] Emin now uses Umrigar's suggested semi-orthogonalization procedure for Jastrow and backflow parameters, which greatly improves performance, such that most optimizations of these parameters can now be 'expected' to be successful. The remaining problem is optimizing cutoff parameters, which makes optimizations unstable (this is being worked on). 36. [MDB] Emin now makes use of the timing system, so that a useful printout is made of where cpu time is spent during emin. 5. [MDB] One new input keyword has been added: EMIN_STEPSIZE. It controls the step size used in the finite differences algorithm used for taking numerical derivatives of the local energy and wave function. It is expected that most users won't alter this from the default, but having it present as an input keyword is very useful for debugging and development work on emin. 34. [MDB] Emin is updated for the variable changes involved in the complex orbital coding, but it currently requires the wave function to be real (this is trapped in CHECK_INPUT_PARAMETERS). This is something which can be improved later. 33. [NDD] Corrected silly errors in awfdet.f90 and eval_geometry.f90 module that were introduced in recent complex orbital changes. 32. Added complex orbital evaluation to periodic Gaussian routines. [NOT COMPLETE] 31. Added complex_wf keyword to example inputs. 30. Default value of VM_SMOOTH_LIMITS changed from F to T. 29. Added complex orbital array structure to Gaussian orbital evaluation routines. 28. [NDD] Minor bug fix to free_orbs.f90 (the normalization constant for the PW orbitals was norm^3 instead of norm). 27. [NDD] The k vectors in the HEG module are now generated using lattice_generator in eval_geometry, which now takes the number of G vectors to produce as an argument. I have also eliminated the geometry setup in the HEG module in favour of the one in eval_geometry. 26. [NDD] Accelerated the hwfdet_fluid subroutine by evaluating exp(ik.r) as exp(ib1.r)^l . exp(ib2.r)^m . exp(ib3.r)^n, where k=l.b1+m.b2+n.b3 and b1, b2 and b3 are the reciprocal lattice vectors. Various other bits of tidying in free_orbs.f90 and eval_geometry.f90. 25. [NDD] Modified source to allow k-point meshes that do not include 0, so that twist averaging can be performed. bwfdet.f90 can read in and use an arbitrary set of k points. free_orbs.f90 allows the user to specify an offset to the mesh of k-vectors in the free_orbs block in input, e.g. %block free_particles r_s 3 dimensionality 3 cell_geometry 0.0 1.0 1.0 1.0 0.0 1.0 1.0 1.0 0.0 particle 1 det 1 : 27 orbitals free particle 2 det 1 : 27 orbitals free k_offset 0.1 0.2 0.3 %endblock free_particles complex_wf : T The offset is zero by default, and can only be nonzero if complex_wf is set to T. The minimum image of the offset with respect to the reciprocal lattice vectors is taken (I have added a subroutine to min_image.f90 to enable this.) 24. [NDD] Sped up the evaluation of the plane-wave p & q terms in the Jastrow factor, by reducing the number of sinusoids that have to be calculated. 23. [NDD] The temporary real arrays in wfdet_basis are now only used for Gaussian orbitals; the other basis sets return complex orbitals. For the time being the imaginary part returned by the wave-function evaluation routines is zero. 22. [NDD] det_isbig is now allowed for complex wave functions (just need to store a phase rather than a sign). 21. [NDD] Got rid of a couple of qmc_barriers (for reading input & PP file). 20. [NDD] Removed mat_inv.f90 and put reduced_echelon in numerical.f90. 19. [NDD] Permitted node-crossing in DMC for complex wave functions. [For real wave functions it is usually stated that rejecting moves that cross the nodal surface reduces time-step bias, although I have found no evidence for this in actual tests. For a real wave function, if it changes sign, then you know the node has been crossed. However, if the real & imaginary parts of a complex wave function change sign then it has not necessarily crossed a node: it isn't clear to me that rejecting such moves is a good idea.] 18. [NDD] Updated extrapolate_tau utility to make it easier to use. The input file is now just a text file with two or three columns of data (time step, DMC energy, [error in DMC energy]); the program will ask for its name, and will ask the user about the polynomial to be fitted. The program will write out the fitted polynomial in a form which is easy to paste into xmgrace. 17. Changed Makefile for blip utility so that blip is compiled by serial compiler rather than parallel one (which was causing problems on HPCX). 16. Added QMC_ID files for Imperial cx1 cluster (Nick Hine) 15. [PLR] Updated linuxpc-if*-tcm-parallel.inc files and runqmc to deal with new setup of TCM cluster. 14. [PLR] [Nick Hine] Reimplemented PBS cluster support into runqmc. New .inc files for personal machine. 13. [PLR] Config generation runs used to take the first NWRCON configs of the VMC run and write them to config.in, but now only one of every NMOVE*NBLOCK*NVMCAVE/NWRCON consecutive configs is written in order to reduce serial correlation (only effective if NWRCON/= NMOVE*NBLOCK*NVMCAVE). 12. [PLR] Redesigned pairing orbitals so that all coefficients of the PW and Gaussian expansions are optimizable, as the previous decision to make the first coefficient = 1 seemed to affect the flexibility of the parametrization. There is one redundant degree of freedom in each of the new expansions, but this seems to work far better than the older form. 11. Forgot to include the utilities updates in the recent batch sent to me by Pablo i.e. 3, 4, 8. Oversight now corrected. 10. [AM] Fixed minor bug in molecular orbital coefficient optimization (in molorb.f90) which manifests only on maxwell. 9. Minor updates to esdf_key.f90 and corresponding sections of manual. 8. [PLR] Updated runqmc and ve utilities so that they understand what a 'MAD' optimization is. Minor format changes in varmin.f90. 7. [PLR] Allow optimization of AE cutoffs in backflow functions. CASINO will read existing correlation.data files and add the new block during optimization without whingeing. 6. [PLR] Removed obsolete+useless features: eh_safemode and printout of fourier transform of OBDM for plane-wave pairing orbitals. The former is better done by starting the optimization from small Jastrow cutoffs (as with diluted HEGs), and the latter is useless because it is only relevant for the Slater wfn (no Jastrow, no backflow). 5. [PLR] Greatly simplified calls to [un]limit_hyper. [NB, vm_smooth_limits should be made T by default.] 4. [PLR] Modified wherejob utility to recognize a couple more processor types. 3. [PLR] 2.5 years after its implementation, I've realized how the estimate of the correlation time is to be used. Take the 'unreblocked' error bar and multiply it by sqrt(tau); this gives the 'reblocked' error bar, in excellent agreement with reblock, but without any user action required. Updated ve utility, which now treats all energy components this way (and tells you if it cannot), and reblock, which also gives the corrected error, and the error in the corrected error for sheer redundancy. 2. [NDD] Tests indicate that minimising the mean absolute deviation of the set of local energies from the median works better than minimising the (filtered) variance when optimising parameters that affect the nodal surface. Therefore made MAD minimisation a new opt_method (input keyword OPT_METHOD='madmin'). Here are the results of the different optimisation schemes for optimising a Jastrow factor and backflow function for the all-electron neon atom, using optimisations with different numbers of configurations. The Jastrow factor had C=3, N_u=8, S_u=1, N_chi=4, N_f=3, S_f=0 and the cutoffs were optimizable, while the backflow function had C=3, N_eta=8, S_eta=1, N_mu=6, N_phi=3, S_phi=0 and the cutoffs were optimizable. The optimisations started from an optimised Jastrow factor. ====================================================================== Method Average VMC energy (a.u.) 200 configs 2,000 configs 20,000 configs ---------------------------------------------------------------------- UVM -128.887(9) -128.9133(7) -128.9133(6) RVM -128.895(2) -128.9140(3) -128.9144(4) FUVM -128.895(5) -128.9150(5) -128.9147(5) QD min -128.9143(6) -128.9174(2) -128.91737(9) MedAD min -128.9151(7) -128.9170(3) -128.9175(2) MeanAD min -128.9142(7) -128.9178(2) -128.9178(2) ====================================================================== It is clear that the robust estimators of spread are better objective functions to minimise when optimising backflow functions (for neon at least), so I think the ability to optimise the mean absolute deviation from the median energy should go into CASINO. Minimising this robust estimator of the spread works fine, even when one starts from the HF wave function. 1. [NDD] Allowed CASINO to use complex wave functions to perform DMC within the fixed-phase approximation. This required lots of changes so some things may be broken. Although CASINO can now use complex wave functions (activated by the new complex_wf input parameter), none of the wave-function routines can return complex orbitals yet (apart from sdw.f90), as they have all been set up to produce only real wave functions. I'll modify bwfdet.f90, pwfdet.f90 and free_orbs.f90 so that they can work with complex orbitals. MDT to modify the Gaussian routines. Here are CPU times for VMC obtained with the pre- and post-complex versions of CASINO, running on a laptop. The calculations are for a paramagnetic electron gas (rs=3) without a Jastrow factor in order to highlight the differences. Where complex_wf=T, the orbitals are all multiplied by (1+i)/sqrt(2). ======================================================================== Code version CPU time for one block* (s) 18 electrons 102 electrons 918 electrons ------------------------------------------------------------------------ Old CASINO (2.0) 64.285(7) 38.012(4) 72.8(4) New CASINO (complex_wf=F) 65.123(4) 37.255(2) 67.9(3) New CASINO (complex_wf=T) 78.001(2) 59.078(6) N/A ======================================================================== * Different numbers of moves per block are used for the different system sizes; one should only compare the data within each column. [Complex wave functions cannot yet be used with "big" determinants: hence the lack of data for 918 electrons.] These data demonstrate that (i) the fact that CASINO has the ability to handle complex orbitals does not slow it down at all when using a real wave function; (ii) CASINO can be significantly slower when complex wave functions are used: hence we should retain the ability to generate real orbitals. ========================================================================== Changes made for CASINO version 2.0 ----------------------------------- 504. Updated consent form documents in the CASINO/doc directory. 503. [NDD] More minor updates to interactions module. 502. [NDD] Fixed various recently introduced bugs for MPC interaction on parallel machines. 501. [NDD] Fixed error in bf_assess_check_kinetic routine in backflow.f90 module. 500. [NDD] Merged and rewrote generate_eepot.f90 and denft.f90 modules. New module called generate_mpc_data.f90. Fourier coefficients of 1/r now calculated by extrapolation of FFT results to infinite grid size - should be more accurate. f_G is now only written out for primitive-cell G vectors, since only primitive-cell G vectors are used in the MPC. This makes the mpc.data file a bit more compact. Fixed bug for 2D systems. Changed the meaning of mpc_cutoff: previously we used the set of G vectors such that |G|^21. (I doubt that people will ever want to calculate the charge density of a periodic system with a multideterminant wave function; if they do then they can accumulate the QMC charge density.) Charge density is calculated under the assumption that orbitals are orthogonal (hence one can just add up |psi|^2 for each orbital), so it will stop with an error message if localized_orbitals is true. [Same changes made to free_orbs.f90 heg_mpc_long routine.] 499. [NDD] Minor bugfix in the clearup script. 498. [MDB] Compilation on IBM machines was broken by lapack_src.f because the mpxlf90 compiler command line was wrong (it was wrongly specifying suffix .f90, and wasn't specifying that the target file was in f77 fixed format). 497. [ZR] Dummy complex function inserted for new condensate fraction accumulation. inversion_symmetry explicitly defaults to false. 496. [PLR] Introduced new expval: condensate fraction estimator (accumulated by setting cond_fraction flag in input). It is a sort of mix between the OBDM and TBDM that reduces the noise and permits cleaner extrapolation. Fixed bug in TBDM accumulation. OBDM now checked to be correct. Applied normalization to OBDM and TBDM in a simpler way. Introduced error-bar accumulation in all three of these expvals. 495. [PLR] Fixed bug in large BF-VMC calculations caused by not computing the renormalization constant beta_over_nspin before starting (so it crashed). 494. [PLR] Fixed bug in branch_and_redist caused because of relying on the behaviour of specific compilers where the F90 standard is undefined; other compilers just behave differently. Namely, maxval(vector,mask) is undefined when mask is a vector of .false.'s, and returns (/0/) in most compilers, but (/1/) with the Hitachi compiler. 493. [RM/PLR] Fixed some things the Hitachi compiler doesn't like. Added batch-script generation for hitachi.nims to runqmc. 492. [ZR] Strict 2D/1D handling in plot_expval fixed. npcell consistency check on read in expval for 2D/1D fixed. More than 9 data sets are possible in expval.data. Added proper handling of lattice and reciprocal vectors to plot_expval, mirroring the method in expval. This allows proper use of supercell G-vectors. 491. [ZR] Minor update to complexwf.f90. 490. [NDD] I/O error in denft.f90 (introduced in patch 473) now fixed. 489. [MDB] Fixed minor inconsistency with INTENTS between vmc.f90 and interface_block.f90. 488. [NDD] There were some problems with the calculation of the HF exchange energy of electron(-hole) gases (so the reported HF energy didn't agree with the results of HFVMC calculations). Fixed. To calculate the HF exchange energy one needs to know the value of the self-image interaction v_M/2, so the printout of the HF energies now comes after the interactions have been set up. For HEGs, it will also print out infinite-system HF energies. These data are useful for finite-size extrapolation. 487. [NDD] Fixed another MPC bug (short-range component was reported instead of the long-range component in DMC). 486. [NDD] Minor MPC bugs in reblock.f90 and write_vmc_hist fixed. 485. [ZR] Some minor bug fixes to expval.f90 and plot_expval. E.g. a logic error in expval when checking for inversion symmetry on reading, and an accumulation variable wasn't zeroed for 3D plots in plot_expval which resulted in totally wrong results for density/spin density plots. 484. [PLR] Wherejob is now aware of the performance factor of each processor (alpha, 64-bit pc, celeron,...). -mem, -speed, -pc, -alpha, -all and -v options added. A lot faster now. 483. [PLR] Added options -nokey and -noaxes to plot_2D, changed the default colour gradient and reimplemented the map-mode features for surface-mode plots. 482. [PLR] Minor bugfixes/updates to job, runqmc and casino_update scripts. 481. Updated doc/TODO and doc/CASINO_USERS files. 480. Plot_expval was choking on multiple G vector sets. Now fixed. 479. [NDD] Allowed the use of inhomogeneous Jastrow terms in Wigner-crystal calculations. The lattice sites are regarded as ions, on which chi and f functions can be centred. Inside the code I have "divided" the variable electron_gas into two: "electron_gas=.true." means that the energies should be printed per particle, etc, while "homogeneous_system=.true." means that one doesn't need to calculate eivecs, etc. So a Wigner crystal has electron_gas=.true. but homogeneous_system=.false. 478. Some expval.f90 things broken by overenthusiastic search and replace in patch 473. Fixed. 477. Restart of structure factor also broken by patch 415. Fixed (see 476). 476. [ZR] Some bugfixes in expval.f90. Restarts of density/spin density accumulation got broken in patch 415 - now fixed. Spin density matrix accumulation now works if no of particles of some type is zero. Fixed some complex/real issues. 475. [PLR] Rewrote DMC config redistribution routine so that it takes advantage of config multiplicities. Thus, branching is performed after the redistribution rather than before. In "good" DMC runs (good wfn, small dtdmc, etc.) this doesn't make a big difference. However, it can be expected to halve the number of transfers in "problematic" runs. NB, the new algorithm changes the random sequence (what the random numbers are used for, more precisely) unless lwdmc=F and nnodes=1. A problem with having zero configs in a processor was fixed, and trying to exceed max_no_messages config transfers per move does not result in CASINO dying (it could be turned into an input param for cases of desperation). 474. [PLR] Fixed bug in vmc_dmc runs where the target population per node in the accumulation run was being set to the final population of the master node in the equilibration run. This was characterized by a jump in the number of configs in the graphit plot. 473. [PLR] Made CASINO print all output to unit 'o' (the only one-character variable which was still unused; lives in store.f90 and is assigned in main.f90), which is 0 (standard error) by default. This prevents buffered output, which is undesirable in many cases, e.g. it results in truncated output files when (some) machines crash, leaving no trace of what happened before the error. IMPORTANT: everyone please use 'write(o,*)' instead of 'write(6,*)' and similar statements from now on. 472. [PLR] Adjusted comms_serial version of mpi_gather, which was missing the integer scalar-to-vector mode; it had a scalar-to-scalar mode instead. 471. [PLR] Updated casino_update to include file browsing, custom string editing, better terminal compatibility, and some other cool features. Discovered that one has to press each key twice on the alphas, that'll be fixed soon. 470. [PLR] Updated graphit to take the name of the target file as an optional command-line argument ('dmc.hist' by default). 469. [NDD] Fixed bug in history.f90 (if iterac=3 then no MPC data appeared in vmc.hist and if iterac=4 then no Ewald data appeared in vmc.hist). I've added a check, and it will print a warning if it expects Ewald or MPC data and does not find it. 468. [NDD] Updated tcm_comps script to reflect current realities. 467. Interaction energy from structure factor now fully functional. 466. [AB] Removed two new input keywords required for future walking and made them into internal parameters following bullying by Mike. 465. [AB] Bug introduced in DMC at patch 461 now fixed. 464. [AM] Various bugfixes for new orbital optimization facility. 463. Implemented secret facility to calculate the Hartree energy from the individual terms of the MPC interaction (turn on hartree_mpc flag in interactions.f90 to activate - not worth yet another bloody keyword). 462. [AM] Allowed exponents and contraction coefficients in Gaussian basis sets to be optimized when doing orbital optimization. 461. [AB] Modified source code and reblock utility to do future walking to sample pure estimators. 460. [AM] Modified runqmc script so that it doesn't complain when one tries to optimize the gaussian orbitals. 459. [PLR] Rewritten algorithm for two-body density matrix accumulation. The previous one encountered problems when the first particle being moved caused the determinants to be zero, yielding a null contribution even if the second particle move would have restored the value of the wave function. Now this is done in a more costly (but stable) way by moving the two particles at the same time and recomputing the determinants using LU decomposition. 458. [PLR] Fixed norm of the TBDM. Results now match those in the literature. OBDM should also be correct; it'll be checked later. Changed the format of these two so that plot_expval (instead of CASINO) takes care of generating the r-values of the binning grid. 457. [PLR] Added Wigner-Seitz radius to the main block of expval.data. 456. [PLR] Patch 1.7.5_11 was lost (presumably) with patch 2.0.0_38. (this involved r_s being taken as 'per layer' in bilayer systems). Fixed. 455. [PLR] Added a new pairing orbital form that mixes plane-waves and Gaussians fitted to an exponential (type=2; 2,3,4 moved to 3,4,5). Added a 'mixing coefficient' to PW+Gauss pairing orbitals (types 1 and 2) for saner optimization of the parameters. Made CASINO dump the fitted Gaussian coefficients (types 2 and 4) into correlation.data for easier switching to unconstrained Gaussian expansions (types 1 and 3). 454. [PLR] Fixed minor bug that prevented orbitals in periodic systems from being optimized. 453. [PLR] Made utility 've' print both Ewald and MPC total energies when both available. 452. Ability of expval.f90 module to use multiple G vector sets for different expectation values had got broken in patch 440. Fixed. 451. [AM] Various modifications to MO coefficient optimization. 450. Changed output of MPC interaction from '1/r' and 'Hartree' contributions (because it isn't). Now reads 'short-range' and 'long-range'. 449. Allowed calculation of e-e interaction energy from structure factor. 448. [ZR] Minor fixes to complex wfn mode. 448. [AM] Inserted warning into casino_to_abinit.f90 utility that what it does is completely useless in the absence of projectors. [MDT: Hint - could some keen ABINIT guru please fix this?]. 447. [MDB] Warning for ndet<2, optdetcoeff=T in check_input_parameters removed, as ndet hasn't been set yet then so it always triggered. Minor change to emin to stop it crashing when someone does set optdetcoeff=T for a SD calculation, since this is no longer caught by the check_input_parameters warning. 445. Stopped write_structure_factor from writing strings of 10000 zeroes for particle pairs which don't exist (if the number of particles with some spin is zero). Instead it just says 'No such pairs' in expval.data. Adjusted plot_expval to cope with this. 444. [MDB] Error messages regarding no emin with pseudopotentials now works . 443. [MDB] emin and energy_gradient no longer try to get information like detcoef_optable when it hasn't been allocated because there's only one determinant. 442. [MDB] Added an error in check_input_parameters if you try to optimize determinant coefficients when there's only one determinant. 441. Rewrote plot_expval.f90 utility to accommodate patch 440. 440. Rewrote expval.f90 so that the spin density on supercell G required by the structure factor is stored within the STRUCTURE FACTOR block in expval.data, rather than monopolizing the SPIN DENSITY block. Can now accumulate spin density on prim cell G at same time as structure factor. 439. [AM] Removed short-lived OPT_MOL_ORB keyword. 438. [MDB] Updated manual to include info about new energy minimization etc. 437. Updated debugging flags in opteron-sge-parallel.inc file. 436. [PLR] Fixed circular dependency in sources. 435. [PLR] Removed nonstandard 'find -maxdepth' from qmc_make. 434. [PLR] Added new utility casino_update, which replaces (and improves upon) packupdate, apply_patch and submit. The new ability to merge non-conflicting changes to a single file is worth mentioning. It has a menu-style user interface (resembling that of the pine email program) which offers greater flexibility than its command-line predecessors. The menu system will be fine-tuned, extended and re-used for other utilities. 433. Rewrote MDB non-interacting He orbital evaluator for speed (pour encourager les autres). 432. Added new 'special_wfn.f90' module to contain setup and orbital evaluation for special wave functions. Added MDB non-interacting He atom to this. Hence removed short-lived non_int_he_wfn.f90 (?) module. 431. Introduced new keyword INT_SF to toggle calculation of e-e interaction energy in terms of the structure factor, together with error checking. This facility to be actually implemented shortly. 431. Various .inc files had got mixed up in the recent mass of changes. Fixed. 430. [AM] Preliminary implementation of MO coefficient optimization (Gaussian basis/varmin only). New keywords OPT_MOL_ORB and USE_MOLORBMODS to control this. (MDT NOTE : OPT_MOL_ORB unnecessary? Use existing OPT_ORBITALS instead.) 429. [MDB] Various tidying operations to new emin facility. 428. Structure factor now has correct normalization in all cases (even spin-polarized ones). 427. Allowed calculation of total structure factor summed over spin pairs in plot_expval utility. 426. Stopped formatting total weight when writing expval.data to avoid potential overflow problems. 425. [MDB] Added special_wfn type - exact orbitals for the non-interacting helium atom. 424. [MDB] New keyword (NO_EE_INT) to turn off electron-electron Coulomb interactions. 423. [MDB] Calculation of the analytic energy gradient with respect to determinant coefficients and linear Jastrow parameters in VMC. 422. [MDB] Linear Least Squares energy minimization of determinant coefficients and linear Jastrow parameters. 421. [PLR] Updates to density matrix code in expval.f90. 420. [PLR] Fixed Jastrow flag mixup in dmcmethod=2 which resulted in ridiculously large acceptance ratios, and may have been introduced in patch 369b. 419. Made update to structure factor accumulation necessary because of 415. 418. PERMIT_DEN_SYMM flag not working properly. Fixed. 417. Problem with accumulating spin density if number of particles with some spin is zero. Fixed in expval.f90 and plot_expval.f90. 416. Use of QMC density in MPC interaction had got broken. Fixed. 415. Adjusted normalization of density/spindensity/spindensitymat in expval.data such that the G=0 component is the number of electrons in the primitive cell rather than the simulation cell. 414. [PLR] Manual update for 1PDM and 2PDM in expval. 413. [PLR] Fixed bug in optimization of pairing and Wigner crystal orbitals (Gaussian form): the number of cells affected by the Gaussians was not being recomputed during optimization (or during an entire vmc_opt run, for the case), resulting in the optimization going (potentially) wrong, and VMC results being substantially biased when the final Gaussian exponents became significantly larger than the initial ones. 412. [PLR] Have taught varmin not to setup every wave-function section for derivative moves (e.g., avoid setup of Jastrow if a parameter in the multidet expansion is the only thing that has changed). 411. [PLR] Corrected algorithm for 2PDM accumulation, which was not performing the two successive wave-function updates properly. Normalization still to be fine-tuned. 410. [PLR] Allowed user to supply an empty expval data block (currently only 1PDM and 2PDM), so that spin dependencies, number of bins, G-vectors, etc, can be given, without CASINO requiring newrun=F. 409. [PLR] Changed the definition of homogeneous_density in expval.f90 to cover pairing wfns too - which may not be homogeneous strictly speaking, but for all I care they are. 408. [PLR] Updated plot_expval for density matrices. 407. [PLR] Added spherically-averaged diagonal term of the one- and two-particle density matrices for homogeneous systems to expval, activated by the input keywords onep_density_mat and twop_density_mat. [MDT] Updated example input files with the new keywords. 406. [PLR] Fixed read/write mismatch with expval.data for 1D and 2D systems (sim. cell vectors and npcells written as 3D and read as 1D/2D). 405. [PLR] Updated ve utility to account for recent keyword changes. 404. Added new utility plot_mpc which allows 1D/2D/3D visualization of the Slater wave function density stored in mpc.data. 403. [ZR] Bugfix in config_gen.f90 to make complex mode compile. Cleaned some comments out of complexwf.f90. 402. Modified plot_2D to produce 3D surface plots on top of the fancy colour 2D contour plots (useful for things like the density where you want to see the peaks). Activate with -surf option to plot_2D. Also added -noscale option to tell it not to scale the data by looking at min and max values (often looks better if you don't). 401. Updated modify_inputs utility to allow changing of random phrases in all input files (not just keyword values). 400. Minor update to r2s/r2s2 routines in utilities.f90. 399. Changed example input files to reflect keyword changes (again). 398. [PLR/MDT] Manual updated to reflect earlier changes. 397. [PLR] Renamed all four 'vm_opt_x' flags to 'opt_x'; renamed runtypes replacing the word 'varmin' with 'opt'; renamed varmin_cycles to opt_cycles. Adjusted internal variable names accordingly. 396. [PLR] Removed use_varmin_linjas keyword and added a opt_method keyword, whose values can be 'varmin' and 'varmin_linjas' (and 'emin', shortly). 395. [PLR] Runqmc and update_input updated. Runqmc now has an '-f' flag to skip the input file check (i.e., for users who know what they're doing and runqmc won't let them), including the new DOS2UNIX check. 394. [PLR/NDD/MDT] Runqmc script now does a check to see whether any of the input files contain DOS newline characters (as they might do if some Bill Gates fan or Dario Alfe has sent you inputs via email). If possible, the script will run the dos2unix utility to cure this problem, otherwise it will bitch about it. 393. Allowed BTYPE=5 (user-defined/specialized wave function) intended to allow the insertion of one-off wave functions for particular projects, or wave functions that don't fit easily into the other available categories. The particular type of specialized wave function may be selected using a new SPECIAL_WFN keyword, though no such types are currently defined. 392. Changed example input files to reflect keyword changes. 391. [NDD] All references to 'newopt' replaced with appropriate alternative along the lines of 'varmin_linjas' or 'accelerated varmin'. Note change of keywords: vm_info-->opt_info, use_newopt-->use_varmin_linjas, newopt_method-->vm_linjas_method, newopt_iterations-->vm_linjas_its 390. [PLR] Timing for backflow and dbar routines better accounted for in timerm. 389. [PLR] Fixed a qmc_plot bug, by which HEGs would fail to produce wfn/nodes/energy plots. 388. [MDB/PLR] Minor bug corrected in config_gen.f90. 387. [NDD] If VMC was performed with a "blank" Jastrow factor then use_jastrow was set to .false. in monte_carlo.f90, so that an HFVMC calculation was performed. However, have_jastrow3 may still have been .true. so that calls to precompute_jastrow3 were made. This bug now fixed. 386. Better way of doing structure factors for systems with homogeneous density. 385. Removed all historical reference to BTYPES greater than 4. 384. Minor adjustment to plot_expval to stop it demanding the presence of an input file in cases where it isn't necessary. 383. Completed implementation of structure factor (for 3D systems only for the moment). Modified plot_expval utility to plot it. 382. [ZR] Recent changes to CASINO broke complex wave function mode. Fixed. 380. Added new input block EXPVAL_KGRID to define general k grids of any dimensionality for expectation values which require them. Note this supersedes and replaces SF_SPH_KGRID introduced in 377 below. 379. Added DMC accumulation of spherical PCF in expectation value module in addition to existing VMC capability. 378. Added accumulation of spherical structure factor to expectation values module (VMC/DMC). Modified plot_expval utility to plot it. 377. Added new keyword STRUC_FACTOR_SPH to allow accumulation of spherically-averaged structure factor as well as regular structure factor. New input block SF_SPH_KGRID to define 1D k grid on which to plot it. 376. [NDD] Added new keyword dipole_moment. If set to T then CASINO will evaluate the expectation value of the electric dipole moment p. It will also evaluate the expectation of p^2. The data (p_x, p_y, p_z and p^2) are written to (v/d)mc.hist like energy components, and their value & error bars are determined by reblocking. This can only be done for finite systems at present. 375. [PLR] Bugfixed wfn_check, which choked on not being able to perform the KE check on a particular config. 374. [PLR] Bugfixed backflow issue introduced in patch 362. This bug was conveniently ignored by most compilers in opt mode, and did not alter the results, but it wouldn't work in debug mode. 373. Fixed recently-introduced error in jastrow.f90 which prevented newopt from working. 372. [NDD] More updates to tcm_comps and clearup scripts. 371. [NDD] Changed tcm_comps script from csh to bash. 370. [NDD] Modified clearup script. Got rid of all the stuff for deleting CASINO 1 files (jasfun.out.3, etc). This is because (i) the extra rm statements slow the script down and (ii) the more files clearup tries to delete, the more likely it is to cause grief. The old clearup script has been retained as 'clearup_old' for those people who want to scrub their CASINO 1 files. 369b.[PLR] Removed Jastrow precomputing for all except the W term, as it turns out that the minor gain in small systems (up to 5% speedup) does not compensate for the huge loss in large systems (400% slowdown). The W term is now precomputed (when possible) in a non-memory-abusing way, which preserves some 20% speedup. Removed recently introduced large_system keyword. 369a.[PLR] Replaced dcopy_eeblock with a cleaner, more compact routine. 368. [NDD] Sped up evaluation of MPC constant in free_orbs.f90. 367. [PLR] Backflow + pseudopotential calculations had got broken. Fixed. Also fixed other recently introduced backflow-related issues, mostly uninitialized variables and things of the like. 366. [PLR] Introduced memory-saving mode to cure memory issues that prevented some calculations from running at all. CASINO will go on this mode automatically when nemax>32, but this can be overridden using the new input parameter large_system. Currently this just turns Jastrow precomputing on and off. 365. Increased maxgidx parameter in pwfdet.f90 from 50 to 70. 364. [NDD] MPC interaction with homogeneous systems had recently stopped working. Fixed. 363. [PLR] Removed rational and Gaussian forms of the backflow eta term, which were of little use. "Choice of backflow function" should be removed from correlation.data. 362. [PLR] Modified way in which e-N and e-e-N backflow terms are dealt with around AE atoms: their cutoff lengths are no longer limited, and the same truncation function as for the e-e term is used instead. 361. [PLR] Fixed electron-by-electron backflow buffer-restore operation (disabled since patch 292). 360. [PLR] Fixed bug in electron-by-electron backflow in periodic systems, caused by using non-minimum-image distances at one particular point in the algorithm. Tests indicate that this bug has no statistically significant impact on the VMC and DMC energies, as the effect is random and cancels throughout the run. However, it would be good to revise periodic BF calculations. 359. [PLR] Minimized the time taken by wfn_check by reducing the number of iterations from 100 to 20 and using calc_q instead of eval_dbar for the Slater det check. 358. [NDD] More changes to blip.f90. 357. [NDD] Fixed minor error in qmc_plotter. 356. Added DA's 'merge_pwfn' program for use with PWSCF. On parallel machines you apparently need to merge pwfn.datax [x=1,2..] files produced on different processors into a single pwfn.data. This utility does that. Extensive MDT formatting required. :-) 355. [NDD] Restored singleton.f90 as the FFT routine for the blip utility, following DA request for grid sizes other than powers of 2. 354. [PLR] Minor change to exwfdet to bypass a bug in the compiler for QMC_ARCH=octane. This will need to be reviewed when more expot wfns are implemented. Restructured the way binaries are invoked by runqmc in workstations to fix a problem found with this architecture (or with bash-2.03). 353. [PLR] Added a 'SILENT' flag to the src Makefile to dump all output from the compiler onto /dev/null, activated by typing "make SILENT=1" instead of "make" under CASINO/src. 352. [NDD] Blip converter will now stop with an error if the localization radius exceeds the WS radius of the cell. 351. [NDD] Fixed a couple of bugs that would have affected smoothly truncated localised blip orbitals. 350. [NDD] Fixed a bug that would have affected multideterminant calculations with some localised blip orbitals. 349. [NDD] Recently modified bwfdet.f90 module contained error for spin-polarized systems. Fixed. 348. [NDD] Updated manual to reflect blip changes. 347. [NDD] The localised blip routines have been merged with the extended blip routines. blwfdet.f90 has been eliminated. blip now calculates the kinetic energy and norm^2 of each orbital numerically (if the user wants this). Also increased the number of points used in the overlap test described in the manual. 346. [NDD] Generation of localised blip orbitals now done with blip.f90. blipl.f90 and singleton.f90 have been deleted. For localised orbitals, blip reads a centres.dat file of the same format as localizer, except that an optional couple of lines to specify the minimum skin_thickness can be added. [NOTE : BUT SEE 355]. 345. [NDD] The formats of the localised and extended blip orbitals in bwfn.data have been fully merged. This is backwards compatible with respect to bwfn.data files holding extended orbitals, but not localised ones. However, it is fairly easy to make the format changes for localised orbitals by hand. 344. [NDD] It is now possible to carry out multideterminant calculations in which some orbitals are localised. Note that (i) all localised orbitals must be occupied in all determinants (since it only makes sense to carry out a localization transformation among a set of occupied orbitals) and (ii) band indices etc refer only to extended orbitals. For example, if all orbitals below the HOMO are localised then the HOMO is band 1. 343. [NDD] The way in which excitations are specified is the same as for Gaussian, plane-wave and extended-blip orbitals, except for the points made in 4. The statelist_up and statelist_down input blocks have been removed. 342. [NDD] I have removed the special version of the points routine for generating the initial distribution for localised orbitals since there are plenty of cases where it causes problems, but I have not yet found a case where it does better than the standard routine. I have removed the use_std_points keyword. 341. [NDD] Slightly modified lapack.f in utils/wfn_converters/pw_to_blips so that it compiles and runs with full debugging flags in ifc, ifort and nag. 340. [NDD] Updates to manual for his recent changes. 339. [JRT] Fixed error in wfn_check.f90 where it incorrectly reports an error in the wave function derivatives for multidet calculations. 338. [PLR] Updated manual reflecting changes to backflow, Jastrow, expot orbitals, etc. 337. [PLR] Fixed integer overflow (or similar problem) which confused CASINO when reporting 'Electrons affected per elec. move' in BF-VMC calculations on large systems. 336. [PLR] Fixed the bug that prevented the orbitals associated with external potentials from working. 335. [PLR] Bugfixed runqmc --newopt incorrectly requiring nwrcon>0; expot.data incorrectly searched for as a directory--, and plot_2D --graphs now symmetrically coloured by default; plots on planes other than XY would not display nodes/particles correctly--. 334. [NDD] Changed bwfdet.f90 and mdet.f90 to allow the user to specify phases for bands that are occupied at only one of k and -k. The real band can be written as psi_k = cos(phase).Re(phi_k) + sin(phase).Im(phi_k). Phases are specified in the MDET block in correlation.data using BLIP_PHASE where phase is in radians. If a phase is not specified then either the real or imaginary part will be chosen, as was done before. Specifying phases has no effect on bands that are not occupied at just one of k and -k. Note that separate phases must be specified for each spin and determinant. The blip setup routine will write out a detailed summary of how the bands are occupied in each spin/determinant at each k point, showing the phase angle when necessary. If this gets annoying then the verbose parameter should be set to .false. in bwfdet_setup. 333. [NDD] Prevented possible division by zero in wfn_check.f90. 332. [NDD] Various changes to blip.f90 utility. Removed the dependence on the canned FFT routine singleton.f90 by using fourn. Also eliminated two of the four nearly-identical versions of the conversion routine. 331. [NDD] Made a couple more changes to localizer. Modified it to use parallelepiped-shaped localization regions instead of cubic ones (to match the little bit of blip grid that will be stored with each localised orbital in a system with nonorthogonal lattice vectors). Removed the dependence on the canned FFT routine singleton.f90. The program still uses ZHEGV from lapack, which is a routine for solving generalised eigenproblems. Apparently the best thing to do when faced with a generalised eigenproblem is to use a canned routine, so I guess that ZHEGV will have to stay for the time being. 330. [PLR] Cutoff length for mu and Phi+Theta backflow functions should have been constrained to be shorter than the minimum distance to an AE nucleus. Fixed. 329. [PLR] The eta and Phi+Theta backflow functions now use antiparallel-spin cusp conditions when spin-dep=0, resulting in more variational freedom. 328. [PLR] Format change in the BACKFLOW block of correlation.data: the PHI term now has separate entries for cusp-type and no-curl constraint, i.e., change: Type of e-N cusp conditions (0->PP; 1->AE) ; No-curl constraint (...) 1 0 to: Type of e-N cusp conditions (0=PP; 1=AE) 1 Apply no-curl constraint (0=NO; 1=YES) 0 in each set of the PHI term. 327. [PLR] Updated wherejob utility to take into account non-root processes in 'D' status. 326. [NDD] Slightly modified runqmc to allow Cheng-Rong to run on an IBM SP3. 325. Finished work on new QMC web site - now live. www.tcm.phy.cam.ac.uk/~mdt26/casino2.html 324. [PLR] Fixed no-curl constraints for the e-e-N backflow functions so that they work. 324. [PLR] Bugfixed 've' utility to stop thinking that the error bar of the final variance reported in the output file was another variance to add to the average, just because the line starts "Variance of the local energy" too. Minor format changes. 323. [NDD] Made some improvements to localizer.f90 utility. Tidied and improved the format of the input file centres.dat. Also gave it the ability not to localize some orbitals, and fixed a couple of bugs for spin-polarised systems. 322. [NDD] Modified bwfdet module to allow (+/-)k-point pairs to be singly occupied. 321. [NDD] Added capability to perform excited-state and multideterminant calculations with blips. Only promotions are enabled - Rene's fancy stuff for PW orbitals is not used. 320. [PLR] Minor changes to wherejob and update_input utilities. 319. [PLR] Utility multirun partially re-written. Made capable of reading data from a column of a file. 318. [PLR] Implemented rather exhaustive error-checking into runqmc, which will now detect syntax problems in the input file, missing files/sections of correlation.data, inconsistent keyword values, etc. The script is (should be) as flexible as the ESDF system in terms of punctuation and capitalization of keywords, and should be easy to modify. 317. [NDD] Allowed polymers (periodic in x) and slabs (periodic in xy) to be simulated using a blip basis set. Involves new keyword BLIP_PERIODICITY (-1,0,1,2,3) which specifies the periodicity of the system. If the keyword is -1 (the default) then the periodicity is determined by the PERIODIC keyword (-->0 or 3). Note that it is now possible to simulate a finite system using "extended" blips. Some care must be taken when positioning atoms for a non-periodic system: the finite simulation cell is always the parallelepiped defined by the "lattice vectors" with a vertex at the origin, so molecules should be centred in the middle of the box defined by the lattice vectors rather than at the origin. 316. [NDD] Encountered a problem with NAG due to the fact that some variables such as nr and avc are defined at the top of the bwfdet module and again in subroutines within the module, such as blip3d. I have therefore replaced the subroutine arguments by "nr_in", etc. 315. Various improvements to expval_plotter. 314. Input error checking was broken on parallel machines. Fixed. 313. Bugfix to 311. 312. Added proper check for existence of vmc.posin file on restart. 311. Behaviour and generation of multiple G vector sets in expval.data now clarified and updated. Previously if we had tried to accumulate a new expectation value in the presence of a pre-existing expval.data which did not contain that expectation value then, and if accumulating in reciprocal space, the code had the potential for being very confused about which G vector set to use. It now examines all G sets already present in expval.data, decides if it can use any of them, and if not, it will generate a new one and stick it in the file in addition to all the others and use that. All very confusing, but I think this works now. 310. [PLR] Bugfixed bad call to dcopy_eeblock in non_local.f90. 309. [PLR] Using dcopy-x routines with incx=incy=1 is equivalent to calling dcopy. Hence replaced all such calls and removed dcopy4 and dcopy6 from numerical.f90. The code may even be faster this way (6% in a test case, but wasn't timing it too seriously). 308. [PLR] Implemented 3-body Jastrow (W term) as specified in e.g., PRB 58, 6800 (1998), except that: - Global lambda factor removed (substituted by -2 and reabsorbed its modulus into the two-body core function). - Gaussian form of the two-body core function replaced by polynomial form, identical to that of the U term. Two-electron cusp conditions not taken into account to avoid loss of important variational freedom. An example of the 3-body W term and of the RPA U term can be found under CASINO/examples/electron_phases/3D_fluid, which reassuringly reproduces slightly improves- the corresponding energy in the mentioned paper. 307. [PLR] Renamed orbital_check to wfn_check. Removed jascheck in favour of an improved routine contained in wfn_check which is called after VMC equilibration, along with the Slater determinant check. Moved backflow version of this check into wfn_check. The backflow and Jastrow modules contain routines that decide which particle in a configuration is best suited for the test (affected by most terms and not close to cutoffs or nuclei). The Jastrow-checking routine will also verify that all four Jastrow routines produce consistent results. A concise summary of the outcome of the tests is printed to the output file. Removed keyword vm_jascheck, and added ke_verbose and ke_forgive. 306. [PLR] Without jascheck, routine deriv_adapt in numerical.f90 is no longer needed, so commented it out. 305. [PLR] Bugfixed unset 'plotter_active' variable, which made CASINO crash in tcms1 and franklin. Before segfaulting, tcms1 claimed it was doing a 2,000,000,000-dimensional plot, which I'd love to see. [Oops - drunken mistake on my part in 298. :-) MDT] 304. Streamlined and checked the expval.f90 error checking routines. 303. The VM_DIST_BUFFER flag was T by default, meaning that all the e-e distances and e-i distances for all the configs in varmin were computed once and stored. Since this is likely to blow the memory for even moderately large systems, and since some machine/compiler combinations (usually under Linux) will segfault if they try to allocate an overlarge array (rather than stopping gracefully as CASINO tries to insist), then it is best to turn this off by default. Added the VM_DIST_BUFFER keyword (and VM_DERIV_BUFFER) to all example input files so it can be turned on again easily for small systems on machines with enough memory. 302. Added ability to plot pair-correlation functions to the plot_expval utility. 301. Changed expval.data specification to include the dimensionality (in addition to the periodicity). 300. Added new visualization program 'plot_expval' to utils/expval_utils directory. Will do 1D/2D/3D plots - currently for density and spin density only - although the basic structure for the other 5 current expectation values is already in there. Produces either 'lineplot.dat' which you visualize with xmgr/grace, or 2Dplot.dat, which can be visualized with gnuplot via the CASINO 'plot_2D' utility which calls gnuplot with sensible options. 299. Update utils/README file which was several years out of date. 298. Added deactivate function to qmc_plotter. Insert the keyword DEACTIVATE (or deactivate) as first line in the input block and it will be skipped. [Also did some other minor tweaks to behaviour of qmc_plotter]. Probably should do this with plot_jastrow and plot_backflow too (I prefer having an optional line like this since it's clearer and less messy than having a permanent 0/1 toggle flag.) 297. casinohelp facility broken on several QMC_ARCHs. Fixed. 296. Broken 1D periodic ewald interaction still wasn't fixed in 259. It is now. 295. [PLR] More tweaks to utils Makefile. 294. Added primitive lattice vectors to expval.data specification (useful for forthcoming plot_expval utility). 293. Recent undocumented PLR changes to utils Makefile involving replacement of explicit copying of executables into bin by symbolic linking were very sensible but a bit botched causing 7 or 8 utils to stop working. Now fixed. 292. [PLR] Fixed bug in electron-by-electron VMC and DMC (problem with buffer restore when rejecting moves). The fix is reliable, but not optimal. 291. [PLR] Implemented pairing orbitals consisting of a plane-wave expansion and a gaussian expansion. Got rid of exponential pairing (and its effects on the cusp conditions). 290. [PLR] Added QMC_ARCH linuxpc-iforte (64-bit PCs with the Intel iforte compiler, i.e. tcmpc53 so far). NB, ifort will work on such machines but binaries will be around 5% slower than those of iforte. 289. [PLR] Implemented electron-by-electron backflow-DMC. 288. Read of gwfn.data broken in 286 or earlier (previous fix assumed orbital coeffs block was prefixed by the phrase EIGENVECTOR COEFFICIENTS, but modern converters use the phrase ORBITAL COEFFICIENTS, hence the confusion). 287. Added second derivatives of Gaussian f functions to gauss_mol_bf.f90 (for backflow). 286. [NDD] Multidets for Gaussians just got broken. Fixed. 285. [PLR] Fixed problem with multidet calculations set up from xwfn.data. 284. [PLR] Fixed problems with config-by-config BF-VMC and BF-DMC. 283. [NDD] Added check that nonlocalized orbitals are not used for finite systems. 282. [PLR] Fixed allocation issue (which disturbed parallel ifc-debug) and potential division-by-zero issue (which made CASINO crash on tcms1) in newopt module. 281. [PLR] Patch 272 had broken NL2SOL --the Jacobian was being reshaped the wrong way around. Fixed. 280. [PLR] Routine non_local_project_bf now uses the new one-electron versions of the backflow transformation, which may make some calculations faster (large systems or small backflow cutoffs), and solves a (seemingly) minor issue regarding the use of pseudopotentials with electron-by-electron BF-VMC. 279. [PLR] Fixed bug in multi-cycle VARMIN runs by which the first NL2SOL iteration of a VARMIN cycle could be interpreted by CASINO as a correction to the last NL2SOL iteration of the previous cycle. This bug was probably harmless. 278. [PLR] Changed NAG include file so that the dev version has the same flags as the debug one (debugging is what NAG is very good at). 277. [PLR] Added all missing 'IMPLICIT NONE's to numerical.f90. 276. [PLR] The SunFire machine at HPCF doesn't like echoing brackets, so backslashed the ones in runqmc. 275. [PLR] Fixed ve to be able to properly locate the non-local component of the e-i potential energy in the output file. 274. [PLR] More bugfixes regarding electron-by-electron BF-VMC. 273. [PLR] Set the INTENTs of rpsi, grad, lap and sderivs to 'inout' in all orbital-computing routines. This solves some minor issues with the NAG compiler and prevents new ones from appearing. 272. [PLR] Bugfixed nl2sol so that NAG doesn't choke on it anymore. There seems to be a bug in ifort 8.1 and 9.0 regarding the RESHAPE intrinsic applied to large allocatable arrays, so modified nl2sol further to keep all compilers happy. NB, sample code that breaks (segfault) with ifort: PROGRAM bug IMPLICIT NONE INTEGER,PARAMETER :: dp=selected_real_kind(kind(1.d0)) INTEGER,PARAMETER :: size1=150000,size2=148 REAL(dp),ALLOCATABLE :: vector(:),array(:,:) allocate(vector(size1*size2),array(size1,size2)) vector(:)=1.d0 print *,"Reshaping vector into array..." array=reshape(vector,(/size1,size2/)) print *,"Done." END PROGRAM bug This ifort bug is the one Andrea kept encountering with varmin. I'd suggest to move to ifort now this is fixed, as I've found some other problem with ifc which I can't locate properly. 271. [PLR] Modified sun.inc so that debug version compiles, and linuxpc-g95.inc for better debugging options. 270. [AB] Rewrote non-local.f90 module: new version of routine construct_integration_grid (use y-convention, previous routine did not fully randomize grid); delete redundant routine rotate_vec. 269. [AM/PLR] Fixed deallocation problem in BF-VMC. 268. [PLR] Updated 'multirun' script for v2.0. Updated runqmc to identify itself as runqmc instead of runcasino. 267. [NDD] Involve particle charge in construct_exp_chi in jastrow.f90 266. [NDD] Changed dmc.f90 so that ebest is updated after every move during equilibration (so ebest is the running average of the last nmove total-energy data). 265. [PLR] Modified the electron-by-electron BF-VMC algorithm so that the Slater matrices are updated and then their determinants computed using LU decomposition, which seems to be faster than using the update_dbar routine in all test cases. So no Woodbury algorithm is to be implemented. 264. [PLR] Added utility 'update_input' which converts 1.8.x input files into the 2.x.x format. File correlation.data is generated from jastrow.data and backflow.data (if present), and heg.data is taken into account (for fluid phases only). The script has some limitations, but can convert most of the old examples successfully. Additional features on request. 263. Removed redundant runvmc_dev and runvmc_functions utilities from the distribution. 262. Changed name of CRYSTAL run script from 'run' to 'runcrystal'. 261. Changed name of 'runcasino' script to 'runqmc' - runcasino is too awkward to type for something we need to enter so often. 260. Changed name of old 'runqmc' script to 'multirun'. Note that this script needs to be updated to reflect current realities. 259. [PLR] 1D periodic e-e interactions broken since patch 42. Fixed. 258. Removed old run scripts from the distribution (weep - tens of thousands of lines much sweated over). Kept for reference in utils/old_run_scripts until error checking etc. is incorporated in the new runcasino script (soon to be renamed runqmc). 257. [PLR] Added support for backflow + electron-by-electron VMC, which is faster than config-by-config VMC. The implementation is not complete, in the sense that the one-electron update algorithm is used on the Slater determinants several times for each electron move, instead of using the Woodbury formula just once. As an example: the neon atom with backflow is 4 times faster with VMCMETHOD 1 than with 3 (because the optimal CORPER is 20 instead of 400, and that compensates for the inefficiency of moving one electron and updating most of the Slater matrices). 256. [PLR] Added the ability to introduce the homogeneous backflow term in systems with AE atoms, and limited the cut-off lengths of the e-N and e-e-N terms to the interatomic distances in such systems. The user needn't do anything special for all this magic to happen. 255. [PLR] The no-curl set of constraints was wrong (hadn't taken the cut-off functions into account). Now they should be correct. Added a numerical check of the curl of the backflow displacement... which shows that something's still wrong. This'll be fixed shortly. 254. [PLR] Set VM_DERIV_BUFFER to T by default in the source (as was in the old example input files before we got rid of excess keywords). 253. [PLR] Bugfixed VE utility. 252. [PLR] Full support for g95 in QMC_COMPILER (with thanks to the g95 developer for the prompt implementation of requested features). 251. [MDT/PLR] Fixed sun.inc make include so that it compiles on tcms1. 250. [PLR] Added QMC_ARCH linuxpc-ifort-tcm-parallel. 249. [PLR] Moved allocation & print-out stuff from awfdet_eval to new awfdet_setup. 248. [PLR] Fixed d2s so that the space before positive numbers is not deleted by an intermediate trim(), and set the default character for exponentials to 'E' rather than 'd'. 247. DELETED 246. [NDD] Fixed error in blipl.f90 utility from 238. Also rearranged and tidied. 245. [NDD] Second derivative arrays could be accessed without being allocated during under certain circumstances if backflow is not activated. Fixed. 244. [PLR] The ability of VARMIN to use VMC config files with more configs than required, generated using more nodes or more configs per node --which was introduced somewhere between patches 216-222-- was buggy and no parallel VARMIN runs (even with the right number of configs) would work. Fixed. 243. [PLR] Bugfixed backflow and varmin modules regarding patches 219 & 221. 242. [PLR] Followed indications issued by NAG & ifort compilers in debug mode to keep them quiet about backflow and jastrow modules at compile- and run-time. 241. [PLR] Corrected minor typo in linuxpc-ifc-tcm-parallel.inc, and another in ve utility. 240. [PLR] Bug fix for 239. 239. [PLR] New no-curl constraints for backflow. 238. [NDD] Fixed various infelicities for finite systems with a periodic wave function (e.g. doing an atom from a plane-wave calc.). 237. [AM] Bugfix in blwfdet.f90 (lmax not zeroed). 236. [PLR] Bugfixed intents of variables in Jastrow precomputing routine. 235. [PLR] Bugfixed BF-VMC problem with e-i distances. 234. [PLR] Merged constraint matrices for Phi and Theta backflow terms, in preparation for new set of (joint) constraints. 233. [PLR] Updated qmc_compiler script so that ifc 7.1 is no longer treated approximately. 232. [PLR] Removed seevarmin, vet, ve and ve_new. Replaced by a single, improved 've' script. Updated manual to reflect this. 231. [PLR] Added a maximum log size to qmc_compiler. 230. Added 'expval_plot' block to list of input keywords, in anticipation of forthcoming 'plot_expval' expectation value plotting utility. 229. [AM/PLR] Two other recently introduced (219-222) allocation/deallocation problems fixed. 228. [PLR] Some I/O operations in large newopt calculations caused CASINO to go into D status -uninterruptible sleep- for 63% of the (real) time. Some minor modifications seem to have reduced this to less than 33%. NB, a process in D status does not consume CPU time, and hence this is reported as 'real time' in the output file. The problem is likely to be caused by inefficient access to large (600MB) files -at least when using ifort 8.1 on a Linux PC. 227. [MDT/PLR] Some variables in jastrow.f90 (modification 222) were zeroed without being allocated. Fixed. 226. [MDT/NDD] Pathscale compiler on maxwell failed to compile new wordwrap routine. Turns out to be compiler error - routine rewritten so that this no longer happens. 225. Utils routine 'lapack.f' no longer compiled on Sun f90 compiler - fixed. 224. [AM] Added cross derivatives of localized blip functions for backflow. 223. Produced new QMC web pages reflecting the changing times [some pages also updated by RN]. 222. [PLR] The routine for computing the Jastrow factor has been split into five, allowing e.g. precomputation of redundant derivative terms (grad_i u_ij=-grad_j u_ij, etc.) and easy implementation of three-body Jastrow (shortly). A reasonable speed-up can be noticed, specially in VARMIN [NB, VARMIN results are not exactly the same as before. Tested that this is just numerics]. Renamed all instances of 'newjas' to 'jastrow', as no 'oldjas'/'jasfun' is now present. 221. [PLR] Added the ability to buffer inter-particle distances in VARMIN. The more particles in a system, the better this is for CPU time. However this can be highly memory-demanding, so have added input keyword vm_dist_buffer, which can be set to F if any problems are found. 220. [PLR] Electron-electron distances buffered in VMC. No extra storage was required. 219. [PLR] Clear as it seems that using routines like dcopy accelerate CASINO, the code now has lots of such calls, plus calls to similar routines that also take potentially huge matrices by reference as vectors and operate on them. This is found to work rather well, even on pointers (DMC) and when copying equally-shaped arrays. An overall speed-up should be expected. Timings (seconds) for some small calculations for above four PLR mods : Before After Neon SJ-Varmin 1298.7400 1022.8100 (2 cycles + 3 VMC) Neon SJ-DMC 546.9000 474.4700 3D-HEG(38) VMC(method3) 179.6600 165.8600 3D-HEG(38) BF-Varmin 1738.2300 1422.2100 (2 cycles + 3 VMC) 2D-HEG(26) Varmin 505.4800 314.7400 (2 cycles + 3 VMC) Some of the varmin runs don't actually have the same number of iterations, so the numbers are not to be taken too seriously, but I (PLR) would say a 10%-20% general speed-up can be expected. 218. [PLR] Fixed issue (possibly compiler-dependent) with NewOpt by which the BG4 array could not be written all at once to varmin_coeffs.data if a large number of linear parameters was present in the Jastrow. All arrays now written component by component. 217. [PLR] Moved data in tiny jaschk_data module to varmin_configs. 216. [PLR] Updated packupdate (new option -r), menugrep (better-looking), and qmc_make. Bugfixed qmc_compiler (problems in some ARCHs) and seevarmin (problems with varmin_vmc runs). 215. [NDD] Added 'wordwrap' routine to utilities to allow e.g. printing out of long error messages with proper wrapping over lines (line breaks in column 79). 214. [NDD/MDT] Various parameters were being 'overridden' on the master node in the routine 'check_input_parameters', but this was not done on the slave nodes. This could lead to amusing instabilities like using dmc_method 2 on the master and dmc_method 1 on everything else. Fixed. 214. [NDD] Improved handling of large/small determinants in equilibration and dbar_matrices. 213. [NDD] Final hist file format with headers introduced. Modified source and reblock/quickblock/update_hist/plot_hist utilities. Manual updated to reflect the changes. 212. [PLR] Reintroduced the RPA U term from the old Jastrow factor into the new correlation.data file. An example is present under CASINO/examples/generic/jastrow/U_RPA. 211. [PLR] Fixed bug in runcasino script in which the output was not redirected. 210. [PLR] Fixed reading problem in pwfdet.f90 with complex numbers. 209. Corrected error in 199. 208. [PLR] Fixed recently introduced error to do with heg_orbtype allocation. 207. [PLR] Added logging capability to qmc_compiler script. A small log is kept under CASINO/src/zlib/$QMC_ARCH/opt/qmc_compiler.log, which should contain the information required for adding support for other compilers. 206. [PLR] Updated runcasino script so that it can cope with workstation/parallel/ batch-queueing machines. Only batch-queueing ARCHs currently supported: sun-sge-parallel, opteron-sge-parallel, altix and linuxpc-tcm-parallel. This is not a final version yet (e.g., no error-checking, etc.). 205. [PLR] Substituted check_deps utility by qmc_make, which reconstructs (rather than checks) the sources' Makefile from an older one. The Makefile now includes detailed info about the dependencies. 204. [PLR] Added qmc_compiler script, which lives in src/zmakes, whose job is to avoid unnecessary recompilation of sources (this happens whenever a modification not involving interface changes is made, i.e., almost always). ifort, ifc, g95 and COMPAQ f90 explicitly supported. NAG f90 (and some others) implicitly supported. Any compiler found guilty of recompiling without a good reason can be added to qmc_compiler on request. 203. [PLR] Removed ETYPE keyword from code. 202. [NDD] obuf.f90 now only copies the required parts of the grad and lap arrays - thus avoiding an uninitialized variable problem with debugging compilers. 201. [NDD] Added new 'd2s' function in utilities.f90 which is supposed to replace 'r2s' (less cumbersome to use). 200. Added 'primitive_cell' keyword which allows one to define the true primitive lattice vectors if the ones in gwfn.data are not truly primitive (useful e.g. for density accumulation etc.). 199. Different G vector sets for density and PCF (primitive and simulation cells respectively). 198. [ZR] SDW data now fully read from correlation.data and free_particles block. 197. [ZR] Some updates for spin-density wave calcs. Added example. 196. [PLR] Added example for quasi-2D slab. 195. Minor cockup in 194 corrected. 194. CASINO previously would not stop if it found keywords in the file that it did not recognize (in fact, due to a bug, it didn't even print a warning). With recent deletions and name changes it now becomes necessary for this to be a fatal error - the code will now stop and give advice about updating input files if it detects unknown keywords. 193. [NDD] Modified various utilities to read .hist instead of .raw files. New utility to reformat old style .hist files : 'update_hist'. 192. [NDD] dmc.f90 no longer attempts to write out relativistic data - prints warning instead that one must get the relativistic energy components from reblock. 191. [NDD] Smoothed worse f77 bits out of the lapack.f file used by the blip converter. 190. Converted dfit utility from horrible f77 to nice f90. 189. [NDD] Changed name of .raw files to .hist in new reblock utility, and caused it to whinge upon encountering an old format file. 188. Changed name of new vmc.raw/dmc.raw files to vmc.hist/dmc.hist in main code. 187. Latest version of tetex on the local PCs had broken the way the casino_manual.tex file distinguishes between pdf and ps output. The tex file is now fixed such that one only needs to type 'latex casino_manual' or 'pdflatex casino_manual' to get a dvi or a pdf file. Also rewrote manual Makefile to reflect these changes, which now works on TCM alphas and PCs. 186. [NDD] If one uses very many configs and parameters, then NL2SOL can quite easily try to allocate arrays using integers so large they cannot be represented on the machine. This is now detected and the code will stop gracefully. 185. [NDD] Various bugfixes: config gen ; MPC interactions for 3D Wigner crystal ; 2D Jastrow factor ; rescaling factor in free_orbs.f90 ; min_image NAG compiler bug ; Wigner crystal pre-screening 184. Deleted following obsolete utilities : casinokill, trimdmc, plot_vmc_hist, plot_vmc_energy, rmstore, ppfit (despite item 120). 183. [NDD] Tidied utilities source code so that whingeing compilers in debug mode complain less and everything compiles OK (apart from irretrievably f77 ppfit and dfit, about which more later). 182. [PLR] Implemented kinetic energy check for non-backflow cases, contained in orbital_check.f90. 181. [PLR] Made sure e_offset is defined and reported correctly. 180. [PLR] Fixed problem with the meaning of heg_orbtype being allocated. 179. [NDD] New job chaining feature had broken subroutine timing facility. Fixed. 178. [PLR] Minor fix to plot_reblock utility. 177. [PLR] Consistently added expot on top of the local e-i potential everywhere in the code, and taught write_out_vmc how to report it. 176. [PLR] Fixed recently broken initialization of eionion when nitot=0. 175. [NDD] Removed iwant from one_electron_newjas - since it produced loads of runtime errors when the code was compiled with ifort in debug mode. 174. [ZR] Compilation in complex mode was broken. Now fixed. 173. Change 170 now done for DMC restarts as well. 172. [PLR] Fixed recently introduced npcells definition error in free_orbs.f90. 171. New better method of accumulating expval weights. 170. Added accumulation of reciprocal-space PCF. CASINO now automatically does two runs, with and without fixed-particle to calculate this. 169. Fixed bug in format_pos - it couldn't cope with vmc.posin files produced with opt_dtvmc turned off. 168. [PLR] Update to correlation_time routine in numerical.f90. 167. [NDD] Changed vmc.hist/dmc.hist format to streamlined vmc.raw/dmc.raw. [WHICH WERE LATER RENAMED vmc.hist/dmc.hist again - see note 188] NOTES for 167 : * The files don't have headers. They are just columns of data, like the old dmc.hist(2) files. * The first column of (d/v)mc.raw is a line number, which is useful for checking for mistakes made when restarting. The iteration number in VMC is passed from one run to the next using vmc.posin. (format_pos updated. Old vmc.posin files can still be read, but the iteration number will be reset to 1.) * In "normal" runs, only (v/d)mc.raw will be produced. If either the MPC interaction, a core-polarization pseudopotential or relativistic terms are used then a (v/d)mc.raw2 file will be produced. * Old (v/d)mc.hist(2) files can be converted to the new .raw format using the hist_to_raw utility. * The .raw files can be analysed using a new version of reblock. The output is fairly similar to that of the old reblock, although I have tried to remove all unnecessary info. For example, I have removed the variance of block weights column, because I can't think of any possible use for that information. * The new reblock calculates the difference between the energy and the sum of the available components. If this is constant, then it assumes the difference is eionion and compares it with the value from xwfn.data, if the latter is available. If the difference isn't constant, then reblock will grumble. The tolerance for this check is fairly loose because the precision of data in dmc.hist(2) files wasn't especially high (try comparing K and 2T-|F|^2 for data in an old dmc.hist2 file). * reblock tries to get data from input and xwfn.data. None of the things it tries to get are essential (and it can work out eionion by itself), but it can then offer appropriate units to users, etc. * The energy in (v/d)mc.raw is always the Ewald energy. If the MPC interaction is used then the MPC total energy is obtained by subtracting the Ewald energy from the total energy column and adding the MPC energy. * The external potential is now added to the local potential energy rather than the Ewald energy and the long-range part of the MPC energy. *. Columns of data from (v/d)mc.raw can be selected for plotting using plot_raw. 166. [PLR] Renamed heg.f90 to free_orbs.f90. Renamed HEG block to FREE_ORBS block in correlation.data. Updated examples accordingly. 165. [PLR] Moved spin-type analysis to monte_carlo.f90. 164. [PLR] Added 'periodicity' keyword in free_particles block. A 3D r_s can now be used in a 2D-periodic system if the notation 'r_s 2.0 non-periodic 20.0' is used. [thickness in the non-periodic direction = 20.0 when computing the density]. Other combinations of dimensionality/periodicity also possible. 163. [PLR] Added SLAB external potential. Added capability to do infinite wells (by setting Depth = +INF or -INF in expot.data). Added an EXPOT_WFN block in expot.data to specify orbitals, selectable using 'expot ' as orbital type in the free_particles block. Only avaliable type is FOURIER, which is still not fully working. Added a sample expot.data to examples, equivalent to the old-format jellium-slab example. The old jswfdet module has been removed. 162. [PLR] Bugfix for free plane-wave orbitals in idet>1. 161. [PLR] Bugfixes/updates for seevarmin, wherejob and plot_2D utilities. 160. General particle fixing in VMC and DMC for expvals that require it. 159. Added timing calls to expval routines. 158. Removed WORKSHEET and SIMPLE_INPUT directories from CASINO/examples (the former because it is now obsolete, and the latter because all the inputs are now relatively simple). 157. Added accumulation of spherical PCF for homogeneous systems. 156. Made new directory utils/expval_utils with appropriate subdirectories. This will be progressively filled with plotting and analysis tools for the various new expectation values. 155. Wrote read, write and setup routines for reciprocal and real space pair correlation function accumulation. 154. Deleted FIXED_E_POS input block. Added PCF_RFIX block which contains the type of particle as well as the coordinates of the pair-correlation function fixed point. 153. Disabled 'plot_density','d2rs','denconvert', and 'plot_corr' utilities as they no longer work. Hopefully will reimplement soon. 152. Stripped out all three kinds of pair correlation function from the code, in preparation for their complete reimplementation in expval.f90. 151. Added generic 'input' and 'input_full' example files, where the latter contains all the keywords that CASINO knows about. 150. Removed wave function block from all example inputs (forgot to do this in 144). 149. Definitively removed deprecated 'IRUN' keyword from example inputs and code. 148. Rewrote the 'modify_inputs' utility to reflect the changes in 147. 147. Changed the structure of the example input files : - new SYSTEM section at the top containing all keywords which depend on the physical system (neu/ned/isperiodic etc.) - new RUN section containing just the runtype keyword - new EXPECTATION VALUE section containing all keywords pertaining to the calculation of expectation values. - removed MOVIE section - merged the GENERAL PARAMETERS and the RARELY MODIFIED GENERAL PARAMETERS sections. Also reordered everything nicely, and updated the blurbs accompanying each keyword. Should now be able to do new system just by copying example input and changing the SYSTEM section. 146. Changed name of ISPERIODIC keyword to PERIODIC (aesthetics). 145. Changed integer INEW keyword to logical NEWRUN (I can never remember whether INEW=0 or 1 means new or old run). 144. Removed rarely-used and redundant keywords from example inputs (lots of them!). 143. Increased default GAUTOL from 6 to 7. Changed default value of CUSP_CORRECTION to .true. (why wasn't it before?) 142. [NDD] Modified graphit and plot_reblock utilities. graphit now has a title, axis labels, and a key (in the subtitle). plot_reblock now has axis labels, a title and a check that xmgrace works. 141. Bug fix for DMC accumulation of spin densities. 140. Did speed tests on various ways of evaluating expressions involving complex variables and the real parts of complex variables. Adjusted expval accumulation accordingly (and thus the behaviour 'if(expval_complex_xxx)') which was done in a very strange way in old CASINO. 139. Removed 'simple_qmc_codes' from utils directory as it is fairly pointless and nothing to do with CASINO. 138. Added routine to eval_geometry.f90 to check whether the crystal structure has inversion symmetry, which should allow CASINO to check for itself whether complex Fourier coefficients of periodic expectation values should be real or complex. 137. Added accumulation of spin density matrix to expval.f90 (untested since no non-collinear examples). 136. Fixed error in 134. 135. [NDD] Minor improvements to new orbmods.f90 module (check for unused modification functions and printout of number of parameters). 134. Added accumulation of spin densities to expval.f90. 133. [NDD] Added atomic orbital modification functions (activated by new keyword USE_ORBMODS) in correlation.data. Only works for btype==3. Added new section in manual describing it. 132. If continue to accumulate expectation value on top of a preexisting one in expval.data, and INEW=1, then there is a possibility that the user is simply using the same set of electron positions - which is pointless. Above behaviour is now flagged and the code will stop. 131. Allowed copying of sets already present in expval.data for which further accumulation is not requested. 130. [NDD] Minor bugfix in jastrow.f90. 129. Various updates to manual. 128. [NDD] DMC population renormalization has been removed. POPRENORM keyword has been deleted. 127. [NDD] Keyword USE_COEFF_FILE has been deleted, as we now don't think there's any point using newopt without a varmin_coeffs file. 126. [NDD] Linear-mode varmin has been removed: it only applied to the old jasfun.data Jastrow factor (now removed). The VM_MODE keyword has been deleted. 125. [NDD] Removed old Jastrow factor (jasfun.data). 124. [PLR] Minor updates to : seevarmin, packupdate, menugrep and checkdeps utilities. 123. [NDD] Revised manual for 2.0 release. 122. Removed the DENFT_THRESHOLD keyword, and made the gen_mpc facility always write out all G-vectors for the density. 121. Made QMC_DENSITY_MPC facility work properly. 120. Restored ppfit and associated utilities to the distribution after it was decided they were not obsolete yet after all. 119. Updated some keyword descriptions in esdf_key.f90 which had become out-of-date (following NDD observations). 118. Removed obsolete DBAR_TOLERANCE keyword (note some facility should be reintroduced at some point to test the accuracy of the the approximate update of the dbar matrices). 117. Made density accumulation work in parallel. 116. Made density accumulation work in DMC. 115. [PLR] Bugfix to 'job' utility. 114. [PLR] Bugfix to heg.f90 so that Wigner crystals work properly. 113. [PLR] Added new format examples for electron-hole phases. 112. Introduced new density normalization to new expval module. Lots of tidying up. 111. Adjusted generation of G vectors in new density accumulator to be more sensible. 110. Following NDD suggestion, changed default value of OPT_MAXITER keyword from 150 to 25, since no real benefit from using so many NL2SOL iterations in varmin. 109. Removed ENERGY_CUTOFF input keyword and replaced with MPC_CUTOFF and EXPVAL_CUTOFF keywords which give the energy cutoff for G vectors used in the FTs present in the mpc.data file and expval.data file respectively. 108. [PLR] Added new QMC_ARCH linuxpc-g95 for GNU g95 compiler (produces incredibly slow executables but what the hell - you can use it in Windows! Hurray for GNU and Cygwin!). 107. Reintroduced symmetrization of QMC density (via PERMIT_DEN_SYMM input keyword). 106. Reintroduced ability to use QMC density in MPC (via QMC_DENSITY_MPC input keyword). 105. [PLR] Added utilities job and wherejob, which handle job submissions across TCM. See README files for info. 104. [PLR] Added utilities packupdate, apply_patch and submit, which handle version changes in the CASINO tree. See README file for info. 103. [PLR] Added utility menugrep to quickly edit grep-matching files. See README file for info. 102. [PLR] Added simple 'runcasino' script, which can be used (temporarily) to run CASINO v2.0 jobs with appropriate redirection and renicing. See README file for info. 101. Removed utils/OBSOLETE directory and its contents from the distribution. 100. Modified main code to call the new expectation value density accumulation routines. 99. [NDD] Introduced a module called loc_orbs.f90 . Basis-independent localised-orbital things (e.g. the hit_index arrays for the sparse determinant-updating algorithm or the localization centres) should go in here. 98. [NDD] Both extended & localised blips now use a file called bwfn.data, although the format of the file is different in the two cases (they are just the bwfn.data and blwfn.data formats, respectively). A localized blip file must have the word "LOCALIZED" in the title. So, an old blwfn.data file should be renamed bwfn.data, and it should be ensured that the word "LOCALIZED" appears in the title. BTYPE 7 eliminated. 97. [NDD] Removed routines for handling splined orbitals, now that they have been replaced by blips. BTYPE 6 eliminated. 96. Added routines for handling density read, setup and accumulation to new expval.f90 module. 94. Created new expval.f90 module to handle expectation value accumulation. Currently does nothing but has all the right structure. 93. Minor modifications to make new MPC interaction work better. 92. Sorted out expectation value keywords (to be grouped into a new input file section when the final reorganization of the example inputs is done). Added LOC_TENSOR, STRUCTURE_FACTOR and PAIR_CORR_SPH keywords. Removed integer keyword IDEN and added boolean keyword DENSITY (for consistency). 91. [NBD/RS] Added new QMC_ARCH altix-pbs-parallel for Altix machines with ifort compiler and PBS queueing system. 90. [PLR] Fixed error in vmc.f90 and vmc_utils.f90 regarding Q. 89. Removed references to jsden.dat file from source and documentation. This was formerly used for plotting density in BW's 2D jellium slabs. 88. [PLR] Bugfix for pairing+backflow 87. [PLR] Bugfix for pairing in idet>1 86. [PLR] In VMC, if q (determinant ratio when proposing a move) is <1E-150, q is zeroed and no check of q*det_old is performed (the move was going to be rejected anyway, there is no reason to error-stop at that point). 85. [PLR] Reimplemented fitting gaussians to exp(-r/Rex) for pairing orbitals. Routines for solving linear systems added to numerical.f90; these are almost identical to gelim/subs in dbar_matrices, except that return an error if A is singular. 84. [PLR] Bugfix for orbital_check in 2D mode. 83. [PLR] Renamed lineplot to qmc_plot, and added capability of generating 2D and 3D data (see casinohelp for info on the minor format changes; output files are now lineplot/2Dplot/3Dplot.dat). Added ability to plot nodal surfaces/curves/points. Made capable of plotting pairing orbitals correctly. 82. [PLR] Added utility plot_2D to quickly generate graphs of 2D qmc_plots. See corresponding README file for info. 81. Removed keywords flagged as REDUNDANT in esdf_key.f90 plus references to them elsewhere in the code. Except 'etype' which is still sort of used - PLR should remove this when he's finished his current changes. 80. Removed utilities associated with spline basis (copies kept in utils/OBSOLETE) and made appropriate modifications to utils Makefile. Removed spline examples. 79. [PLR] Fixed bug where DMC electron-by-electron algorithm was getting mixed up with config-by-config arrays. 78. [PLR] Fixed bug with spin dep in chi term of Jastrow. 77. [NDD] Added a couple of traps for denominators being zero in the drift-velocity and local-energy limiting. 76. [NDD] Fixed problem with new DMC algorithm. 75. [PLR] Added ability to handle arbitrary particles (i.e., cusp conditions, Coulomb interaction and kinetic energies now coded). NB, only fermions with isotropic, positive mass. 74. [PLR] Added ability to use free-particle orbitals (plane-waves, crystalline and pairing) in systems with atoms, in addition to the atomic ones. NOTES for 74/75: * Array nele is now split into nuc_nele and heg_nele, so that nele = nuc_nele + heg_nele, and nuc_nele=(neu,ned,0,0,0...). Nuclear-orbital routines must use nuc_nele = no of nuclear orbitals Free-orbital routines must use heg_nele. The size of the Slater dets is still nele x nele, so nothing else is affected. * The ability of mixing pairing and single particle orbitals requires taking care of particles organized by columns/rows in a given determinant (not the same number of both). This is done through update_by_column, missing_det, upd_spin, etc. (just something to bear in mind --examples in dbar_matrices.f90, calc_q(vmc.f90),... well, all over the place). * The flags holes/noholes refer strictly to the presence of two additional particles of charge -1 and equal masses. These are only used in the old Jastrow (no new functionality there) and in the new Jastrow to keep the eh_nocollapse functionality. * Spin and spin-pair dependencies should now be handled through arrays which_ssingle, which_spair, etc, held in store.f90. Examples in dtvmc optimization @ equilibration(vmc_utils.f90), jastrow.f90, backflow.f90, taueff.f90... "Spin-families" and "equivalent particles" are defined and kept handy in store.f90. 73. [PLR] Updated seevarmin to report which correlation.out.x corresponds to which VMC result. 72. [PLR] Removed the need for DTVMC2 (keyword indicating separate VMC time step for holes) by using an automatic spin/spin-pair dependence analyser, which also affects the way Jastrow and backflow parameters are handled. The analysis is printed out by the HEG module for each calculation. 71. [NDD] Increased efficiency in DMC config redistribution by preventing more unnecessary transfers. Added printout of number of transfers per block along with the acceptance ratio etc. for parallel runs, as this is crucial quantity for assessing parallel performance. 70. [NDD] Local energy line plots had stopped working. Fixed. 69. [NDD] Reduced number of mpi calls in the code - in attempt to improve parallel performance following recent benchmarking. 68. [NDD] Problem in new mdet.f90 module caused Gaussian setup to crash. Now fixed. 67. [NDD] Minor change to mdet.f90 to avoid compiler bug on maxwell. 66. [NDD] Further fix to new config by config DMC algorithm. 65. [NDD] Some stuff required by RG's PW occupation scheme was not allocated by default in the new mdet.f90 - so PW calculations were broken. Fixed. 64. [NDD] Fixed error in total energy evaluation for new DMC algorithm. 63. Added analytic_periodic external potential evaluator to expot.f90. The full list of 13 representations is now complete. 62. Added extensive error checking to expot.f90 module. 61. Added Fourier series to list of external potential evaluators in expot.f90. (Fourier series block now has very different format to published CASINO 2.0 spec - see updated spec in ~casino/documents). Added updated expot.data example to examples/generic/expot. 60. [NDD] Update to buffering behaviour in config_type.f90. 59. [PLR] Correction to the second of the two fixes in 58. 58. [PLR] Fixed two problems with new DMC config-by-config algorithm : - detnew and dbar_new must be zeroed first - jastrow and orbital buffering must be turned off. 57. [AM] Fixed problem writing out dtdmc in monte_carlo.f90. 56. [NDD] Fixed problem with DMC Heg pair correlation function. 55. Updated manual and examples to reflect recent changes in input keywords. 54. Removed 'configs_verbose' keyword and associated functionality (i.e. writing extra information about configs into condata_xxx files). 53. Added periodic Gaussian sum to list of external potential evaluators in expot.f90. 52. Added linear, sawtooth, cosine, numerical and numerical_periodic external potential evaluations to expot.f90 module. Added example expot.data files for all these types to examples/generic/expot directory. 51. [PLR] Inserted overflow protection in config-by-config DMC. 50. [PLR] Down-spin electrons weren't being noticed as being the spin-opposite of up-spin electrons by the new-particle handling system. Now they are. 49. Changed the default value of the energy_cutoff parameter from 20 au to 30 au (following NDD tests) 48. [AM/PLR] DMC config-by-config algorithm (dmc_method=2) now uses Umrigar's p/q mixing. 47. Corrected line 601 in monte_carlo.f90 reading use_std_points from input. 46. [PLR] Added examples for electron_phases in new format. 45. [AM] Added keyword 'dmcmethod' to switch between electron-by-electron and config-by-config DMC algorithms. 44. [PLR] Modified extrapolate_N utility to accommodate electron-hole systems.. [MDT] ..and thus deleted old extrapolate_N_eh utility. 43. [NDD] Added new keyword "use_std_points" which allows one to specify that one wants to use the standard "points" algorithm to generate the initial distribution of electrons rather than the special version for localized orbitals if btype=6 or btype=7. This is appropriate if the orbitals aren't very localized, or one has some extended orbitals as well as localized ones. 42. [NDD] Allowed use of sum_i sum_j>i instead of (1/2) sum_i sum_j/=i in interactions.f90. 41. [AM] Correction to recently-introduced DMC config-by-config algorithm. 40. Added ability to plot external potential to lineplot facility in monte_carlo.f90. (line plotter was broken following recent changes - now fixed). 39. Added various routines to evaluate external potentials to expot.f90 and modified main code to add the external potential contributions at the relevant points. 38. [PLR] Removed heg.data file and moved parameters into input (PARTICLES and FREE_PARTICLES blocks, see casinohelp for info) and into correlation.data. Large sections of heg.f90 rewritten. 37. [PLR] Removed 'exciton' units from main code [MDT : need to do this also in reblock and extrapolate_N_eh utilities] 36. [PLR] Arrays for handling arbitrary particles introduced (e.g., pmass, pcharge, popp_spin, etc.). Functionality not yet available. Flagged ETYPE, NHU and NHD as redundant. 35. [PLR] Added a more general geometry generation for Wigner crystals in FREE_PARTICLES block. 34. [PLR] Renamed vm_opt_pairing keyword to vm_opt_orbitals. 33. [PLR] Updated the POINTS algorithm in vmc_utils. 32. [PLR] Various minor bugfixes : wrong sderivs in excited HEGs ; bilayers were dealt with incorrectly by jastrow.f90 ; incorrect string formatting in backflow.f90 which could crash CASINO. 31. [PLR] Updated seevarmin utility to tackle new internal job-chaining feature. Use '--old' flag to analyse old varmin files. 30. [PLR] Made line_plotter take the reference for wave-function plots at the configuration after equilibration, so that one can do several line plots with the same reference and generate a consistent plane plot. 29. [AM] Added cross derivatives of blip functions for backflow calculations. 28. Fixed error in gaussians.f90 leading to division by zero in presence of 'floating Gaussians'. 27. [PLR] Minor modification to runvarmin script on tcm-cluster. 26. Stopped neighbour_analysis routine from including 'ghost atoms' in neighbour lists. 25. [NDD] Updated new mdet.f90 24. Added expot.f90 module which is able to read in an expot.data file containing an external potential in any of ten different representations. The ability to evaluate a potential in each of these representations will progressively be added to this module. 24. Added 'expot' keyword to input to turn on and off the use of an external potential (added to example inputs). 23. [NDD] Made sure that open_units is not repeatedly called from the same routine. 22. [NDD] Removed the ability of varmin to write xwfn.data files and input files as these are no longer optimizable. Deleted module varmin_utils which was largely concerned with this (and moved remaining readconfigs_varmin routine to varmin.f90 module.) Note that the subroutine for writing optimized orbital parameters to the (obsolete) heg.data file has been removed. The vm_opt_pairing input keyword for the time being will not work until heg.data is replaced. 21. [NDD] Moved wave function block from input file to new correlation.data file. Added optimizable flag to each det coefficient in such a way that ratios between determinant coefficients can be fixed. 20. Added a set of example expot.data files for the various different representation types to CASINO/examples/generic/expot. 18. [NDD] Modified clearup to cope with correlation.data files. 17. Fixed error in calls to compute_density_basis. 16. Introduced place holders for external potential module expot.f90. 15. Made MPC interaction work for electron-hole systems. Note however, although CASINO now knows how to evaluate the case where mpc.data contains an 'electron density' and a 'hole density', there is currently no tool to generate an mpc.data file containing two density types (denft.f90 does not do this). Note this also means I haven't tested this functionality but it should work. 14. Renamed all 'jastrow.data' files in examples to 'correlation.data'. 13. Added "#@ bulkxfer = yes" to batch script options produced by the run scripts for the HPCX machine (an option within QMC_ARCH=ibm_sp3). This is the new recommended default - apparently it allows "a significant increase to the maximum bandwidth available via the switch network". 12. Made new MPC stuff work in parallel. 10. [NDD] If there exists a BACKFLOW set in correlation.data, but backflow is not used, then the set will just be copied verbatim into any correlation.out files produced by varmin. 9. [NDD] Added 'postfit_vmc' and 'writout_vmc_hist' keywords. 8. Modified denft.f90/generate_eepot.f90/monte_carlo.f90 so that 'runtype=gen_mpc' or irun=5,6 generates an mpc.data file, rather than separate eepot.data and density.data files. 7. Modified read_mpc routine in interactions.f90 to read the new mpc.data format, and the ee_eval_mpc stuff to evaluate MPC correctly. All SCF density arrays now local to interactions.f90 - the old ones are still in density.f90 but flagged for removal when it is rewritten to handle only the QMC density (note that this has the effect of breaking the 'permit_den_symm' keyword - this will be fixed shortly). Also the qmc_density_mpc keyword will no longer work until the QMC density is fixed. 6. [NDD] Created new 'correlation.data' file containing the old jastrow.data and backflow.data. 5. [NDD] Allowed CASINO to do its own job chaining (was part of the function of the current run scripts). All output is transferred internally to input (e.g. it does not write out and then read in e.g. varmin_coeffs.data or correlation.out), with the exception of the config.in files. These are written out by VMC and then read in by varmin, etc (to be changed later). 4. [NDD] Introduced 'runtype' keyword in input to replace 'irun' (which is still allowed for backwards compatibility). 'runtype' can be one of (i) vmc, (ii) dmc, (iii) varmin, (iv) gen_mpc, (v) vmc_varmin, (vi) varmin_vmc or (vii) vmc_dmc. [MDT] Changed example files to include 'runtype' instead of 'irun'. 3. Wrote new 'make_new_mpc' utility to convert old format density.data and eepot.data files into new mpc.data format. 2. Removed density_mol.f90 module and thus the functionality for accumulating the density of finite systems. This will be reintroduced properly at a later date. 1. Changed author list. Changes made for CASINO version 1.8.2 ------------------------------------- 20.5.2005 1. Reinstated backflow. Changes made for CASINO version 1.8.1 ------------------------------------- 20.5.2005 60. Renamed gaussians_periodic_bf.f90, gaussians_periodic.f90, gaussians_mol.f90 to shorter names with 'gauss' and 'per' abbreviated. Made gaussians_periodic_bf.f90 into separate gauss_per_bf.f90 and gauss_per_cusp_bf.f90 modules as its high complexity was causing some compilers to run out of virtual memory. 59. Disabled backflow. 58. [ZR] Correction to complexwf.f90 and cusp_orb.f90 to make sure the thing compiles correctly in complex wave function mode. 57. [PLR] Broke backflow optimization with my patch 56. Now fixed. 56. [PLR] Orbital parameters in heg.data were not being written since v1.7.6. Fixed. 55. Reduced size of dscrpt character array in esdf_key.f90 from 3000 to 2000 since this causes early versions of ifort to die with an internal compiler error. The array was probably too big anyway (it represents the maximum no of characters in the description of a keyword). 54. Reduced debug compiler flags for linuxpc-ifc (and other QMC_ARCHs using the ifc and ifort compilers) since very heavy debugging causes the compilation procedure to hang for some modules. 53. [NDD] Updated init_logdet in dbar_matrices.f90 so that the same normalization is used on each processor (calculated on the master and broadcast). Previously, each processor calculated the normalization all by itself. 51. [NDD] Someone had left an nnodes=1 statement in orbital_check.f90 which would prove very unfortunate if someone tried to do a parallel calculation with checkwfn=T. Removed. 50. [NDD] Introduced max_cpu_time and max_real_time keywords. These are physical quantities with dimensions of time (hence added 'min','hr', and 'day' in addition to 's' in the list of units that ESDF understands). So on a machine with a 24 hour real time limit, one can set max_real_time to '23.8 hr' and CASINO will be forced to stop itself just before the machine tries to kill it. CASINO will halt gracefully, and the runscript will simply continue the chain of DMC runs. Good DMC input therefore something like : nmove_dmc_stats : 500 nblock_dmc_stats : 1000000 max_real_time : 23.8 hr 49. Further modification of run scripts etc. for new LAM system on the TCM cluster (linuxpc-ifc-tcm-parallel). 48. [AM/MDT] Added new examples for atoms with JRT pseudopotentials, including optimized Jastrows. New atoms : Be, C, Cl, F, Li, N, O, P, Si, Na, S. 47. [PLR] Incorporated method for filtering out outlying configs in VARMIN. This algorithm plays with the weights rather than the energies, as the old vm_plimit used to [vm_plimit now flagged as redundant in esdf_key]. New keywords: vm_filter (boolean), vm_filter_thres (double) and vm_filter_width (double). Use casinohelp for more info. 47. [PLR] line_plotter now fixes the integration grids when plotting the local energy in the presence of pseudopotentials, so that the resulting plot is not noisy in the core region any more. 47. [PLR] Changed default cut-off lengths for backflow functions. 46. [PLR] ve_new now has the capability of extracting components of the local energy, e.g. ve_new --kinetic --nonlocal ./out . 45. [NDD] Added re-rescaling of weights in varmin after some of them have been limited. 44. Adjusted the tolerances on the cusp correction algorithm (new undocumented keyword : 'cusp_threshold' - don't attempt to cusp correct orbitals with a value less than this at the nucleus). 43. [NDD] Rewrote 'clearup' script in bash and streamlined it a bit. 42. Modified line plot facility to plot out s-components of orbitals if required. 41. [NDD] Added creation of .varmin_ran_save file for the new optimization method, which ensures the random number sequence is continued between varmin iterations. 40. Fixed up compilation to work with new LAM system instead of mpich on linuxpc-ifc-tcm-parallel (TCM cluster). Hopefully this will help to prevent crashes caused by unstable cluster software. 39. Minor update to cusp correction algorithm for orbitals with multiple nodes near the nucleus. 38. [ZR] Fixed minor bug in readconfigs_varmin which caused incorrect Laplacian of determinant to be reported for vm_info=5 when the number of one of the particle types is 0. This bug did not have any affect on the actual varmin run, only on the values reported by readconfigs_varmin. 37. [ZR] Completely removed detweight_exceed check in varmin. 36. [ZR] Eliminated a call to dnrm2 in first part of compute_config_energy_linear, slightly rearranging that part of the code, bringing it in line with other parts of varmin. This also made it easier to implement complex version. Eliminated sqrt_rec_mass etc. 35. [ZR] Introduced complex wave function support in varmin. Added a few more routines to numerical.f90 to support this. 34. [ZR] Introduced non-collinear spin support in varmin. Changed configuration generation accordingly so that it outputs the sele array too, if in ncs mode NB: to save memory in varmin, the selecfg array is only allocated in ncs mode only, otherwise use dsele array instead in function calls. 33. [NDD] Calls to new indexx routine in bwfdet.f90 and gaussians.f90 could fail under certain circumstances. Fixed. 32. [PLR] Added ability to use different cut-offs in backflow eta term for each spin-pair type. Previous backflow.data files still recognized. Cutoff length is split into parallel/antiparallel unless optimizable flag is set to 2. 33. [PLR] Restored capability of not fixing the non-local potential energy in varmin by setting VM_FIXNL = F. For the correlated sampling method to work, the random integration grids are generated only once and reused throughout the run. Routines in non_local.f90 modified so that grids can be passed in and out and determinant coefficients can be supplied. It is not recommended to try large values of NLRULE1 - otherwise varmin crawls rather than runs. 32. [PLR/AM] Fixed wrong cusp conditions and use of unallocated arrays when using non-polynomial forms of the backflow eta term. 31. [AM] Bug fix in format_pos utility. 30. [NDD] Various minor bug fixes brought to light by compiling with NAG f95 debugging. 29. [NDD] Fixed uninitialized variable problem in eval_geometry.f90. 28. [NDD] Modified plot_hist utility to allow relativistic data to be plotted. 27. [AM] Modified plot_vmc_hist utility to account for the recently introduced (1.7.6 patch level 38) separate e-e and e-n Darwin terms. 26. [NDD] Fixed minor precision problem in newopt.f90. 25. Moved plotjas utility to utils/OBSOLETE directory since this is for the old jasfun.data form which no-one should be using any more. 24. [NDD] Fixed undefined variable error in blipl utility. 23. [NDD] Modified run scripts so that use_newopt is turned off in any post-fitting VMC run. 22. [PLR] Error introduced into DMC in 4 below now fixed. 21. More updates throughout the code to combat "this variable could be used before it is defined" (but isn't) warning messages that appear with pathscale compilers. 20. [ZR] Minor modifications to the complex wave function preprocessor utility. 19. [ZR] Added ability to accumulate the 2x2 spin density matrix when doing a noncollinear spin calculation. Works for VMC method 1 only. 18. [PLR] Removed unphysical electron-exchange symmetry from Phi term in backflow. Temporarily removed backflow recursion, as it kept holding back the development of other features. Added flags in backflow.data for manual specification of the type of e-N cusp conditions to be used; users are allowed to bypass AE cusp conditions, but they will get a 5-line warning if any indication is found that it might be dangerous to do so. 17. [PLR] New terms in the backflow transformation. Backflow currently given by: eta (e-e term * rij) + mu (e-N term * riI) + Phi (e-e-N term * rij) + Theta (e-e-N term * riI). The last two are specified in the same term in the backflow.data file (see CASINO/examples/generic/backflow/backflow.data). 16. [PLR] Input block and output files of the plot_backflow facility changed. Renamed, moved and updated utility plot_phi (now plot_bfphi under CASINO/utils/plot_backflow/plot_bfphi). Added utility plot_bffield to view the backflow displacement vector field as obtained using the plot_backflow facility. Sample .eps files included. 15. [PLR] Updated remaining runvmc scripts to take flag USE_JASTROW into account. 14. [PLR] Fixed initialization problem with prod_lapdet in spin-polarized systems. 13. [MDT/ZR] Some run scripts had acquired 'if(something)then' constructs even though the shell requires spaces after the if and before the then. Fixed. 12. Updates throughout the code to combat "this variable could be used before it is defined" (but isn't) warning messages that appear with pathscale compilers. 11. Fixed error in chi and f terms of Jastrow for strict 2D systems. 10. [NDD] Problem with weighted varmin calculations with blank jastrow.data files fixed. 9. [ZR] With old input files that don't specify the USE_JASTROW keyword, then setting IRUN=1 doesn't disable the Jastrow. For compatibility reasons this is a bad idea, so monte_carlo.f90 has been changed to deal with the situation. 8. [ZR] Various fixes to 1. below 7. Played with new CRYSTAL 2003 API or 'Application Programmer's Interface' which is supposed to allow other codes such as CASINO to interface with CRYSTAL. Doesn't work at all and is full of silly errors. Withdrawn by the CRYSTAL people for further testing. What a mess. 6. [PLR] Fixed bug by which the the Jastrow P term with spin_dep=3 in an asymmetric electron-hole system would get mixed up with the U term. 5. [PLR] Changed intent of variables (out->inout) in driftvector/config_gen/backflow to avoid various NAGgings. 4. [PLR] Implemented backflow into DMC. Uses a config-by-config algorithm instead of the standard electron-by-electron one, so must use smaller timesteps in general. Modified usage of backflow_ke_setup for improved performance in DMC. 3. [AM] Made runvarmin script treat backflow files correctly on QMC_ARCH=sun-opteron-sge. 2. Made esdf_help adhere strictly to F95 standard so that casinohelp will run with NAG f95 in ultra-pedantic mode. 1. [ZR] Introduced significant modifications to allow the use of complex wave functions. To use the code in complex mode, you need to type 'preprocess -c cwf' which will turn the source into the complex version which can then be compiled. The same preprocessor script can be used to change it back. At the moment the complex version can only run VMC for HEG spin density waves and density generation (irun=5). Other functionality will be progressively added. The functioning of the real version of the code is supposed to be completely unaffected. Changes made for CASINO version 1.8.0 ------------------------------------- 1.4.2005 59. [NDD] Modified newopt minimization scheme to allow optimization of electron-hole wave functions. 58. [NDD] New possible value for newopt_method for new optimization scheme : GN_MC (Gauss-Newton and Monte Carlo). This uses nl2sol, then performs Monte Carlo minimization, then uses nl2sol again, etc. 57. [PLR] Rescaled the backflow parameters for NL2SOL not to have numerical problems in systems with large cut-off radii. Made sure that calls to eval_powers do not give problems with ifc in debug mode. 56. [PLR] Fixed wrong size of variance_array in the calc_variance facility. 55. [PLR] Improved seevarmin script to print variance from the calc_variance facility if available, and format the output as e.g. 'E = -5.4424(5) au'. Added util 've_new', which is just a stripped-down version of seevarmin. 54. Updated billy utility and CRYSTAL run scripts for official version of CRYSTAL2003 (recently changed) rather than my private one. 53. Corrected Makefile error due to 51. 52. [ZR] Added 'preprocess' script for commenting out and uncommenting bits of CASINO before compilation. 51. [AM/JRT] Modified awfdet.f90 to get rid of a peak at the eN coalescence for all electron atoms. 50. [NDD] More extensively corrected version of 44 below. Optimization of L_f has been incorrect since 25 below. 49. [PLR] Modified format for input block lineplot: what_to_plot is now given by a string, and specific input for each item now goes at the end of the block (use help system for details). For energy plots, now it is necessary to specify a spin and particle number for the fixed particles, which simplifies, e.g., the task of reproducing antiparallel-spin coalesces. 48. [PLR] Added new what_to_plot='wfn', which produces a plot of the full wave function for r1 between A and B - ability to fix arbitrary particles is provided. 47. [PLR] Imposed no-cusp conditions on backflow parameters, reusing the basic algorithm in the jastrow module. For the moment, it is forbidden to use eta and Phi terms at the same time in systems with bare nuclei. 'Prevent one-electron terms' and 'Prevent duplication of eta' flags have been removed. Updated CASINO/examples/generic/backflow directory to reflect these changes in format. 46. [PLR] Fixed additional bug in non_local related to the use of backflow. 45 [PLR] Avoided division by zero in compute_block_variance when total number of moves is zero. 44. [PLR] Fixed bug in Jastrow module where the constraints on the Gamma array were not updated during varmin. This affected optimizations involving cut-off lengths for the f term, and might have been a source for inefficient cut-off optimization. For double-check purposes, test_gamma is now called from put_newjas_params - this is inexpensive in practice. [BUG APPARENTLY INTRODUCED IN 25 BELOW]. 43. Added a trap to the runvmc scripts to prevent the common error of running a VMC calc with use_newopt turned on, and having a gigantic varmin_coeffs file suddenly overwhelm your quota. 42. [AM] Added utility 'casino_to_abinit_pp' utility for converting CASINO pseudopotential files to ABINIT format. [MDT] Renamed existing 'abinit_pp' utility as 'abinit_to_casino_pp' to make the difference clear. 41. [PLR] Experimental new runvmc script for workstations: runvmc_dev. Translation of old script to bash with tidying and streamlining. Calls new runvmc_functions script to carry out general common tasks. Will replace the old runvmc script after the release of version 2.0 with new input formats. Currently for development only. 40. [NDD] Added routine for plotting the variance against a single parameter in varmin.f90 module. For developers only - must add call to it inside the code. 39. [NDD/PLR] Fixed initialization problems in lineplot facility. 38. [NDD/PLR] Fixed bug in calculation of eevecs affecting lineplot, backflow check, backflow plot and (most importantly) backflow on pseudoatoms. Backflow check should not be failed anymore, but warning instead of stopping has been kept. 37. [NDD] Added additional routine plot_lsf to newopt.f90 which is intended to enable one to make plots of the least-squares function. Rather than produce a file with LSF against parameter value or something, it displays the quartic equation of the LSF in the direction of each parameter (and gives info about the minima). These equations can be pasted into XMGrace. The subroutine is not called anywhere -- one just needs to stick a call to it at whatever point one wants to see what the LSF looks like (probably of interest only to developers). 36. The generate_eepot.f90 routine did unnecessary calculations for 2D systems using uninitialized variables even when running a 3D case (introduced in recent modifications for 2D systems). Fixed. 35. Call to new init_logdet routine (big systems only) at start of eval_dbar routine should not be made if number of electrons of current spin is zero. Fixed. 34. [NDD] Introduced new BFGS algorithm for new optimization method. This is now the default 'newopt_method' rather than CG. Added short description of the new optimization method to manual. 33. [MDT/PLR] Fixed initialization problem in vmc_utils.f90. 32. [AM] Bug fix in abinit_pp.f90 utility. 31. Minor change to random number generator. 30. [PLR] Minor improvements to backflow module. 29. [PLR] Removed call to eval_dbar at beginning of VMC for method 3, as the only thing that is needed - initial value of the determinants - is already calculated during equilibration. 28. [PLR] Made lineplot facility work in the case of backflow calculations. 27. Fixed wrong type declaration introduced in 25 below. 26. Added 'vet' to the utils/ve directory - a simple utility to extract the CPU time from a set of CASINO output files. 25. [NDD] Modified jastrow.f90 so that it is a bit faster at evaluating the basis functions for f (it doesn't reconstruct the constraint matrix A every time the coefficient data is needed.) 24. [JRT] Added core polarization potential parameters to the pseudopotential periodic table on the CASINO web page. 23. [NDD] Wrote format_varmin_coeffs utility to format and un-format the new varmin_coeffs.data file required by the new optimization scheme. 22. [NDD] Some bug fixes to newopt for parallel calculations. 21. [NDD] Added error trapping for new optimization method in check_input_parameters in monte_carlo.f90. 20. [NDD] Fixed error in new optimization method for vmc_method=3. 19. Streamlined the output of orbital_check.f90 module. 18. Backflow.f90 and new 'onedet' function in dbar_matrices.f90 were not correct if the number of electrons of any spin was zero. Fixed. 17. Update to 11 below. 16. [PLR] Fixed bug in runvarmin script for tcm-cluster introduced in 12 below ($usenewopt -> $?usenewopt) which made it stop after 1st config generation. 15. [PLR] Fixed bug in HF-VMC when using new vmc_method=3, by which array eivecs was not updated for accepted moves. 14. [PLR] Fixed bug when applying backflow to systems with pseudopotentials, caused by ignoring backflow during angular projection of determinant part. 13. [PLR] Various changes to backflow.f90: Limit parameters for rational and gaussian eta_types, so that nothing diverges during varmin. Minor changes to precomputing. Bugfixes in recursion - yet to be fully tested. Degraded failing backflow check from error to (soft) warning. 12. [NDD] Modified run scripts to deal with new optimization method. 11. Added calculation of dxx, dyy, dzz, dxz, dyz, dxy second derivatives to for periodic backflow calculations with Gaussian basis sets. Because of large additional complexity the routines with this functionality have been put in a new module gaussians_periodic_bf.f90. 10. Fixed error in cusp polynomial evaluation in gaussians_periodic.f90. Error was introduced in 1.7.5 patch level 63 - meant that cusp-corrected all-electron Gaussian periodic calculations would no longer work. 9. [NDD] Added preliminary version of new optimization method - to be tested and improved. Activate and control with new keywords : USE_NEWOPT, NEWOPT_METHOD, NEWOPT_ITERATIONS, USE_COEFF_FILE. 8. Corrected format output error in cusp correction routine when reporting the 'nodewidth' in the case where there is more than 1 node. 7. Up to now the read_mpc routine in interactions.f90 has written the MPC interaction array that it computes from the information in eepot.data and density.data into a binary file 'mpcint.raw'. This is completely pointless - so now it no longer does this. 6. Call to assert_eq in the new indexx routine in numerical.f90 broke Hitachi compiler (despite being perfectly legal), points out Kenta Hongo. Now fixed. 5. [AM] Added bwfn.data file specification to the manual. 4. Modified conditions under which code stops if vm_opt_backflow=T and backflow=F. 3. [AM] Wrote new 'format_pos' utility to convert the binary vmc.posin file to a formatted file (and vice versa). 2. Rewrote sections of the Gaussian cusp correction routine so that it copes more elegantly with multiple nodes in s-parts of the orbitals. Should also be faster in cusp correction setup. 1. Reintroduced backflow (see 1.7.6 patch level 81 below). Changes made for CASINO version 1.7.7 ------------------------------------- Version 1.7.7 is basically 1.8.0 above with backflow removed. Changes made for CASINO version 1.7.6 ------------------------------------- 19.2.2004 81. New backflow features removed for public release. Go to CASINO_1.8 where they will be immediately reinstated. 80. [PLR] Added provisional version of backflow recursion [this is not actually working yet but is needed for development purposes]. 79. [AM] Moved movie making routine from heg.f90 module to eval_geometry.f90 module. Added section to the manual regarding how to make movies, including new advice on visualization. [MDT] Removed Gavin's out of date ESDG talk movie_GJB.ps.gz from the CASINO/doc directory. 78. Sped up backflow routines significantly (around a factor of two, at the cost of readability), e.g. : Ne atom -128.914005186368 +- 0.013124176888 Time : 89.5500 seconds --BACKFLOW 43.5299 0.7600 44.2899 ( 49.46%) -128.914005186368 +- 0.013124176888 Time : 69.9800 seconds --BACKFLOW 23.9799 0.7100 24.6899 ( 35.28%) 77. Turned off default verbose mode in print_non_local_grid (info is lengthy and of no practical use to the average user). 76. [AM] Modified format_configs utility so the formatted configs.in file contains descriptive headings before each block of data. 75. Change 72 below sped up some examples but slowed down others. Removed all such changes while I work out what changes are actually beneficial. 74. [PLR] Fixed error in backflow inhomogeneous term. 73. Corrected error in variance minimization module for backflow case. 72. There were lots of cases where array sections were passed to old-style dummy arguments which could be speeded up by using assumed-shape arrays. Fixed most of them. PLR says this leads to speed up of 35% in 2D-heg backflow test case. 71. Added ferromagnetic 4x4x4 NiO (128 atoms/1024 electrons) with Gaussian basis set - as an example of a very large calculation for Lawrence Mulholland's benchmarking exercises. 70. Corrected error in hwfdet crystal where all three elements of the tempvec(1:3) array were operated on in 2d systems rather than just the first two. 69. Removed check on all orbitals being zero from hwfdet_crystal routine. See also 65. 68. Corrected INTENT(out)/INTENT(inout) issue in one_electron_newjas. 67. The write_out_vmc routine was being called with the wrong dimension for the ave array - should be nav not nave. Fixed. 66. [PLR] Added ability for plotting the new Phi term of the backflow function using the block keyword 'plot_backflow', whose syntax has been modified. See 'casinohelp plot_backflow'. Added new utility plot_phi to call GNUplot and generate a 3D plot of the Phi term, which can be saved as ps/eps/png/jpg on demand. See CASINO/utils/plot_phi/README for more information. Updated runvmc (workstation) and clearup utilities to copy/remove the new 'bfphi.out' file generated by the plot. 65. [PLR] eval_dbar will no longer complain if all of the orbitals are zero for a given particle, as this is a normal situation at intermediate steps in varmin. Substitution of zero matrix elements by 'epsilons', which was already implemented, prevents this from causing problems. 64. [PLR] The backflow self-check algorithm now skips particles which are close to cut-off lengths or ions when truncation order is < 2. This fixes some examples that were found to fail this test. 63. [PLR] Inhomogeneous term for backflow transformation (the 'Phi term') added. Backflow module slightly restructured and optimized to efficiently handle the presence of this term. 62. The arrays smat,dbar,det in subroutine caldet in module dbar_matrices.f90 should be INTENT(inout) not INTENT(out). Fixed. 61. Added comprehensive debugging flags to the linuxpc-nag.inc file in CASINO/src/zmakes. Despite the fact NAG f95 executables run very slowly, the debugging capabilities are excellent. 60. [DELETED] 59. [AM] Added g orbitals with cross derivatives to the awfdet.f90 numerical atomic orbital evaluation routine. 58. [PLR] Speedup in calculating energies using backflow. 57. Changed default of use_newjas keyword to T. 56. Fixed recently added logical==logical test in monte_carlo.f90 which should be logical.eqv.logical. 55. The syntax for deciding which Gaussian orbital evaluator to call for periodic/finite/cusp/nocusp/backflow got mangled about two days ago. Now fixed. 54. [NDD] Additional check for allocation problems in bwfdet.f90 following previously unreported allocation failures on some machines which led to segmentation faults. 53. [PLR] Fix recently introduced minor bugs in monte_carlo.f90 and varmin.f90. 52. Correction to degeneracy evaluation in 46 below was not complete. Now it is. 51. [AM] Modified sun-opteron-sge scripts for backflow. 50. [PLR] Speed up for calculating ee distances for vmc_method 3. 49. [PLR] Corrected a vmc_method 3 issue with eivecs and the F term in the Jastrow. 48. Replaced the indexx routine (originally taken from 1st edition Numerical Recipes) with a better F90 one. This routine creates an index table in order to sort real numbers. 47. ONEDET function in dbar_matrices.f90 was being called with wrong array dimensions when VMC_METHOD=3 with the result that this VMC method didn't work for spin-polarized systems. Now fixed. 46. [RM/MDT] When calculating which states to occupy in the ground state the Gaussian evaluator calculated the degeneracy of the Fermi level. The result was not correct. Now it is (but see 52). 45. Value of VMC_METHOD in input file must be 3 for backflow calculations. If it isn't the code now overrides it with a printed warning, rather than stopping and whingeing. Similarly if BACKFLOW=F when VMOPTBACKFLOW =T during variance minimization, then the value of BACKFLOW is overridden. 44. Flagged spline functions [btype=6] as obsolescent. Users should move to using blip functions [btype=4] instead - essentially the same thing. The spline functionality will not continue to be actively developed and in all probability will be removed in a future version of CASINO. 43. Varmin of backflow parameters requires prior call to orbital_setup routine. Now fixed. 42. Fixed error in write_out_vmc and write_out_vmc_heg. New variable use_jastrow incorrectly passed to module was causing compilation failure on some machines. 41. [NDD] New version of blip module bwfdet.f90 in which each node now reads the bwfn.data file by itself, rather than one node reading and broadcasting. This enables the use of larger bwfn.data files - these files are so big that one often encountered "maximum message size exceeded" errors during mpi broadcast. 40. [PLR] Sped up evaluation of the backflow eta function (3% in 2D heg test case. 40. [PLR] Sped up evaluation of the Jastrow factor for vmc_method 3 (34% in 2D heg test case). 39. Cleaned up and tidied the distribution following large number of recent changes. 38. [AM] Separated the calculation of Darwin terms in the relativity.f90 module into the electron-nucleus term and the electron-electron one, instead of calculating the sum of them together. This is useful because to estimate the energy with relativistic corrections we take E_rel = E_0 + (E_DF-E_HF) + epsilon_darwin_ee + epsilon_retard where E_rel = relativistic energy E_0 = non-relativistic total energy E_DF = is the Dirac-Fock energy and E_HF = is the Hartree-Fock energy. E_DF-E_HF takes into account of the electron-nucleus effects, and we use QMC to estimate the electron-electron effects, so it is desirable to have the Darwin terms separate. Also modified reblock utility to take account of this. 37. Fixed error in backflow.f90 where static arrays were dimensioned with variable parameters. 36. Added calculation of dxx, dyy, dzz, dxz, dyz, dxy second derivatives to gaussians_mol.f90, gaussians_periodic.f90, cusp_orb.f90 orbital evaluation modules for both Gaussians and cusp correction polynomials (required for backflow). 35. Incorporated PLR backflow documentation into manual. 34. [PLR] Dets for big systems (N>32) now always calculated. This is achieved using a logarithmic approach and an initial renormalization. In the future, this may lead to handling the logarithms of the determinants only, as ratios of determinants are the only operations performed on them. 33. [PLR] vm_info=5 has been formatted. The output is now neat, useful, easy to compare, and occupies about 50% less space than before (no data has been suppressed). NL2SOL output also prettified. 32. [PLR] varmin.f90 now slightly simpler and prettier. Comments added/removed. Merged compute_fidet and compute_lapdet into compute_filapdet (these were always called one after the other), and config_energy_verbose now contained in compute_config_energy (the former was a clone of the latter with some extra output statements). 31. [PLR] Interference between VM_DERIV_BUFFER and VM_INFO=5 now properly handled. In this case, the covariance matrix is not calculated. 30. [PLR] Added new util checkdeps. When run inside CASINO/src, it checks dependencies in the Makefile against those in .f90 files (declared in USE statements) and reports any errors that are found. Minor errors in Makefile corrected using this utility. 29. [PLR] The e-h pairing wave function now has electrons by columns(like every other system in CASINO) and holes by rows. Simplified some sections of code which handled pairing orbitals separately. Also, hwfdet_excitonic now gives the derivatives with respect to the argument of the orbitals (r_e - r_h), instead of with respect to r_e or r_h independently. This is just a sign change, implemented for consistency. 28. [PLR] Added input keyword USE_JASTROW, which replaces internal flag have_jasfun. This allows one to control the actual wave function being used and, for example, run a VM calculation without a Jastrow factor. The default is .true., and is overridden by IRUN=1 for backwards compatibility. 27. [PLR] Added new VMC_METHOD=3 in which all electrons moved at once instead of with an electron-by-electron algorithm. The sampling of the phase space seems to be improved with this method, but CORPER needs to be set to a much larger value because of the implied decrease in VMC timestep. 26. [PLR] Backflow algorithms for VMC and VM implemented. Basis-set dependent code was written for all HEG and E-H phases (except jellium slabs). Backflow turned on setting input keyword BACKFLOW to .true. Requires VMC_METHOD=3 (at least for the moment). DMC still not ready. A sample backflow.data file can be found in CASINO/examples/backflow. Varmin requires VM_OPT_BACKFLOW set to .true. to optimize backflow parameters. 25. [PLR] Implemented three selectable backflow functions: rational (type 1) as described in PRB 48, 12037 (1993); gaussian (type 2) as described in PRB 58, 6800 (1998); and polynomial (type 3), which is CASINO's own type. The selection is made in the backflow.data file. 24. [PLR] Backflow self-check implemented. This will stop a BF-VMC run after equilibration if the analytical derivatives of the determinant part of the wave function do not match the numerical derivatives. Useful for subsequent development of basis-set dependent code. An internal verbose flag is available in the backflow module. This feature may be added for calculations without backflow in the future, as it checks orbitals, derivatives, matrix inversion routines, kinetic energy calculation, etc, altogether. 23. [PLR] New block keyword plot_backflow added. This dumps configurations of particles and quasi-particles, as well as a plot of the backflow ('eta') function against r_ij, and another of collective coordinate against real coordinate. This is done after VMC equilibration. Instructions can be found using CASINO help system. 22. [PLR] Workstation scripts updated to handle backflow. Other scripts will follow soon. clearup utility also updated. 21. [AM] Added calculation of dxx, dyy, dzz, dxz, dyz, dxy to plane-wave pwfdet.f90 and numerical atomic awfdet.f90 orbital evaluation modules (required for backflow). 20. [AM] Added numerical check for the 6 unique second derivatives of the orbitals to the orbital_check.f90 module (in addition to already existing 3 gradient components and Laplacian). 19. Added documentation for new cusp correction algorithm to manual. 18. [NDD] Added documentation for new Jastrow factor to manual. 17. Fixed utils compilation problem for QMC_ARCH sun-sge-parallel. 16. Prevented Gaussian cusp corrector from trying to cusp correct orbitals whose value is less than 1.d-10 at the nucleus (before it only skipped orbitals which were strictly zero there). RM had discovered a case where this caused numerical problems. Fix cures it and also speeds up the cusp setup. 15. Updated compiler options in /src/zmakes/fujitsu.inc (request by RM). 14. Added modified scripts for Hitachi and Fujitsu machines (request by RM). 13. Added 'backflow' keyword for activating new backflow algorithms. 12. New Gaussian cusp algorithm was not able to cope with 'ghost atoms' i.e. atom-centred Gaussians with the atom removed which are used in BSSE calculations. Algorithm requires nuclear charge but this info is not provided e.g. by CRYSTAL - ghost atom flagged by Z=0 irrespective of Z of original atom. Best solution is simply not to cusp correct the ghost atom basis functions (reasonable since only really concerned with basis function tails in BSSE). Now done. 11. Tidied up CASINO/utils directory. Removed cat_configs, apprentice, convert_density, optimize_a, optimize_rex, ppfit, ppformat to utils/OBSOLETE directory and modified Makefile so they are no longer compiled. Changed documentation to reflect this. 10. CASINO wave function writer now incorporated into ABINIT 4.4.3. Changed documentation to reflect this. 9. Possible problems with cusp correction set up on parallel machines cured. 8. [NDD] Fixed error in jastrow.f90 module which could lead to floating point errors if one specifies different expansion orders for the en and ee bits in the f term. 7. [NDD] Update of run scripts for origin. 6. Update of pbs-cluster rundmc script for Australian APAC machine. 5. [NB] Fixed formatting issue with Gaussian03 converter. Latest Gaussian03 revision had changed copyright statement that converter used to determine whether Gaussian94,98/03 was used. Now fixed. 4. Removed printout of mean energies (which are all the same) for each block length in the reblock utility. 3. Added kcal/mol units option in reblock utility for atomic and molecular systems. 2. Allowed non-interactive reblocking for VMC and DMC i.e. the reblock utility won't ask you questions. Create a 'reblock.in' file containing the answers to the questions, and voila. Intended to be used when scripts running lots of calculations would like to reblock the data automatically. 1. [JRT] Upgraded CASINO pseudopotential library with latest data. [MDT] Modified various READMEs and instruction files to reflect this. Changes made for CASINO version 1.7.5 ------------------------------------- 12.2004 81. [MDT/NH] Added new ABINIT wave function and pseudopotential conversion routines. 80. Added NDD script 'tcm_comps' which shows big jobs running on computers in Cambridge TCM group. 79. Fixed recently introduced problem for cusp corrections of spin-polarized orbitals. 78. Array recently redimensioned incorrectly in gaussians.f90 - could cause the code to crash for large Gaussian systems. Now fixed. 77. Prevented run scripts from complaining if INEW set to 0 in DMC equilibration (given that continuing an equilibration run is allowed.). 76. (NDD) The CASTEP2CASINO converter generates far too many G vectors with (1/2)|G|^2 > E_cut and the corresponding expansion coefficients being zero. This is bad because it can make some utilities like wannier choke, and because it slows CASINO down. The reason for this is unknown and is currently being investigated by the CASTEP team. In the meantime, use the new utility pwfn_purge to remove the extra G vectors from a CASTEP-generated pwfn.data file. [NOTE : MDT 1/2004 - this has apparently now been fixed in CASTEP] 75. Tidied utilities so they compile in the dreaded linuxpc-nag debug mode. 74. Tidied source code (removing unused variables etc.). 73. Updated ibm_sp3 run scripts for new HPCX configuration. 72. (BW) Rewrote jswfdet module for quasi-2D HEG slabs. 71. (PLR) New keyword e_offset (physical). Allows defining an offset for the total energy per particle. Handled in vmc.f90, dmc.f90 and varmin.f90 through new term constant_energy. 70. (PLR) Using constant_energy variable for storage, calculate capacitor term for e-h bilayers. 69. (PLR) New keyword vm_smooth_limits (boolean). This smoothes Jastrow cutoff limits by extending their range from -Inf to +Inf, which is okay to do because nl2sol does forward differences to get derivatives, and that is impossible when you are already at the upper limit. Note that the actual value of the cutoff it still limited. In this way nl2sol can find its 'way back', in case it should want to lower these variables. numerical.f90 contains the routines for this conversion. 68. (PLR) Varmin now prints out actual values of the cutoffs, handled through param_print and x_print. 67. (PLR) New keyword eh_safemode (boolean). This puts limits on the value of the e-h term in the Jastrow, to avoid collapse of the wave function which occurs in some cases. Detailed instructions on how to use it can be found in casinohelp. Limits can be smoothed by using vm_smooth_limits. When using eh_safemode, it is recommended to do many (~50) short runs (~3 iterations). All runvarmin scripts modified to permit >5|10|20 (depending on script) runs without complaining. 66. (PLR) Fixed mishandling of r_s in heg.f90. r_s is per layer, as originally intended, but rho is _global_, which is what made things funny. Correction to 1.7.5b_49, which in turn corrected 1.7.5b_11. 65. (PLR) Printing of HF exchange energy for heg/e-h fluids. Unlike the KE, it is not used directly in HFVMC calculations. 64. (PLR) seevarmin utility updated to be able to sort the output correctly when nruns>9. Also takes the info from the "Correction" moves by nl2sol. 63. Sped up polynomial evaluation in gaussians_mol.f90 and gaussians_periodic.f90. [COCKED UP FOR PERIODIC SYSTEMS - SEE 1.8.0 patch level 10] 62. (NDD) Added routine for deleting the entire configuration set in DMC (used before config_backup is read in dmc.f90). The old code did not deallocate the old set of configurations when generating the new list of configurations after a block had been reset -- hence memory was wasted whenever a block was reset. Added simple tally of creations and deletions of configurations. 61. (RM) Modified Fujitsu and Hitachi SR11000 runscripts. 60. Rewrote the Gaussian cusp correction algorithm again to prevent cusp radius being forced to be inside the closest node to the nucleus. Much more complicated than it sounds. Also introduced some speedups to cusp setup. 59. [NDD] Fixed generate spline, blipl and blip for spin-polarized systems. Made blip and blipl utilities easier to use. 58. Various modifications to assist compilation on Fujitsu machines. 57. [NDD] General corrections to localized blips. 56. [NDD] Fixed localized blips so they work for finite systems. 55. [ZR] Minor fixes for non-collinear spin calculations. 54. [NDD] The blipl utility gave icut = 0 for the non-localised orbitals, but the main CASINO routine blwfdet required icut = 1 or icut = 2. icut=0 is now permitted in the main code. 53. Stopped report about KE buffers being written out by every node. 52. More improvements to stability of modified Gaussian cusp algorithm introduced in 31 below. 51. [NDD] Modified generate_spline.f90 utility to make it easier to specify that no orbitals are to be truncated. If the seventh line of the generate.dat file holds a number which is less than 0 then no orbitals will be truncated. 50. [NDD] Modified vmc.f90 module to make it easier to get local-energy variances with error bars. If the keyword calc_variance is set to T then the local-energy variance will be calculated for each block. If several blocks are simulated then the error bar on the mean variance will be calculated at the end of the run. 49. [NDD] Code was stopping with 'area scaling problem' on running 2D bilayer electron gas. Now fixed. 48. Increased default 'nice' value used by the workstation run scripts to +15 following whingeing by computer officer. 47. [NDD/MDT] Fixed issue in mpi_bcast calls in varmin.f90 which could cause some machines (eg. maxwell) to segfault during variance minimization. 46. [NDD/MDT] Fixed recently introduced bug in monte_carlo.f90 which crashed the program under certain circumstances. 45. Forgot to add units for new physical input keyword 'vm_E_guess' in all example input files. Result : all examples stopped working! Now fixed. 44. [NDD] added two new input parameters: vm_use_E_guess and vm_E_guess. If the former is true then the variance is calculated as (1/(N-1)) sum_R (E_L(R)-vm_E_guess)^2 instead of (1/(N-1)) sum_R (E_L(R)-)^2 in varmin calculations. This is one way of introducing an element of energy minimization into the varmin procedure. 43. [NDD] Changed the Wigner-crystal orbitals to Gaussian functions instead of exponentials of Pade functions. heg.data files with Pade coefficients can still be read, but the second Pade coefficients will be ignored. (No advantage has ever been seen using Pade form and Gaussians are in fact faster to evaluate). 42. [NDD] Changed the behaviour of new Jastrow when spin_dep_u=0. In electron systems, the antiparallel cusp condition is imposed for both spin-pairs, and in electron-hole systems the electron-hole cusp condition is imposed for all types of coalescence. This should usually perform better than the present version, in which all the cusp conditions are imposed, but the parameters are all taken to be the same for each spin-pair. (It is still anticipated that spin_dep_u=0 will rarely be used in practice.) 41. [NDD] Improved the default L_u for the new Jastrow. L_u is now set to the WS radius for periodic systems, and atoms and molecules are treated as separate cases in finite systems. 40. Sped up modified cusp correction setup. 39. Modified cusp correction scheme implemented in 31 below could break down for very short internuclear separations if the cusp radius exceeded the bond length. Fixed by preventing this. 38. Changed name of QMC_ARCH for parallel sun machines from sun-nqs-parallel to sun-sge-parallel since it doesn't use NQS. 37. (NDD/MDT) Fixed up CASINO to work on Opteron cluster with Sun Grid Engine queueing system. Tested on Cambridge HPCF machine 'maxwell'. New QMC_ARCH opteron-sge-parallel. 36. Fixed drift_diff_nucleus corr routine in limits.f90 which could occasionally give a divide-by-zero error. 35. (DA) Fixed error in PW to blips converter blip.f90 which meant spin-polarized systems didn't work with blip basis sets. 34. Fixed typo in gaussian9x-03 wave function converter which prevented the utils from compiling. 33. Expanded CASINO lineplot facility to allow for plotting of local energy along a line with N-1 electrons fixed in equilibrated positions (the positions of some or all of these N-1 electrons may also be specified in order to investigate e-e coalescences). 32. Changed lineplot units from Angstrom to a.u. 31. Implemented improved cusp_correction scheme for Gaussian basis set calculations which takes better account of the contribution at a site from Gaussians on neighbouring sites. Leads to improved behaviour of the local energy near a nucleus. 30. [NDD] Minor change to a loop in interactions.f90 to avoid compiler bug on Opteron cluster. 29. Added deallocate(sele) statement to varmin.f90 to prevent Hitachis being confused. 28. Fixed minor issue with Gaussian03 support in the Gaussian to CASINO converter. 27. Stopped scripts changing nequil to 0 in multiple chained VMC jobs. This was unnecessary and caused problems with the new opt_dtvmc feature. 26. Added new QMC_ARCH : linuxpc-efc-pbs-parallel for parallel Itanium clusters using the efc compiler and the pbs queueing system (for J. Pitarke, Bilbao). 25. Recent change to new jastrow.f90 module prevented it compiling on a Hitachi. Now fixed. 24. Tidied DMC main module by moving all density/pair-correlation stuff to internal subroutines. 23. (PLR) Fixed nl2sol.f90 so that it would compile with the Linux pgf90 compiler. 22. (AM/NDD) Fixed problem with the check on the nuclear charges used for imposing the e-n cusp condition via the Jastrow. 21. (PLR) Fixed error whereby drift-vector terms of the kinetic energy were not added to the total energy for systems with optimizable orbitals. 20. (PLR) Fixed error in new varmin KE buffering scheme, cause by setting all five 'jas_eval' flags to one, instead of only activating for the terms that are present. 19. Changed format descriptor for dmc.hist2 write to avoid overflow in relativistic calculations in heavy atoms. 18. (NDD) Fixed recently introduced error which caused VMC to hang after config generation! 17. (PLR) Improvements to KE buffering scheme introduced in 13 below. 16. (PLR) Updates to seevarmin and runqmc scripts. 15. (PLR) Changed src Makefile so one can individually clean up dev/debug/prof directories in addition to opt. 14. Added lots of examples for all-electron atoms with numerical orbitals (Jastrows currently being optimized). 13. (PLR) Implemented KE buffering scheme for variance minimization (new Jastrow only). Produces very significant speedups in most cases. Controlled by logical vm_deriv_buffer keyword. 12. (PLR) Input keyword vm_info redefined. Inserted vm_info=3, which means print out variance derivatives when performed. Inserted it there because it requires no extra computation, and weights do. vm_info>2 shifted to >3. Also, for vm_info>1, forced printing of correction moves by NL2SOL. 11. (PLR) Modified heg.f90 so that r_s is taken as 'per layer' in bilayer systems. 10. (PLR) New utility 'runqmc' - script to do multiple CASINO runs in sequence changing any input variable after each run. Works only on machines using the workstation scripts (non-batch machines). 9. Added new QMC_ID = jaist for QMC_ARCH = altix (Ryo Maezono). 8. Corrected a problem introduced with the VMC timestep optimization which could lead to different random number streams being used on different architectures and hence to slightly different answers on, say, Alphas and PCs. 7. Heavily tidied the VMC module, since too many people had strapped extra bits (pair correlation functions etc) into the middle of the main code. All this stuff has now been transferred to small internal subroutines at the bottom of the module. 6. Made VMC module write optimized timestep and state of random number generator at end of each block instead of at the end of the calculation. This allows you to correctly restart a multi-block VMC job if you should kill it in the middle of a block. 5. (PLR) Implemented plane-wave expanded orbitals for electron and electron-hole Wigner crystals (etypes 2 and 5). 4. (PLR) Added 'seevarmin' - a new utility script to grep useful numbers out of the various output files produced by a variance minimization calculation. 3. (PLR) Clarified handling of 2D bilayer systems with the new Jastrow factor. 2. (PLR) Added 2 new subroutines for calculation of analytical 1-body density matrix of excitonic insulator phase with plane-wave orbitals. 1. (PLR) Overhaul of treatment of Jastrow and optimization for all different kinds of electron-hole phases. Made sure all weird combinations of options still work. Changes made for CASINO version 1.7.4 ------------------------------------- 11.6.2004 28. (MDT/NDD) Rewrote the manual to reflect the existence of the new Jastrow factor. Documentation for the old one is still there (since it is still supported) but relegated to an Appendix. 27. (NDD) Added little script to kill casino jobs on workstations. See utils/kill/casinokill. 26. Some tidying up of compilation and run scripts for QMC_ARCH ibm_pseries. 25. Added list of results for almost all examples with new Jastrow factor to CASINO/doc/NEW_JASTROW_RESULTS. 24. (PLR) Fixed some minor printing issues in varmin.f90 to do with the new Jastrow factor. 23. Fixed error introduced a year or so ago which stopped multideterminant calculations from working if the multidet info was in the wave function file, rather than in the input file (e.g. if it was produced by a CIS calculation). 22. (NDD) New Jastrow factor didn't work for strict 2D systems. Fixed. 21. Fixed minor error in write_list_int calls in jastrow.f90 which could have led to problems when dealing with large numbers of ions. 20. (RM) Minor modifications to Hitachi SR11000 run scripts. 19. Added almost complete set of examples of optimized new jastrow.data files for most atomic and molecular examples. 18. (NDD) Changed default variance minimization behaviour : if the jastrow.data file contains no parameters, HFVMC will be used to generate the configurations (i.e. not using the - usually bad - initial guess at the Jastrow). The check on read and computed config energies will be skipped. 17. (NDD) Introduced modified version of the 'reblock' utility which uses less memory and can therefore be used to analyse very long dmc.hist files. It only reblocks one data column at a time, and is considerably less fancy than reblock. The new utility is called 'quickblock'. 16. (NDD) Modified 'clearup' script. 15. Changed default truncation order in examples/generic/new_jastrow files from 3 to 2. Changed default for 'Prevent duplication of u and chi terms' from 1 (yes) to 0 (no). 14. (NDD) Yet another increase in speed for evaluation of f functions in the new Jastrow factor module. 13. (NDD) Added basis function buffering in new jastrow module, which can decrease the time spent evaluating the jastrow in certain circumstances. 12. (RM) Modifications of the Hitachi run scripts for SR11000. 11. (NDD) Considerably increased the speed of evaluation of f functions in the new Jastrow factor module. 10. (NDD) Another spin-dependence option for electron hole systems: if spin_dep_u=3 then there will be separate parameters for parallel and antiparallel electron-hole pairs, as in the old Jastrow. 9. (NDD) Made change to q term in the new Jastrow factor : different q functions are no longer required for different atoms (changed sample input in CASINO/examples/generic/new_jastrow/pw). Also added the option of fixing the expansion coefficient for one G-vector in the new Jastrow factor q term to be the negative of another. If a G-vector has label n and a second has label -n, then the second expansion coefficient will be minus the first. This will help reduce the number of free parameters. 8. (PLR) Minor corrections to correlation time calculations (manual, reblock utility, and vmc_utils.f90 module). 7. (NDD) Attempted to improve the default behaviour (i.e. for initial guesses when all parameters are zero) of the new Jastrow factor by averaging over fits of the optimal alpha_0 against cutoff length for four systems (SiH4, ClO, Ne and Si) and adjusting the default parameters accordingly. 6. (PLR) Introduction of correlation time calculation in 1.7.1 led to recently discovered error when using the MPC interaction. Fixed. 5. Fixed error in the parallel version of generate_eepot.f90 which affects 2D systems. 4. Subroutine timing was turned off by default in the previous release (it can be reactivated using the timing_info input keyword) but some calls to qmc_barrier were still being made before the timers were switched off. Hence spurious timing info for this one routine was appearing in the output. Fixed. 3. Reinstated the 'cusp_control' keyword used for controlling the radius for cusp corrections with the *old* algorithm. Required for a systematic investigation currently being performed. 2. (NDD) Added two new terms in the new Jastrow factor for periodic systems : plane-wave expansions in r_ij and r_iJ. 1. (ZR) Added basic functionality for doing VMC calculations with non-collinear spins. Changes made for CASINO version 1.7.3 ------------------------------------- 27.4.2004 (FROM NOW ON, CHANGES WILL BE NUMBERED TO ALLOW PEOPLE TO SPECIFY SPECIFIC DISTRIBUTIONS MORE ACCURATELY e.g. AS VERSION 1.7.3 PATCH LEVEL 24 OR WHATEVER). 41. (NDD) Added new spin-pair type (2) for electron-hole systems: eueu=eded, huhu=hdhd, euhu=euhd=edhu=edhd which should probably be the most efficient choice for the new Jastrow factor in such cases. 40. (NDD) Some tidying of varmin.f90. 39. (PLR) Added ability to fix some coefficients to be constant when using orbitals expanded in plane waves for electron(-hole) systems. See examples/electron_hole_phases/3D_excitonic_insulator_pw/heg.data 38. Inserted some deallocate statements in the backup_config routine in dmc_utils.f90 since the lack of them appears to cause problems on a Hitachi SR11000 (pointed out by RM). 37. (ZR) Ability to do HEG calculations with the PW module had been broken. Now fixed. 36. (NDD) Fixed error in dmc.f90 that occurred when using mass ratio between electrons and holes different from 1. 35. (ZR) Added some stuff about pair correlation functions to the CASINO manual. 34. (ZR) Made the density.data generator module denft.f90 work for strict 2D systems, improved behaviour generally, and fixed some infelicities. 33. Ryo has modified some run scripts to make his Hitachi SR11000 work. These are now included in the distribution. As these are not backwards compatible with other Hitachis, they need to be setup using a QMC_ID variable (= 'nims') in addition to QMC_ARCH=hitachi, so the utils Makefile knows which scripts to use. This is a temporary hack until the general run scripts for batch machines are completed (hopefully soon). 32. Stopped non-master nodes from pointlessly opening and closing a file that they don't write to/read from in dmc_utils.f90. 31. Added NDD simplified input file and a few notes to directory examples/SIMPLE_INPUT. Hopefully will be useful for beginners. 30. (JRT) Added improved awfdet.f90 and numerical.f90 with improved numerical accuracy in interpolation. 29. Fixed recently introduced error in workstation rundmc script. 28. Fixed up errors and incompatibilities that had crept in to the compilation process on Hitachi machines (whose compilers won't e.g. allow more than 1 module per physical file etc - so now we have separate jastrow.f90 and mat_inv.f90 modules). Now have access to Ryo's Hitachi SR11000 so I can test. 27. Stopped non-master nodes from pointlessly opening and closing vmc.posout in vmc.f90. 26. Added new QMC_ARCH : ibm_pseries . Meant for e.g. IBM Pseries 655/690 using poe instead of a batch system. To be tested on 'sura', Japan by Kenta Hongo (I have no access to such a machine). 25. (NDD) More tidying of the new Jastrow module. 24. (NDD) Various bug fixes on the new Jastrow module. 23. Set default number of runs with the workstation runvarmin script to be '-n 3 -v' i.e. three config generation/varmin iterations followed by a final VMC run. 22. Fixed recently-introduced problem that stopped eepot.data generation (IRUN=5) from working correctly in systems with atoms. 21. (NDD) Added better default value for alpha_0 parameter to improve the initial guess for the Jastrow when all parameters are set to zero. Added facility to plot the Jastrow factor (new input block keyword : JASTROW_PLOT). Changed the format of the new jastrow.data file to allow (among other things) for future introduction of angular dependence. 20. Modified the runvarmin and runvarmin1 scripts to flag up likely mistakes by users when mixing up old and new Jastrow factors. 19. The ve utility script used a variable called $time, which meant that it occasionally echoed Unix timing information to the screen on execution. Now fixed. 18. Changed default interpolation order for numerical orbitals after careful calculations of the helium atom revealed the second derivatives were not being calculated accurately enough to get the TI kinetic energy right. Default increased from 4 to 5. 17. Added complete set of smooth relativistic HF pseudopotentials generated by JRT to the CASINO library web page. These should hopefully be much better than the ones that have been up there for the last few years. These are to be tested. More details when we have them. 16. Updated the web FAQ from txt to HTML. 15. Changed vmc.f90 so that config.in is only opened on the master node, as opening it on all nodes seemed to annoy hartree (a computer). 14. (NDD) Added new Jastrow factor module jastrow.f90 with associated changes in the rest of the code. Note - until further notice do not use this unless you are NDD or MDT - it is currently for testing purposes only. The file containing the new Jastrow is called 'jastrow.data' as opposed to the old jasfun.data. 13. Added helium atom example with new Jastrow factor : recovers 99.8% of the correlation energy in VMC. Which is good. (Optimized jastrow.data also added for beryllium atom). 12. Added new keyword 'timing_info' (default F) which can be used to activate/deactivate the subroutine timers. Some evidence has accumulated that on machines like Alpha or PC clusters where the timers are relatively slow then the collection of detailed timing information can adversely affect the performance of the code. As no-one really needs this information apart from developers, then the subroutine timers have now been turned off by default. 11. Rewrote vmc.f90 to take smarter approach to reduction over nodes of statistics accumulation arrays. It now does no work for energy components which are not actually required (it now treats MPC components (4 numbers), core polarization (3 numbers) and relativistic effects (5 numbers) as optional). Should speed things up a little bit on parallel machines. 10. (DA/MDT) Corrected mistake in blipl.f90 and blip.f90 PW-->blip converters. CASINO formatted the blipl.f90 file. 9. (PLR) Increased the default length of the descriptive blurb at the end of each line in the file 'input' to prevent the descriptions getting cut off. Changed all the examples to reflect this. Changed the default field lengths in the 'modify_inputs' script. 8. (JRT) Fix in the linear extrapolation to r=0 from the vicinity of the nucleus in the 'orbitals on a grid' evaluation module (awfdet.f90). Should have hardly any effect, but it's nice to get these things right. 7. Changed the sun-nqs-parallel run scripts so they are more specific about which of the nodes (in the sense of collections of processors) CASINO is running on. 6. Fixed error in a format descriptor when writing out relativistic components of the total energy in DMC to the dmc.hist2 file. Previously a space was missed out so that fields more negative than -100000 would run into each other - and hence reblock would no longer be able to read this file. 5. Minor change to tcm-cluster run scripts for our PC Cluster : the system administrator had changed the queueing system so that the total requested job time summed over all jobs must be less than 96 hours - otherwise the job would just be dumped and would never start. Unfortunately nobody told the CASINO run scripts about this so they would just hang around in an infinite loop waiting for the job to appear in the queue. Now fixed. 4. Minor change to new (but legitimate) mpi_gather statement in config_gen.f90 - since Ryo managed to find a strange computer which didn't like it. 3. Added Dario's new non-orthogonal localizer utility in in CASINO/utils/wfn_converters/pw_to_blips. This is not yet officially supported or documented but it's there to play with if you want. 2. Minor changes to points algorithm in vmc_utils.f90 and to the localized blip evaluator in blwfdet.f90 for btype=7 calculations. 1. Removed option for setting opt_dtvmc=2 in input (==> optimize dtvmc by minimizing the correlation time). PLR found that optimizing the VMC timestep in this way took far too long and had very little benefit over just automatically changing the timestep until the acceptance ratio roughly equals 50%. Changes made for CASINO version 1.7.2 ------------------------------------- 28.2.2004 - DMC error in relativistic effects for atoms fixed. - Reinstated old algorithm for calculating the cusp radius in cusp-corrected orbitals expanded in Gaussians. The newer algorithm, which led to much smaller cusp radii, seemed initially better but in fact seems to give rise to much larger time step errors. - Improved assignment of electrons to particular atoms in the points algorithm for initializing the electron positions so that it needs correcting less often via the edist_by_ion block in the input file. - (PLR) Added estimate of correlation time to VMC and to the reblock utility. - (NDD) Changed vmc.f90 so it does not call config_energy to calculate the energies of configurations unless VMC_METHOD=2 or NLRULE1 /= NLRULE2. Note that this means setting NLRULE /= NLRULE2 now has a significant performance disadvantage (unless the calculation is all-electron, in which case it doesn't matter). - (NDD) Changed vmc.f90 so that only the master node writes out configs to config.in. Should give significant speed up on certain parallel machines. - Fixed setup problem with serial Lahey compilation. - (AM) Added relativistic terms to plot_vmc_hist utility. - Added built-in hard limit to the number of configs per node in DMC - used only if the user is not turning on automatic catastrophe recovery using the TRIP_POPN keyword. If a population explosion occurs so that the population is greater than the target NCONFIG * 5, then the job will now be stopped directly. The hard limit is desirable since it has been found that Linux machines tend to crash if the memory limit is exceeded, rather than allowing CASINO to stop with an error message following failed new config memory allocation. - (NDD) Modified the DMC algorithm to enable the use of the modifications to the DMC Green's function in the presence of bare nuclei, suggested in the Umrigar DMC paper J. Chem Phys. 99, 2865 (1993). Activated with new keyword : NUCLEUS_GF_MODS. Should be useful for reducing time-step errors in all-electron calculations. Added documentation to manual. (extensive testing required - to be done by MDT). - Tested above modifications - results OK. Set as default for all examples containing all-electron atoms. - Fixed various uninitialized variables which showed up only running in debugging mode. No apparent adverse effects. - Replaced CASINO/examples/crystal/pw/silicon jasfun.data files with ones that have actually been optimized (and have the recommended number of parameters)! (also for blips). - Fixed problem occurring in variance minimization on parallel machines if NEIGHPRINT > 0 in input. - Fixed uninitialized variable problem for relativistic calculations. - Modified run scripts and default optimization levels so CASINO runs correctly on the new SGI Altix machine 'newton' in Manchester. - (NDD) Wannier converter in CASINO/utils/wannier originally written only to work with phase conventions of the JEEP PWDFT program. Possibility of failure with other plane wave codes. Now real orbitals are constructed using the ones supplied which are then reorthorgonalized and renormalized, which should remove any potential problems. Changes made for CASINO version 1.7.1 ------------------------------------- 8.2.2004 - Added new QMC_ARCH = linuxpc-ifort . This is for the newly released Intel ifc version 8.0 compiler (now renamed ifort). Note it moans vociferously about the fact that the compiler name has changed, hence the need for a new QMC_ARCH. Note however, that this compiler does not work at all for anything remotely complicated (including CASINO and CASTEP) so one must stick to Intel ifc 7.1. Do *not* upgrade yet! In the meantime, please tell me why the following little program crashes at run time if and only if compiled with ifort: PROGRAM ifort_cockup IMPLICIT NONE INTEGER i,j,nave INTEGER,PARAMETER :: nmove=16311 REAL(kind=kind(1.d0)) :: ave(15,nmove) nave=15 ; ave=0.d0 do i=1,nmove write(14,'(4f20.12)')ave(1:nave,i) enddo END PROGRAM ifort_cockup - (NDD) orbital_check.f90 routine assumed that grad and lap were unchanged when wfdet is called with igl=0. For some reason, the gradient and laplacian were explicitly set to zero in swfdet.f90 if igl=0, which screwed up numerical orbital derivative check with splined orbitals. Fixed. - Added profiling options to linuxpc-ifc-tcm-parallel include file, so we can use the vprof profiler on the TCM cluster. Type 'make prof' to produce a profiling executable, and 'runvmc -prof' to run it. - (NDD) Problem with generate_spline utility for periodic systems fixed. - Latest version of PWSCF plane-wave DFT program to be released this week includes native CASINO support, and should be able to write pwfn.data files directly. See www.pwscf.org. - Added Ryo's modifications to calculate pair-correlation functions and spin density. Lots of changes and bug corrections by MDT and ZR. Fixed various bugs in the density plotter utility d2rs. - Changed run scripts for the TCM cluster to account for recent change in the queueing system. - Fixed a problem with the run scripts dealing with Linux clusters running the PBS queueing system. The script needs to include a maximum memory limit in the batch script it creates for submission to the queue. Unfortunately, the -vmem flag means 'total memory for the whole job' not 'memory per processor' as implied in the documentation I read. So with the current scripts one would eventually hit the memory limit as one increased the number of nodes. As the Australian APAC machine doesn't seem to recognize the -pvmem flag, which assigns memory limits per processor, I have made the scripts calculate an appropriate vmem o from a predefined memory per node and the total number of nodes. - (NDD) Added new keyword - REDIST_PERIOD - which allows you to change the number of moves between configuration redistributions on a parallel machine, where the number of configs on each processor is equalized by transferring configs between processors. This may allow a performance speedup on some machines. - Changed various standard settings in the example inputs (turned off tpdmc - no longer recommended), default DMC moves per block increased to 500 for statistics accumulation. - Stopped all-electron calculations calling the non_local projection routines only to exit them immediately (saves 1% CPU time!!). - Added timing call to qmc_barrier (time spent hanging around waiting for processor synchronization). - (PLR) Added capability to automatically optimize the VMC timestep DTVMC in order to minimize serial correlation. Controlled through a new OPT_DTVMC keyword. - (NDD) Included the option to limit configuration weights in variance minimization. There are now two new input parameters: vm_w_max and vm_w_min, which define the window over which the weights are permitted to vary. - Installed library of substitute BLAS routines into numerical.f90. The wannier utility required yet more BLAS, and so a blas_lib.f is now compiled in with xwannier. This finally removes CASINO's dependence on external libraries (apart from MPI) and should substantially reduce the problems people have in getting it to compile. Changes made for CASINO version 1.7.0 ------------------------------------- 21.1.2004 - Added tutorial worksheet (from Trieste Winter School Jan 2004) for CASINO to CASINO/examples/WORKSHEET. - Added example for Dario's new localized orbital blip evaluator. See examples/molecule/silane_localized_blips. - Changed the algorithm for calculating the cusp radius in cusp-corrected Gaussian basis set calculations. The radius should now generally be much smaller - this minimizes the potential error in the energy you get from modifying the variationally determined orbitals a long way out. Having made this change, I had to reoptimize the Jastrow factors for all the 55 G2 molecules in the examples/molecule/G2_SET directory (plus the other standard all-electron atoms and molecules). NB: the CUSP_CONTROL keyword has now been removed. - Added Dario's modified blip evaluator so that blips work with localized orbitals. This is still being tested and designed at the moment. Use btype=7 for now (will merge with btype=4 later). - (NDD/MDT) Now only write to dmc.hist at end of every block - saves time in disk i/o during DMC calculations particularly on horrible machines like Melbourne APAC. - (NDD) Updated plot_spline.f90 to read an swfn.data file instead of a spline.dat file. - Fixed some recently introduced compilation errors on obscure machines which don't get tested very often. - (NDD) Modified xwannier utility so that it takes input directly from a CASINO pwfn.data file (can therefore now use localized orbitals starting from the output of any plane wave code that CASINO supports). - (AM/MDT) Added computation of relativistic effects for closed-shell atoms using first-order perturbation theory (VMC method 1 and DMC). Made the relevant modifications to reblock, trimdmc and ve. - Tidied comparison of read and computed config energies in varmin.f90 so that it works more sensibly in parallel. - (NDD) Modified generate_spline utility so that it lists the truncated and untruncated kinetic energy of each state. It also evaluates the difference in total kinetic energy due to truncation, although this should be used with caution because generate_spline doesn't know about occupancies. The level of output is controlled by the "verbosity" input parameter in the generate.dat file (see example) - As we now wish to add lots more 'types' of electron-hole phase, it has become clear that the mixing of basis set types and electron(-hole) phase types defined under the BTYPE keyword is ugly and confusing. I have therefore defined a new keyword 'ETYPE' which distinguishes between electron(-hole) phase types leaving 'BTYPE' to specify basis sets. Obviously, this will involve people changing input files, but luckily only for types that almost no-one uses (yet). Main changes : - Blips now flagged by BTYPE=4 not BTYPE=8 - Splines now flagged by BTYPE=6 not BTYPE=12 Full definition of ETYPE (relevant only if BTYPE=0 - the default): - 1 = Homogeneous electron gas (fluid phase - plane wave basis) - 2 = Electron Wigner crystal phase (Pade function basis) - 3 = Homogeneous electron-hole gas (fluid phase - plane wave basis) - 4 = Homogeneous electron-hole gas (excitonic phase - exp pairing basis) - 5 = Electron-hole Wigner crystal phase (Pade function basis) - 6 = Quasi-2D jellium slab (fluid phase with hard walls) All examples, scripts etc. have been modified to reflect this change. High potential for disaster. Let me know. - Added complete set of physical constants and conversion factors from au to lots of different units into constants.f90 module. - Added table of nuclear masses (corresponding to the most common isotope for each element) to constants.f90 module. Also added an isotope_mass keyword to override the default if one wants to use an isotope other than the default. Nuclear masses used by the relativistic effects at the moment, but may be useful for other purposes in the future. - Added new input keyword 'relativistic' which will turn on the calculation of relativistic effects as soon as we've finished coding them up. - (DA) Modified blip utility to use Fast Fourier transforms. This means that pwfn.data files for large systems will now take minutes rather than 2 days to turn into bwfn.data files. - (NDD) Modifications to generate_spline utility : * replaced illegal use of NAG library for numerical integration with a new routine. * now reads in pwfn.data rather than jeep.wf. * can generate swfn.data file for non-orthorhombic cells (although swfdet.f90 doesn't understand them yet). - (NDD) Added new input keyword : use_spline_ptrs. If set to true then swfdet will use pointer arrays, thus tailoring the memory requirements for each individual state. If false, then pointers will not be used. Instead, arrays of coefficients will be defined for big orbitals (the ones with cubic cutoffs) and small orbitals (ones with spherical cutoffs). This is faster, since no pointers are required, but is still much more memory efficient than the blip code, since the majority of localized orbitals can be represented with the "small" arrays of grid points which only extend over a small fraction of the simulation cell. - (NDD) Minor changes to swfdet : numerical orbitals are normalized, output simplified & grid points in swfn.data are given as fractions of the lattice vectors (necessary for nonorthorhombic systems). - At request of Rutter, reduced frequency at which run scripts poll the queues when running on queued parallel machines (tcm_cluster, HPCF etc.). The sleep interval will progressively increase from 1 to 10 step 1, then from 10 to 610 step 60 seconds i.e. after some time the interval will be 10 minutes, rather than the current fixed interval of 30 seconds or a minute or whatever. The advantage is that the completion of 2 second test jobs will be realized more quickly, and it avoids irritating sensitive computer officers. - Completed and tested internal module for CRYSTAL2003 which will write out the wave function for CASINO in gwfn.data format, having unwrapped the orbitals from the irreducible Brillouin zone to the full set of k points (this wasn't possible in the CRYSTAL95/98 interfaces and you had to turn off k space symmetry). I wrote this because Nic Harrison told me to, but I now find that Carla Roetti doesn't want it in CRYSTAL03. (I must convert it into a separate utility - which is a real pain in the arse). This issue is currently under negotiation. The completed module lives in CASINO/utils/wfn_converters/crystal03, for what it's worth, which isn't much because they won't distribute the source code to anyone. - The initial release of CRYSTAL03 had a broken pseudopotential evaluator which gave erroneous results if the powers of r you you used in the expansion went outside a limited range. Bugged Roberto Orlando until he fixed this. A version of CRYSTAL which contains this fix should be available from the download site very soon. - Added the first QMC utility to be written on an aeroplane : a 'CASINO/examples/modify_inputs' script. The purpose of this is to allow all the hundreds of example input files in the examples directory to be modified in various ways, reflecting changes in the list of keywords understood by CASINO. Currently, it can (1) change the default value of a keyword from x to y, (2) delete a keyword completely, or (3) add a new keyword complete with its default and closing blurb. This kind of thing is especially useful given that we now have an extra 55 G2 molecules in examples/molecule directory. Note finally that this is a *bash* script written as a technical exercise to see if I can write in bash instead of my lifelong companion csh, pending the move to bash runvmc scripts etc... This follows constant piss-taking by various thoroughly modern computer people on the subject. - (NDD) Modified trimdmc utility so that it knows about the new 13th column in dmc.hist (the total weight). Kept the old version so that ancient dmc.hist files can still be trimmed. - Corrected serious error in recently modified CRYSTAL run script which could cause everything in your scratch directory to be deleted if you use it to run the CRYSTAL properties program. - Tidied formatting for PW and blip read/setup. - In some cases, CASINO was using the value of the ionic/nuclear repulsion energy read from the xwfn.data file rather than the value it calculates all by itself. It's probably better to use the latter value - changed. - Changed default_atomic_l in jasfun.f90 (i.e. the value that the one-body L parameter in the Jastrow factor gets set to for a single atom if you set it to zero in jasfun.f90). The default 10.0 was too high and could lead to instability in variance minimization. Default is now 2.0. - Added input, gwfn.data files and optimized jasfun.data Jastrow files for full G2 set of 55 molecules (all-electron, Gaussian basis set) to the examples/molecules directory. See e.g. Jeff Grossman's paper JCP 117 1435 (2002). Full list of molecules : BeH C2H2 C2H4 C2H6 CH CH2_singlet CH2_triplet CH3 CH3Cl CH4 Cl2 ClF ClO CN CO CO2 CS F2 H2CO H2O H2O2 H2S H3COH H3CSH HCl HCO HF HOCl Li2 LiF LiH N2 N2H4 Na2 NaCl NH NH2 NH3 NO O2 OH P2 PH2 PH3 S2 Si2 Si2H6 SiH2_singlet SIH2_triplet SiH3 SiH4 SiO SO SO2 These took me a little more than a weekend to create and optimize so all that stuff about 'how many students lives have been wasted optimizing wave functions' on his list of 10 reasons why nobody uses QMC seems a bit off. - Added some all-electron atoms to the examples directory with optimized Jastrow factors. - The run scripts did not pick up the error when a user tries to continue a DMC run by just typing 'rundmc' rather than 'rundmc -s' or 'rundmc -e -s'. Now if a dmc.hist/dmc.hist2 file is present and inew==1, then all the rundmc scripts will complain and stop. - Rene Gaudoin's old ABINIT wave function conversion was for ABINIT version 3.03 only. This is no longer downloadable on the ABINIT web site (it is now considered older than versions marked 'obsolete'). Following negotiations with Xavier Gonze, I have now implemented a completely new converter within ABINIT 4.2.2 which will go into the public release and should hopefully be maintained. New input keyword in ABINIT : casino_output = 0 or 1 for whether I should write out a pwfn.data file or not. Note that Xavier iterations are on-going so this probably is not available yet. Local users can find the modified ABINIT in ~mdt26/x/ABINIT. Instructions for running it are included. - (NDD) If the DMC code attempted catastrophe recovery during equilibration then it would fail on attempting to read the config.backup file. Now fixed. - Minor modification to crystaltoqmc.f90 so it doesn't ask the user about k points and supercell sizes if the system in question is finite (atom/molecule). - (NDD) Modified the code to permit the use of the MPC interaction and accumulate densities for *excited states* of the homogeneous electron gas (this was possible only for the ground state before ; HEG excited states would stop with an error message if the MPC was requested). - Replaced DOUBLE PRECISION with REAL(dp) throughout the code. New dsp.f90 module to define kind parameters of single and double precision reals. - (NDD) Added utility to read a JEEP jeep.wf wave function file and a JEEP atoms.sys file, and then to write out the relevant information in CASINO pwfn.data format. - (NDD) Various modifications to the new swfn.data format and hence to swfdet.f90 and associated utilities. Removed remaining non-standard F90 from contributed spline utilities so no longer any need for separate versions on different machines. - Modified the graphit utility so it no longer creates a copy of dmc.hist --> dmc.hist.temp adding a continuous sequence of line numbers as column 1. Modifications to the format of the dmc.hist file a while back means that these numbers are written to dmc.hist as part of the DMC simulation, and this copy was no longer necessary. (Only remembered this since recent formatting changes to dmc.hist eliminated a leading space and graphit stopped working since the first two columns were run together). However, sometime it is useful to delete bits of a dmc.hist file in which case the added continuous line numbering is required. An extra utility called 'graphitx' was added which does this (with the leading space problem corrected). - The -v option for the runvarmin scripts had been broken on some parallel machines (ibm_sp3/sun-nqs-parallel etc.). Now fixed. - Compiled HTML version of the manual. Added links to ps.gz, PDF and HTML manual versions from the CASINO users web page. Wrote CASINO/manual/Makefile to compile and publish all three versions automatically. Typing 'make' just produces ps.gz and PDF ; 'make all' produces the HTML version as well (which takes ages). Finally 'make clean' will tidy your CASINO/manual directory. - Modified the g9xtoqmc utility (which converts the output of the Gaussian94/98 programs to CASINO gwfn.data format) so that it supports Gaussian03. Utility now renamed to gaussiantoqmc as g9xtoqmc is clearly no longer appropriate. Energy extraction utility renamed from g9xe to egaussian. Documentation modified to reflect the changes. Thanks to Nicole Benedek (Melbourne) for performing relevant tests. - Writing more than a million lines to dmc.hist produced an error because of an inappropriate edit descriptor. Now fixed and formatted with i2s so any number of lines can be written. - (NDD) Repaired non-functioning density_mol module (never used since it was written by ARP) which accumulates the density in aperiodic systems. Fixed error which caused it to crash when run on a single processor machine. Sums across nodes were not done correctly - now they are. The density is no longer normalized twice. Replaced mpi_real with mpi_double_precision in MPI reduction calls. - Persuaded the run scripts to pick up the mol_density.data file generated by the above. Modified density_mol.f90 to write nice output. - (NDD) Updated setup so that CASINO compiles and runs out of the box on Lawrence Livermore computers. Set QMC_ID = llnl and QMC_ARCH = and everything should work as normal. See the CASINO/ARCH file for the combinations which make particular machines work. - (NDD) Increased efficiency of the load balancing redistribution procedure in redist.f90 in the dmc_utils module. Code no longer does unnecessary transfers of configs across nodes. - Increased length of character declarations of con_loc, con_in etc. throughout the code to decrease possibility of long filenames causing trouble. - Removed requirement for a separate input.vmc file when using the -v option to runvarmin, which flags an extra VMC run after the final optimization. The script should complain if people continue to try to do this. - The first 24 numbers in the CASINO pseudorandom number sequence were independent of the ranluxlevel input keyword which supposedly determines the quality of the sequence. Just to reassure people who only print out the first ten, I have added a little loop calling the random number generator 24 times before it ever used. Thus printed out sequences should now be completely different from the beginning for different luxury levels. - It is now allowed to change the luxury level of the random number sequence (i.e. follow a different random number stream) by altering 'ranluxlevel' in input before a restart i.e. where the saved state of the random number generator is read from vmc.posin, config.in or .varmin_ran_save (depending on the kind of calculation). The default value is 3, but ranluxlevel = 2 or 4 (at least) will give alternative random number streams of high enough quality. - (NDD) Pseudopotential files may contain an optional block at the end giving data for a core polarization potential. Recently some people have been using pseudopotential files containing e.g. zero f-components of the non-local pseudopotential. CASINO was reading this and assuming it was core polarization data as it believes in the existence of s/p/d only. It has now been persuaded to look for a 'core polarization' string to check that it really is reading in a CPP. - Recent updates to the IBM compiler meant that the code was failing to compile on the HPCX system - stopping with an internal compiler error. The problem appears to be the combination of the concatenation operator and the repeat intrinsic, which occurred in the esdf_dump routine in the esdf.f90 module. A hack to work around this has been introduced, and HPCX is working again. The problem has been reported to IBM. - Big update of the manual, including a new long section advising beginning users how to do calculations. Removed line about 'this manual is in the process of being written - don't believe anything it says blah.. blah..' on account of the fact that it now more or less is finished. - Added list of active QMC_IDs to the end of the ARCH file. - Removed some unnecessary allocated storage from bwfdet module. - Added element name list to constants.f90 and generate_spline.f90. - Adjusted the available queues on hartree (local Cambridge HPCF machine) in the ibm_sp3 run scripts, following recent configuration changes to the machine. - Directory checksum error was appearing when untarring the CASINO distribution on a Sun. Turned out to be due to a a very long pathname of one of the files in the utilities directory. The name has now been shortened and everything appears to be OK again. - (NDD) Merged AJW/RQH facility for using splined-wave functions off the back of PW calcs (from JEEP only at the moment). Involves two new modules - spline.f90 and swfdet.f90. (MDT) CASINO-formatted the spline.f90 module. - Added RQH xwannier utility. Given real wave functions from JEEP finds the Wannier centres and if desired the Wannier functions of the specified JEEP orbitals. The code will be converted to run off the back of CASTEP and ABINIT shortly. Unfortunately requires a bunch of Lapack routines (which are now compiled in if not available as a system library). - Added AJW/RQH spline interpolation utility - generate spline. Requires MPI and a bunch of NAG routines - the latter will have to be replaced since it is illegal to incorporate NAG source code, and since we didn't go to so much effort last year to remove NAG just so we have to put it in again. Most people don't have NAG! - Added AJW utility for plotting spline functions - plot_spline. - (NDD) Wrote utility for formatting/unformatting splinewfn.data file - called format_spline. - Reinstated all the make paraphernalia for compiling utilities with mpi and maths libraries etc., now people have started writing utilities which want them. Fake do-nothing MPI libraries for compiling on serial machines without MPI are now in utils/comms_files. Rewrote all subsidiary Makefile in the utilities tree to have the same behaviour i.e. generate_spline, xwannier, d2rs, g9xtoqmc and plot_density. - Added utils/pseudo_converters directory to contain utilities for converting pseudopotentials for other programs into the format understood by CASINO. Added AJW's utility for the JEEP program and RG's utility for ABINIT. - If neighprint == 0 in the input file, and the user requests default L parameters to be calculated for the Jastrow factor, then a nearest neighbour analysis must be performed. This was being done on each node one after another, which could potentially take a long time. This has now been rewritten so that the read_jasfun neighbour_analysis is done on the master only and the relevant quantities broadcast (as it should have been done originally). - CRYSTAL wave function conversion utility contained a subroutine called 'error'. This is apparently the name of an intrinsic subroutine under some compilers (Lahey lf95 at least) and thus causes compilation problems. The name of the routine has now been changed. - Restored interactive mode to T3E runvarmin script. - Added runvmc/rundmc/runvarmin/runvarmin1 scripts for new QMC_ARCH = altix for SGI Altix machines. - The pbs_cluster run scripts used a user-defined variable called $time, which meant that they occasionally echoed Unix timing information to the screen during the submission process. Now fixed. Changes made in CASINO version 1.6.4 ------------------------------------ (11/9/2003) - (NDD/DA) Changed DMC antipersistence algorithm so that it goes back to the start of the previous block if a catastrophe occurs, rather than the start of the current block (a useful thing to do if the catastrophe occurs very early in the block). The program will now generate a config.backup file as well as a config.out if trip_popn>0. - Added error check to read_jastrow routine so that the code stops if any of the atoms in the set lists of the atom-centred functions are out of range in the jasfun.data file. - Added pre-screening of Gaussian basis functions for molecular calculations. Should make large molecules go a bit faster. Added keyword MOLGSCREENING to turn this on and off for the moment - default is off - possibility of very small molecules slowing down slightly. Extensive testing pending. - Removed multiple copies of identical run scripts in different CASINO/scripts/$QMC_ARCH directories. Rewrote the utils Makefile to pick up the relevant scripts from the right places. - Added beryllium atom and beryllium dimer to examples directory. - Rewrote gencfg_report routine in config_gen.f90. The report is now written out after (rather than before!?) the final block ; it is formatted nicely and differentiates between molecules, periodic solids with atoms, and electron(-hole) systems, MPC/Ewald/both or neither ; it uses (n-1) rather than n when working out the error bars for compatibility with what vmc.f90 does. It now calculates the standard error of the mean as well as the variance to avoid confusing people who try to compare the config generation report with the VMC energy output (Dario! ;-) ). However, before you ask, the config mean and the VMC mean will not be quite the same in pseudopotential calcs - because they use different random numbers to do the non-local integration. - Added new supported architecture : QMC_ARCH = altix . This is for the SGI Altix parallel machine with Itanium2 processors. Tested on 'reynolds', a 32 processor test machine at CSAR, Manchester which is intended to assist users in porting codes to this architecture in preparation for the arrival of a full 256 processor Altix system ('newton')in October. Run scripts to be written later. - For a while now, the L parameter for the sets of one-body functions in the jasfun.data file can be set to zero to obtain a sensible default. However the default for single atoms was not sensible. Now fixed. - Tidied write_jasfun routine so that it formats the optimized jasfun.data file properly without lots of white space everywhere. Tidied the output of the heg setup. Also modified output of the nstring utility to be tidier by using the CASINO i2s function. - Put a check into the code which stops execution if the L' parameter in the Jastrow factor is larger than the Wigner-Seitz radius. The recommended action these days is to set all the various L/L'/L0 parameters to zero in the jasfun.data file, so that they are then given sensible defaults. However, it may be necessary to fill in specific values if reusing Jastrow factors optimized in some other calculation with a different geometry, which can lead to errors like this. - Added three hour queue for Daresbury HPCX machine to the ibm_sp3 run scripts (Dario Alfe request). - Clarified discussion in the manual about default L, L' and L0 in the Jastrow factor for different system types. - Added time argument to the run scripts for TCM cluster (i.e. QMC_ARCH = linuxpc-ifc-tcm-parallel.inc) now MJR has changed the limits up to 99 hours. The default is 48 hours. Invoke with e.g. rundmc -t 99 Changes made in CASINO version 1.6.3 ------------------------------------ (30/8/03) - Setup CASINO secure download page where authorized users may obtain the latest source. This file should be visible from there. - Tidied large determinant output and increased the definition of what is meant by a large determinant. - Stopped reblock crashing if the vmc.hist file is empty. Changes made in CASINO version 1.6.2 (and intermediate 1.6.1) ------------------------------------------------------------- (17/8/03) - Added support for CRYSTAL 2003 to the billy utility. - Updated run scripts on HPCX system to take account of new accounting procedure. - Added discussion of Gaussian cusp correction scheme to the manual. - Fixed missing 'if i am the master node' statement in vmc.f90 which led to unnecessary opening and closing of ran_save files and loss of parallel efficiency during VMC config generation calculations. - Added a missing call to mpi_barrier in the renorm routine to prevent very occasional parallel mixups in writing out the pi weights and the saved random number state in the config.out file. - Added run script for controlling the newly released CRYSTAL2003 program to utils/wfn_converters/crystal03_to_qmc/crystal_run_script directory. Runs C95/C98/C03 and is a merged version of the previous two separate scripts that ran the SCF code and the properties code i.e. run3 no longer exists. Use the -p option to the new script to run the properties code. See the header to the new script for full details. - (ZR/MDT) Changed makefile and make include files so that different versions of the code compiled with different compiler flags can be specified through the command line rather than by uncommenting the relevant section of the make include file. Now 'make' produces the default optimized version, and 'make debug', 'make prof' and 'make dev' produce debugging, profiled and development code respectively. Changed the name of the xmakes directory to zmakes, so we know whether we are using a version of CASINO in which this behaviour is enabled. - Modified franklin specific queues in sun-nqs-parallel run scripts - deleted 72 node queue and replaced with 64 and 84 following recent changes to the configuration of the machine. - Removed the directory of old input files from the examples directory. - (NDD) Modified DMC to allow it to automatically restart from the beginning of the current block upon encountering a population catastrophe. Two new keywords introduced : (1) TRIP_POPN - the single node population above which the block will be restarted (recommended value - 2*NCONFIG). (2) MAX_REC_ATTEMPTS - the maximum number of times this can happen in a block. - (ZR) Modifications to minimum_image.f90 routine. Introduced Minkowski-reduction for general geometry. This makes it more general than it was before, although still not completely general in the sense that one can think of lattice vectors for which it doesn't work (further investigation is taking place). Also modified the treatment of 2D systems within minimum_image so that it uses the same algorithm as 3D. - Added RM modification of runvarmin script for Fujitsu Primepower machine. - Added support for the new TCM PC cluster. This has it's own personal Rutterized batch queue system, therefore require modified scripts. QMC_ARCH = linuxpc-ifc-tcm-parallel - Made the Latex file for the manual generate a PDF file with active links and so on. PDF manual now included in the distribution. - (NDD) Added default settings for L0 and L' in the jasfun.data file for atoms and molecules. Setting these two parameters to zero will now result in (a) L0 being set to a very large number (no cutoff), and (b) L' being set to the 'size of the system', defined as 10 au for atoms, or the maximum interionic distance multiplied by 1.25 au for molecules. Previously this facility was only available for periodic systems. - Tidied and heavily modified the new cusp correction module for all-electron Gaussian calculations. It should now work as advertised in all circumstances. - Cusp correction code now has built in default behaviour for hydrogen atoms which is independent of the 'cusp_control' keyword. - Found out why the Origin 3000 utilities make procedure dies with "cannot fork: too many processes" on e.g. wren. Default system limit for maximum number of processes is set far too low. Put 'jlimit processes 24' in your .cshrc file and everything will be smooth once again. - Fixed error in crystaltoqmc.f90 utility which occasionally led to errors in wave function conversion for molecules. - Fixed an infelicity in the 'graphit' utility that led to it dying because of a bug in the csh 'which' command with some versions of csh. (`which file` for a non-existent executable file produces 'Command not found' from the command line, but nothing when invoked inside a shell script!) - Fixed up the octane Make include file which had got broken. - The ve utility had stopped working for electron and electron-hole systems. Now fixed. - (ZR) Fixed problem with the walltimer for CASINO which prints out the total real time taken for the job. Previously this used the system_clock intrinsic and for long jobs the integer argument could easily exceed the available range of integers available on some machines. Now fixed. - (NDD) Stopped VMC method 1 from printing out two identical acceptance ratios in the case where no Jastrow factor is present. - (NDD) Made the variance minimizer write out the Jastrow factor at each NL2SOL iteration rather than only at the end. - (NDD) Minor change to the format in the output of denft.f90 and generate_eepot.f90 so that there are spaces between all the numbers. Could have confused certain utilities like d2rs otherwise. Also fixed error in denft.f90 which meant that it didn't work for completely spin-polarized systems (no electrons of one spin), and made the parallel versions of generate_eepot.f90 and denft.f90 work. - Added a check to the crysgen script (which controls the CRYSTAL9X-->CASINO format conversion) to prevent running CRYSTAL on one architecture and attempting to produce the gwfn.data file on another (from files which may be binary incompatible). This is an easy thing to do on multiple architecture file-sharing environments. - Fixed CRYSTAL run scripts problem. On Linux parallel machines with PBS the scripts use the 'prun' command to run the CRYSTAL jobs. However, for some reason prun always tries to open standard input, even if it is not required (as in CRYSTAL SCF). This means that it will lock up the script if you try and put it in the background. This has now been fixed by redirecting the input ( < /dev/null ) (!). - Tidied the g9xtoqmc utility (for converting Gaussian9X output to CASINO gwfn.data format). Removed unused routines and wrote a general Makefile for it so that it works on every supported architecture rather than just alphas and T3Es. Added automatic compilation and setup of the 'g9xe' utility, which scans through a G94 or G98 output file and pulls out the SCF energy and the KE, PE etc. - Fixed the run scripts so that they work with Gabor's Linux PC cluster (TCM). This machine is awkward in that the home directory is not visible from each node, and both the CASINO distribution and your input files must be somewhere in the /temp directory. This was contrary to certain assumptions made by the scripts before. - Greatly increased the speed of the Gaussian cusp_setup routine (which had previously been taking an inordinately long time to complete for e.g. large molecules) though both optimization and parallelization. Time cut from (ahem) 7 hours to 4 seconds. Shows the perils of writing code for clarity rather than efficiency. - Added a fake MPI_ALLREDUCE facility to comms_serial.f90 for 'parallel' communication on serial machines (used in above). - Fixed infelicity in the joint alpha-pbs-parallel/linuxpc-ifc-pbs-parallel run scripts regarding not being able to run in a directory whose path name doesn't contain your user name. (!). - The latest version of the ifc compiler (version 7.1) started refusing to compile the config_gen and vmc_utils modules (compiler bug?) on Linux PCs. I've now modified these routine so it compiles. There is also a problem linking when it complains about "size of symbol `MODULE.density_1' changed" and "size of symbol `MODULE.esdf_1' changed". You can make the compiler not care about whatever the hell this means with the link option "-Qoption,ld,-noinhibit-exec" (obviously). So we now get a valid executable but I can't make the warning messages go away. (Another compiler bug?). I think somebody wasn't paying attention with this release of ifc (it apparently has problems with CASTEP too). - (BW/MDT) 2D MPC interaction now implemented (in addition to 3D ; the 1D case remains to be done). - (BW/MDT/RN) Bug in the MPC interaction for systems with non-inversion symmetry fixed. - Added a more explicit account of exactly which architectures are referred to by the various QMC_ARCH environment variable settings. See the list in CASINO/ARCH. (Also modified manual and README_INSTALL files to reflect these changes). The recent large increase in the number of supported architectures made this a desirable thing to do. - Fixed error in crystaltoqmc.f90 converter which could lead to k vector errors in gwfn.data for crystals with weird real space lattice vectors. - Added installation instructions for using the bash shell in the manual and README_INSTALL (previous discussion restricted to (t)csh). Desirable since many people have no idea how to set an environment variable, and furthermore have no idea that there are such things as different shells or even what shell they are using. - Added ESUPERCELL keyword which can be used to force printing to output of energies per supercell rather than the default energies per primitive cell. Added to all example input files. - Fixed error in evaluation of degeneracies in Gaussian systems with partially degenerate states at the Fermi level (irrelevant to calculations - information only). - Moved the old QMC_ARCH 'sun' to QMC_ARCH = sun-nqs-parallel. Introduced a new QMC_ARCH 'sun' to refer to Sun single- and multi-processor workstations without queueing systems. - Fixed problem whereby eepot.data created by a run with IRUN=5 would be incorrectly formatted and unreadable if the 'title' of the run passed through from xwfn.data was excessively long. - Added diatomic helium molecule to examples/molecules/he2. - Added new supported architecture : QMC_ARCH = linuxpc-ifc-pbs-parallel for Linux PC clusters using the ifc compiler and the PBS queueing system. - Added new supported architecture : QMC_ARCH = linuxpc-compaq. This is for the Compaq fortran90 compiler, on Alpha machines running Linux. (See www.compaq.com/fortran/linux/). - (NDD) Scrapped the dtlog keyword (for producing effective timestep summary) and added the effective timestep as a 17th column of dmc.hist2. Reblock will look for this, and if it's there, give info about effective timestep. (MDT Removed dtlog from example inputs, and dtlog file manipulation from run scripts) - (NDD) DMC will now continue on a node with no configs, even if redist fails to bring in new ones. So can do runs with a target of 1 config per node. - (NDD) Tidied varmin module : Removed vm_maxwvar parameter (MDT removed from example inputs) ; modified meaning of vm_info ; loosened tolerances for comparing analytical and numerical gradients in jascheck ; if weights are not required (vm_info<3, vm_reweighting off) then no longer waste time and memory allocating arrays for Jastrow and calculating Jastrow ; modified nl2sol slightly so that the iteration counter is passed to lsqfun -- hence the optimization summary info printed if vm_info>1 is printed every nl2sol iteration, rather than every function evaluation ; nl2sol included a factor of (1/2) when returning the final square modulus of vector of residuals: hence the final reported "Variance reduced to..." was in fact half the actual variance. Now fixed. - Added ability for workstation (i.e. non-NQS) run scripts to use 'prun' when running in parallel mode (as required e.g. on some multiprocessor Alphas). Problem encountered where scripts invoking prun may not be placed in the background. This turned out to be because standard input is always opened by prun, whether the application wants to read it or not. Therefore, if prun must run in the background and no input is necessary, standard input must be redirected to /dev/null. Doh. - Added new QMC_ARCH : alpha-pbs-parallel . This is for Compaq Alphaservers using the PBS queueing system. Tested on the Australian National Facility APAC. - Compilation on Hitachi SR2201s was broken due to this machine's hilarious conventions for the naming of modules. Now fixed. It will almost certainly break again in the future since the compiler specifically forbids perfectly legal things that people do all the time. Will need to check periodically. - Fixed serious error introduced last year where concatenation of configs files produced on different nodes produced a file containing multiple copies of the configs produced on node 0. Implies no advantage to using multiple nodes in variance minimization plus non-optimal parallel DMC calcs. - Allowed capability to use more than 1000 nodes now that there is a computer in this country with that many available. This was previously impossible due to file-naming conventions (configs_001 etc.). Now any number of nodes may be used and the files are called e.g. configs_1,configs_10,configs_100, configs_1000 without leading zeroes for padding. - (ZR) Updated plot_corr.f90 utility for plotting pair-correlation functions. - (NDD) Added PERMIT_DEN_REAL keyword. If the DFT/HF charge density expansion coefficients are real then the DMC charge density expansion coefficients will be assumed to be real if PERMIT_DEN_REAL is set to T. It is possible that DMC will break the symmetry of the DFT/HF calculation; in this case the user should turn off PERMIT_DEN_REAL. (keyword added to examples and manual, MDT). - (NDD) Added capability to evaluate eepot.data and density.data (==> accumulation of QMC density) and to use the MPC interaction for Wigner crystals. - CASINO and the wave function generating program should be able to calculate the same value for the nuclear repulsion energy, given the same crystal structure. By default CASINO therefore computes the Ewald interaction and compares it with the value given in the wave function file. If they differ by more than 10^-5, then CASINO will stop and complain. Sometimes there may be a justifiable reason for this difference, in which case this check may be turned off by setting the new keyword EWALD_CHECK to F. - Added optimized Jastrow factor to molecular hydrogen example. With the cusp corrections, a short DMC run gives -1.1744731 +- 0.00056 (compare with exact answer of -1.1744757). I know the error bar is still too large but it appears to demonstrate that the cusp corrector works. - (NDD) Tidied and rearranged the variance minimization module. Fixed bug in calculation of Jastrow. Fixed bug in setting/getting of Pade coeffs for e/h systems. Removed "limiting" of outlying configurations. Made it so that square of vector of residuals is an unbiased estimator of the variance of energies. (MDT later : modified the messages produced by varmin so that they don't break all the runvarmin scripts..!). - Added the '-lguide' flag to the list of libraries in the make include file for linuxpc-ifc, so that it works with the newer versions of the compiler (this doesn't break earlier versions). - Corrected error in coul_eval_direct routine for electron-hole systems pointed out by RQH. - Wrote converter for CRYSTAL200X-->CASINO. It is intended that this routine will be incorporated into the standard new release of CRYSTAL200X if and when it finally appears. Note that this means that in principle we can do Gaussian basis set QMC calculations off the back of properly optimized HF/DFT geometries since CRYSTAL200x can calculate forces for the first time. - Adjusted CRYSTAL95/CRYSTAL98-->CASINO converter so that it writes out the name of the functional used in the DFT calc. - Changed CRYSTAL95/CRYSTAL98--> CASINO converter to use symmetry when generating the orbital coefficients. Thus QMC-generating CRYSTAL calcs can now take advantage of point symmetry and will thus run a hell of a lot faster and take up much less memory. - Set up CASINO to run on Sun machines (new QMC_ARCH "sun"). Added make include files so the code compiles, and sorted out some appropriate run scripts. This was tested on the new Cambridge HPCF system 'franklin' - which is a 1000 node SunFire Galaxy Class Supercomputer. The Sun mpf95 compiler initially choked on some of the string handling in esdf.f90 due to a compiler bug - the module has been rewritten so that it compiles and bypasses the bug. Note that calling mpf95 on this system actually calls Nic Maclaren's wrapper script which sets all the compiler flags for you (thanks!). If you want to play with them yourself, you need to 'setenv HPCF_MODE no'. - (NDD) Code now automatically suggests an appropriate number for rescaling with orb_norm input parameter when determinants are too large etc. - (NDD) Rewrote (a) dmc.f90 so that total weight is written out as 13th column in dmc.hist, and (b) reblock utility such that energies at each iteration are weighted by the total weight of that iteration. This means the "reblocked" energies are the same as the "Best estimate of energy at end of DMC run", so you don't need to look further up the output of reblock (or at end of the out file) in order to get the "best estimate". The modifications to reblock have been made such that it is 'backwards compatible' i.e. it will still analyse old dmc.hist files without the 13th column. - Added print out of degeneracy of highest occupied level in gaussians setup. - Added 'i2s', 'r2s' and 'l2s' functions in utilities.f90 module to convert integers, reals and booleans to trimmable strings which can be printed in a pretty way in output files without introducing lots of white space. - Tidied large parts of the output file using the above. - Changed the behaviour of lineplot so it will use the actual value of the coordinate as abscissa if we are plotting along a coordinate axis (x/y/z) otherwise it will use distance along the line from arbitrary zero. - (JRT/MDT) Defined default for L parameter used in the definition of the atom-centred functions in the Jastrow factor. If these are set to zero in the jasfun.data file, then the nearest-neighbour analyser is called and the L parameters are set to the longest nearest-neighbour distance in the unit cell for each atom type. - (JRT) Added calculation of non-local part of core-polarization potential for the periodic case (previously it was not deemed necessary to do this; now it is). - (JRT) Introduced two dimensional form of Jastrow factor for when strict_2d = .true. . - A CASTEP2002 --> CASINO converter (internal to CASTEP) is now available. Written by Phil Hasnip and Chris Pickard. Added explanatory notes to the CASINO/utils/wfn_converters/castep_to_qmc directory. Contact pjh1003@phy.cam.ac.uk or cjp20@phy.cam.ac.uk for more information. - (NDD) Possible to break reblock and trimdmc utilities under certain combinations of weird circumstances. Fixed. - Energy limiting during variance minimization (via the keyword vm_plimit) has been disabled since there is some evidence that this can screw up the variance minimization in some cases with the new NL2SOL minimizer. Added comment to manual about this, and modified example inputs. Changes made in CASINO_version 1.6 ---------------------------------- - Added all-electron H2 molecule example to CASINO/examples/molecule directory. (it contains RHF and UHF wave functions which should give identical answers - can be used to test whether CASINO's different orbitals for different spins is working properly). - Added Ryo's modifications to the Origin runscripts to run on his Japanese NAKA machine. - Added 'fujitsu' as a recognized QMC_ARCH to allow CASINO to compile on Fujitsu Primepower machines. Suitable run scripts will be added at a later date. - (NDD) Added quad_fit.f90 utility (designed to replace the less general find_a.f90) for carrying out a quadratic fit to a set of data so as to find a local extremum. - Added an error trap to stop the code when the user tries to run DMC calculations with fewer than 2 configs per node. - Set up the machine for use on the new UK HPCX system. (Works out of the box with standard QMC_ARCH ibm_sp3). Type the name of a run script (runvmc etc.) without arguments to see a usage note. This is a powerful machine - 1280 nodes! Note that according to the run scripts, the number of nodes requested refers to the actual number of processors, not to the IBM concept of 'nodes' containing multiple processors. - Fixed some fairly major errors which had crept into the ibm_sp3 'runvarmin1' script (easily happens - ibm jobs take weeks to start on the Cambridge machine). It's now possible to test it immediately on HPCX. - You can now personalize CASINO compilation for your local machine using a new environment variable. In addition to setting QMC_ARCH to define the basic machine type, you can set "QMC_ID" to be something such as the name of the machine. In the CASINO/src/zmakes directory there is a 'users' directory, containing files such as '$QMC_ARCH/$QMC_ID.inc' which might contain override definitions of library locations and so on. NOTE : there is no need to set the QMC_ID on most machines since 'make' can be told to ignore include files which do not exist (and for those that don't I include an empty '.inc' hidden file in the relevant directory so it doesn't complain. - Note for users - Here is a list of QMC_IDs which are set up in CASINO 1.5.25 for the relevant architectures. Do remember to 'setenv QMC_ID xxx' if you want to use these machines. 'gabor' : Gabor Csanyi's PC cluster 'lyra' : Stefan Grimme's University of Muenster PC cluster (setup to compile with ifc, pgf90 or lf95 compilers). 'cppacs' : Ryo Maezono's Japanese Hitachi SR2201 'sugi' : Ryo Maezono's Japanese Origin machine - Removed the dependence of the utilities on the BLAS library. Make include files modified accordingly. - Not having had access to a Hitachi SR2201 machine for a couple of years, I had not realized that the xf90 compiler has the stupid and unique requirement that only one module is present in a given physical file and that the file must have the same name as the module. CASINO would therefore no longer compile on such a machine. This has now been fixed by a combination of renaming modules and getting the Makefile to create soft links. Tedious. - Changed the utilities Makefile so that the f90 utilities are now compiled on Hitachis, now they've apparently got around to installing a fortran90 compiler on their front-end workstations. Changes made in CASINO_version 1.5.25 ------------------------------------- - Changed the way DMC calculations are carried out, through adding the following new keywords: * NMOVE_DMC_EQUIL, NMOVE_DMC_STATS in addition to NMOVE, * NBLOCK_DMC_EQUIL, NBLOCK_DMC_STATS in addition to NBLOCK This obviates the need for the run scripts to modify the value of NMOVE and NBLOCK in the input file at each stage of a DMC calculation. Thus it is no longer required for the rundmc script to question the user about what value of these parameters to use - the scripts have been modified accordingly. Note that unfortunately this modification means that all old input files have to be changed - since the rundmc scripts will no longer work. If during a DMC calculation CASINO detects an old input containing only NMOVE then it will complain and give instructions regarding appropriate modifications. - Reconstructed all example 'input' files making use of the Electronic Structure Data Format's ability to handle comments(!). The various keywords are now grouped according to the following categories : BASIC/VMC/DMC/VARIANCE MINIMIZATION/MOVIES/GENERAL PARAMETERS/ RARELY MODIFIED PARAMETERS/BLOCK INPUT. This should speed up learning for novices and is also a convenience for the expert user. Note that all input files now contain a comment identifying the system. - Removed the instructions for manually running DMC calculations in CASINO/examples/methods directory (now that it is a bit easier to do). This to be replaced by a good *practical* description in the manual of how to do DMC calculations with and without rundmc scripts. - Made the workstation (PC/alpha) run scripts identical to the parallel workstation run scripts. There are thus now 5 groups of scripts. {t3e} {origin} {hitachi} {ibm_sp3} {alpha/linuxpc-ifc/linuxpc-nag/linuxpc-lahey/linuxpc-pgf/alpha-parallel/ linuxpc-ifc-parallel/linuxpc-lahey-parallel/linuxpc-pgf-parallel/octane} This was accomplished by introducing a new flag '-nnodes', so now you have to type e.g. 'rundmc -nnodes 2' to run a two processor job on a parallel workstation, where before you would have typed 'rundmc 2'. The alpha scripts should be considered the master scripts for the last set - there is now a 'copy_scripts' utility in the alpha directory which will copy any changes to these run scripts to the relevant directories. - Added RN's routine to compute the parameters of an appropriate polynomial to replace the zero-gradient basis functions inside a small region around the nucleus in all-electron Gaussian calculations. Introduced new module called cusp_orb.f90 which computes all orbitals using s basis functions centred on a given ion only, and modified gaussians_mol.f90 and gaussians_periodic.f90 to calculate the appropriate polynomial when required. This will ensure that the wave function more nearly satisfies the electron-nuclear cusp condition and fluctuations in the local energy caused by e-n close encounters should be greatly reduced. Added new input keyword CUSP_CORRECTION which may be used to turn this on and off for testing purposes (default is on) (note that of course this correction is not required in pseudopotential calculations). Another keyword CUSP_CONTROL is used to control some aspects of the behaviour of this facility (see 'casinohelp cusp_control', or the manual for details). Use the LINEPLOT facility to see the effect of these modifications. - (NDD) Replaced call to NAG E04FCF with call to NL2SOL in the variance minimizer. This was the final NAG routine. - Classified the OPTETA, OPTXTOL, OPTSTEPMX and CHANGESTEPMX input parameters as redundant. Removed these keywords from all example inputs and scripts. - Modified all make include files not to link with the NAG library, and removed all references to it from the manual and other documentation. - (NDD/MDT) Removed some old 'entry' statements from timerm.f90 module. Entry statements in modules cause some esoteric Japanese compilers to choke, and this is a stupid thing to do anyway. Added pointless timing of lineplot routine for completeness. - Reduced the dependence of the optimize_a and optimize_rex scripts on machine type to an extent that one no longer needs a separate copy of this script when introducing a new QMC_ARCH. - (NDD) Modified workstation DMC scripts to turn on the IDEN flag in input for accumulating the charge density. Use the command-line flag -density to indicate you want to do this. Note this facility not in the parallel scripts yet. - (NDD) Rewrote the wfcheck routine which performs a numerical check of the correctness of the orbital derivatives (since the old version was just a complete mess). It now seems to be more accurate. - (NDD) Modified denft.f90 and generate_eepot.f90 routines so that they will suggest a value for the input parameter ENERGY_CUTOFF if the value chosen is unsuitable. Supplying ENERGY_CUTOFF=0 in input will cause the program to print out the suggested value and stop. - (NDD) Wrote utility 'trimdmc' to trim dmc.hist files to the end of the last complete block when restarting a DMC run that has been interrupted (by hitting the time limit on a parallel NQS machine, say). - Totally rewrote monte_carlo.f90 routine. Amongst other things, it is now possible to follow the sequence of events, as all functions within monte_carlo have been converted to internal subprograms. - (NDD) Recent changes to allow the parallel DMC algorithm to survive total population wipeout on a single node weren't quite correct. This is now fixed, and the code will now handle this situation correctly, providing it is able to redistribute configs from other nodes onto the wiped out one. - Pruned genuinely useless stuff from the xxx directory, then decided not to include the whole directory in the distribution at all (bit more professional). Included a note with a description of what the directory contained in CASINO/doc/README_junk. Ask me if you want any of this stuff. Changes made in CASINO version 1.5.24a ------------------------------------- SORT OUT THE OBVIOUS ERRORS IN 1.5.24 - Fixed a printout error in the molecular atomic positions which basically stopped all molecules working. - Extra line added in gaussians.f90 had broken all calculations consisting exclusively of hydrogen atoms. Now fixed. PLUS - Made 'ranluxlevel' default = 3 (instead of 2). Changed the example inputs to reflect this. - Added Ryo's modifications to the origin run scripts so that they work on his 'Sugi' machine in Japan. - Added $(FFLAGS) to makefile for compilation of dfit utility, so it will compile on machines which require the -64 flag e.g. Sugi. Added -64 to CFLAGS in the src/zmakes/origin.inc file for the same reason. - Removed all stuff pertaining to the special non-approximate gratio.f90 module in the xxx directory, now we know that what CASINO does is not actually an approximation (!). (RN : also changed manual to reflect this) - Modified the linuxpc-ifc-parallel make include file so that it contains the correct options to compile on Gabor's PC cluster. - Modified the runvarmin scripts so they can cope with errors in the fitting process arising from overzealous use of the changestepmx input parameter. - Made the alpha scripts identical with the Linux PC ones. So now we have the following 6 sets of scripts: {t3e} {origin} {hitachi} {ibm_sp3} {alpha/linuxpc-ifc/linuxpc-nag/linuxpc-lahey/linuxpc-pgf} {octane/alpha-parallel/linuxpc-ifc-parallel/linuxpc-lahey-parallel/ linuxpc-pgf-parallel} Changes made in CASINO version 1.5.24 ------------------------------------- 15.9.2002 - As part of the implementation of the 'linear scaling' (not really) algorithm, wrote a new version of the cofactor matrix update routine (cofact in dbar_matrices.f90) which takes into account any sparsity (1) in the cofactor matrix, and (2) in the dot product of the orbital vector and column ie of the cofactor matrix. Note that unless the Slater matrix is very sparse (which it isn't unless you have very localized orbitals) then no element of the cofactor matrix is even close to zero, in which case the new routine is not very helpful and could possible even slow things down. Therefore kept the old cofact routine and renamed it 'update_dbar_not_sparse'. The new routine is called 'update_dbar_sparse' and you can call it by activating a new input keyword 'SPARSE'. It will be of more use in the future when the localized orbital treatment is done. Note that this routine has not been extensively tested in a wide range of systems and probably needs to be. There is also a third new routine: 'update_dbar_sparse_simple' which only takes into account near-zero values of the dot product of the orbital vector and column ie of the cofactor matrix (and ignores dbar sparsity completely) but it has a better memory stride pattern than 'update_dbar_sparse'. This routine is not currently called. Anyway, the best result of all this I've seen is a doubling of the speed of the cofactor update routine which, given it might take e.g. 30% of the time in large systems with cheap-to-evaluate localized orbitals, is a good thing. - For the above also implemented a new version of the mxmb sparse matrix multiplier in the numerical.f90 module called 'mxmb_with_threshold' where you get to define that an element of a matrix is taken to be zero if it is less than some threshold defined by a new input keyword: 'SPARSE_THRESHOLD' (rather than being exactly equal to zero, as in the current mxmb routine). - Added an example of a very sparse system with localized orbitals (Gaussian Wigner crystal with deliberately narrow Gaussians) to CASINO/examples/sparse for testing purposes. - For metals with Gaussian basis sets, allowed paired +k/-k states at k points not on a BZ edge to be singly occupied (previously the code would stop on encountering such a case and moan about the need for a more intelligent code. Well, now it is, and Ryo is happy.). We still need a general way of specifying orbital occupancies in degenerate systems in the Gaussian (and also blips) module, rather like what is now done in the plane-wave module. Later. - For Wigner crystals with btype==2 (i.e. expanded in a Gaussian basis set) CASINO was wasting time e.g. calculating the fact that the 'e-i interaction' was zero, instead of presuming this. Now fixed. Also, energies for this systems are now reported per electron rather than per primitive cell. Points routine for this now behaves more sensibly. - Added Yoonseok's latest pseudopotentials to the web site: Cs, Ba - Decided on web format for displaying Gaussian basis sets optimized with respect to Yoonseok's pseudopotentials. Added such basis sets for silicon to the on-line library as an example. - Recent observations were made that the non_local_project routine seemed to take a long time and there was a big chunk of time not included in the timing information at the end of the output. Turns out this was due to the call to compute_jasfun in wf_ratio in the non_local.f90 module. An extra timing call has now been added around this, along with timing calls for construct_integration_grid and am_projection. NOTE: non_local_project can take 70-80% of the CPU time for some systems. Surely there must be something we can do about this? - Corrected oversight in CRYSTAL run script whereby if the word 'DFT' was included in the title comment line of the CRYSTAL input file in addition to in the Hamiltonian specification block, then the exchange-correlation energy would not be computed. (!) - Corrected some minor issues with the (heavily modified in 1.5.23) run scripts which were not fully tested with the last release (particularly the ibm_sp3 scripts which take forever to test because of the week-long queueing but also a couple of little things with the T3E scripts). - Stopped llsubmit echoing stuff to the screen on the IBM SP3 when the run scripts submit a job (the run scripts were getting confused because part of the output of llsubmit is sent to standard error and part to standard out - for some unfathomable reason - thus piping only the standard out through awk left some residual output to the screen). - Added script 'apprentice' to the utils directory which runs the apprentice profiling package on the T3E. Detailed instructions in CASINO/utils/apprentice/README. Added '-prof' option to the T3E rundmc/runvmc/runvarmin scripts to run the code compiled with profiling options. - Corrected printing confusion which could occur under some circumstances when writing number of electrons associated with each ion at start of VMC equilibration (when deciding not to print this because there are too many ions). - Stopped the newly modified geometry code from attempting to print out the fractional coordinates of the atoms in finite systems in addition to the Cartesian coordinates. - More updates to the manual. Changes made in CASINO version 1.5.23 ------------------------------------- 4.9.2002 - Added Yoonseok's latest pseudopotentials and atomic wave function files to the on-line library: Rb, Sr, Y, Zr, Nb, Mo, Tc, Ru, Rh, Pd, Ag, Cd, In, Sn, Sb, Te, I, Xe. - Complete reimplementation of the random number generator. Replaced all calls to NAG random number routines G05CBF, G05CAF, G05CFF, and G05CGF with calls to a new internal (extended) lagged Fibonacci generator which is a suitably modified version of the well-known RANLUX algorithm (see notes in module). This now lives in the renamed random_numbers.f90 module (used to be prandom). Checked generator with basic statistical tests, and checked that all different machines we use gave the same random number sequence when fed the same seed ==> reproducible results. Note that given the estimated remaining life of the universe, at its top settings RANLUX should be essentially a 'perfect' pseudo-random number generator. - Added timing call to the random number generator so we can see how long it takes. Surprisingly long in some cases! The new generator appears to be a little faster than the old one (in addition to being of higher quality). - Introduced new input keyword 'RANLUXLEVEL' which can be used to trade quality for speed in the generation of random numbers by RANLUX. This parameter may vary from 0 to 4, with 2 being the CASINO default. Type 'casinohelp ranluxlevel' for a more detailed explanation. Added keyword to all example input files. - Introduced new input keyword 'RANPRINT' which can be used to print the initial RANPRINT random numbers on all nodes. Not added to example input files. Modified all runvmc/rundmc scripts to pick up the resulting 'random.log' file. - Classified the ISEED input keyword as redundant, and removed it from all example input files. Removed the autoseed routine (which was used for generating integer seeds if ISEED was set to 0). Removed the primes.txt file from utils, and removed any tendency the run scripts might have had for substituting new random seeds taken from primes.txt in input files after each iteration. The state of the random number generator is now saved at the end of vmc.posout and dmc.posin/dmc.posout** files for restarts (in a backwards compatible way). Communication between varmin and a subsequent VMC config generation is through an auxiliary .varmin_ran_save hidden file which is manipulated by the run scripts. - ** When we generate configs files on more than one processor, the configs_xxx files need to be concatenated into a single dmc.posin file if we are using them for DMC calcs. However when the configs files are generated for varmin calcs, they are used directly without concatenation. There is no good reason for this difference (maybe save a little time on configs read). Thus all configs are now concatenated into a file called 'config.in' (and 'config.out' when written out in dmc.f90). The readvarmin_configs.f90 module has been rewritten from scratch to handle this (also removed hard-wired limit on number of determinants here). Note that the configs files from the different varmin iterations are now saved (gzipped) in the io directory, so they can be used for restarts. All scripts etc. that recognize the names dmc.posin or configs_xxx have been rewritten to reflect these new names (if you wish to use old dmc.posin files, it should be possible to do this by redefining the variables con_in/con_out at the start of the monte_carlo routine and scripts.) All utilities that read configs files have been rewritten to reflect this and the extra random number stuff on the end e.g. format_configs. - For ever the above concatenation has for some reason been done by a separate utility program - now in CASINO/utils/cat_configs/cat_configs.f90. There is no good reason for this either. This utility has thus now been merged into the VMC config generation part of CASINO. The run scripts have been modified to not call this utility, the instructions on how to run DMC manually in CASINO/examples/methods have been modified, and the discussions in the manual updated. The utility has been retained should you want to manually concatenate some configs_xxx files for some reason. - Suppressed the automatic writing of 'condata_xxx' files during configs generation. The information in these files is usually only required for debugging purposes, and for the time it takes to write it's probably best not to bother. It may be turned back on using a new keyword 'CONFIGS_VERBOSE'. Run scripts modified not to automatically expect the presence of these files. - Corrected bug in format_configs utility which meant reading/writing pi-weights was done incorrectly when tpdmc=0. - Fixed error in graphit script which prevented it finding a valid executable for xmgr/xmgrace in some circumstances. - Added more checks on valid values for input keywords in monte_carlo.f90. - Rewrote the linuxpc-ifc-parallel.inc make include file so it works with the current TCM library setup for Intel compilers. Between the last issue of the mkl maths library and the current one, you now have to add the -guide flag to the library list. Obviously. - Changed the error check for the numerical Laplacian agreeing with the analytic one in varmin.f90 (the test was previously too stringent). - Changed the name of the variable 'mytid' to 'my_node' for no readily apparent reason other than to demonstrate I know how to use the sed command. - (NDD) Fixed VMC density generator, which as far as we can tell, has always been broken. Lucky no-one ever used it! - Added BW's recent modifications to jasfun.f90, making it possible to use a Chebyshev form for the one-body term in quasi-2d jellium slabs. - Added a BW optimized jasfun.data to the quasi-2D slab examples directory. - Removed 't3e2' as a QMC_ARCH (originally introduced for the no-longer active Marek Hytha's personal T3E). Need to figure out better way of including user-specific requirements in the zmakes include files. - That said, added a new QMC_ARCH for Ryo's Japanese 4 processor HP/DEC ES40 Alphaserver (QMC_ARCH = 'alpha-parallel'). - Massaged the run scripts for octane/alpha-parallel/linuxpc-ifc-parallel/ linuxpc-lahey-parallel/linuxpc-pgf-parallel to be identical. Thus there are now a single set of run scripts for multiprocessor workstations, and changes made to one of them can now be copied around the above script directories. The scripts can thus now be grouped into the following sets: {t3e} {origin} {hitachi} {ibm_sp3} {alpha} {linuxpc-ifc/linuxpc-nag/linuxpc-lahey/linuxpc-pgf} {octane/alpha-parallel/linuxpc-ifc-parallel/linuxpc-lahey-parallel/ linuxpc-pgf-parallel} Merging some more of these sets is an aim for the near future. Script proliferation is a pain in the ass and changing them all takes too much time. Long-term aim to have one set of scripts for NQS and similar queueing systems, and another set for 'interactive' running (using both 'casino' and 'mpirun -np nnodes casino' as appropriate). - Added neighbouring atoms printout to geometry routines. There is now a new keyword 'NEIGHPRINT'. Setting NEIGHPRINT = n will generate a printout of the first n stars of neighbours of each atom in the primitive cell, with the relevant interatomic distances given in both Angstrom and a.u. If n=0 or if you are an atom-free electron or electron-hole phase, then the keyword has no effect. This option can be useful in analysing complicated structures, such as silicon beta-tin :-), and also for figuring out bond lengths for the Jastrow file L parameter. Added the keyword with appropriate default to all example files. Example output (for NEIGHPRINT=2): Neighbour analysis of the atoms in the zero primitive cell ---------------------------------------------------------------------------- Atom N R(Ang) R(au) Neighbours 1 Si 4 2.3508 4.4424 2 Si 0 0 1 2 Si 0 1 0 2 Si 1 0 0 2 Si 0 0 0 1 Si 12 3.8389 7.2544 1 Si 0 0 1 1 Si 0 0-1 1 Si 0 1-1 1 Si 0-1 1 1 Si 0 1 0 1 Si 0-1 0 1 Si 1-1 0 1 Si -1 1 0 1 Si 1 0-1 1 Si -1 0 1 1 Si 1 0 0 1 Si -1 0 0 Note that because CASINO doesn't know about symmetry, and because I haven't programmed it as efficiently as I might, then the cost of this is non-negligible in systems with lots of atoms in the *primitive* cell, so you should probably turn it off by default. - Removed multiple copies of periodic_table data array from vmc_utils.f90, gaussians.f90, eval_geometry.f90 and read_ppots.f90. Separate capitalized and uncapitalized versions are now declared in the constants.f90 module instead. - Added printout of the (primitive cell) fractional coordinates of the atoms in the supercell alongside the existing Cartesian coords. - Fixed long-standing stupid bug in accumulation of DMC density on parallel machines (noticed by Ryo). - (NDD) Extensive reorganization of the modular structure of the code. Routines with relevant related functionality have been grouped together in their own modules and the number of physical files consequently reduced. In fact everything is now in a module except for main, monte_carlo, vmc, dmc, jaschkfn and wfcheckfn. Interface blocks for these latter routines have been placed in a new module called interface_block.f90, and optimizing compilers should now be in a much better position to warn us about argument incompatibility errors in CASINO. Duplicate versions of fourn and indexx removed, and these routines relocated to the numerical.f90 module. - (NDD) Eliminated argument incompatibility errors in calls to the errstop2 and errstop3 error handling routines in non_local.f90 and pwfdet.f90. - NB: Making the new remodularized code may die when it is compiled in 'severe debug' mode on a T3E. It is hitting a built-in shell limit which nobody will increase. To complete the compilation just type 'make' a second time. - (NDD) Added some extended debug options to the compiler flags in the origin.inc make include file. - (RN/MDT) Updated manual. Changes made in CASINO version 1.5.22 ------------------------------------- 18.8.2002 - Rewrote the CASINO/TODO list to reflect current realities. Tried to prioritize main list. - Yoonseok has finished generating his Dirac-Fock pseudopotentials up to the end of the 3d series and beyond up to krypton. Well done! More to come. Added these to the on-line library, which you can find at www.tcm.phy.cam.ac.uk/~mdt26/casino_library.html. - Added possibility in 1D polymers and 2D slabs to set the L0 and L' parameters to zero in the jasfun.data file, whereupon they will be taken to have the values of 0.3*r_WS and r_WS respectively. (This was already implemented for 3D crystals and 2D/3D electron(-hole) phases.). - Allowed pwfn.data to define a strict 2-dimensionally periodic system. Previously the code assumed all plane-wave wave functions were 3-dimensionally periodic. As there is no periodicity indicator in the pwfn.data format (unlike in gwfn.data), the two-dimensional periodicity is now deduced from the fact that the z-components of the G-vectors are all zero. Also allowed pwfn.data to define an electron gas wave function. This is deduced from the fact that all atomic numbers given in pwfn.data are zero. Thus e.g. 2D Wigner crystals may now be done using the standard internally-defined wave function using Pade orbitals (btype==5) or through a plane-wave expansion produced using an external program (btype==1). - Made some efficiency improvements to the 2D Ewald evaluator. Replaced cos(G.d) evaluations with iterated eiG.r. Added an alternative to ewald2d_exp_erfc_term routine in the case that the z component of r-rj is zero. Rough timings suggest overall speed increases of around 40% for strict 2D single layers, 20% for strict 2D bilayers, and 0-2% for slabs. Also tidied the 2D/3D Ewald routines and gave obscure variables more meaningful names. - Added description of 2D Ewald interactions to the manual. - Implemented first derivatives of the 2D Ewald potential in the coulomb module. - Added expressions for first derivatives of 2D and 3D Ewald potentials to manual. - Halved the time to compute core polarization energies in 3D crystals. - Added the possibility to use core polarization potentials in 2D slab systems. - Added crap description of evaluation of core polarization energies to the manual, including a new bit about how this is done in periodic systems. This will be improved shortly. - The CRYSTAL9X program allows you to define 'different kinds' of atoms with the same atomic number so that you can use different Gaussian basis sets on the different kinds of atom. This is useful in cases where the two kinds of the atom exist in very different environments e.g. the carbon atoms in carbon monoxide adsorbed on a carbon graphite surface or whatever. Anyway, CRYSTAL does this by allowing you to add 100 to the atomic number, and CASINO now understands what this means. - Corrected some errors pointed out by NDD : (1) nt array mistakenly declared as real instead of integer in varmin_configs.f90. (2) Should define q_one(1:ndet)=1.d0 and use it in the call to drift vector in compute_fidet in varmin_utils.f90, instead of passing the single number 1.d0. (So q_one array now moved to store module, and not passed around as before.) - Added suitably modified version of what I have renamed the 'abinitgen' and 'abinitpp' utilities to the CASINO/utils/wfn_converters/abinit_to_qmc directory. These routines (written by RG) should produce CASINO pwfn.data and x_pp.data files from data produced by the ABINIT plane-wave DFT program (www.abinit.org). See the README file for a fuller description of exactly what they do. Modified the utils Makefile to compile the above utilities. Note you need to modify ABINIT as well - see the instructions. Note also that these routines still need quite a bit of work and testing, but I'm releasing them now in the hope that someone will do this. - Created new 'module' numerical.f90 to hold all the various routines which used to be NAG or BLAS or whatever. This will be progressively filled up over the next few months as we complete the 'Get Rid of NAG' program. Also transferred the sparse matrix multipliers, gaussian blas-type routines, matrix inversion, overflow protection, sorting, and interpolation routines from utilities.f90 to the new module. Utilities.f90 now just contains e.g. error-handling, skip, mpi routines and abort routines. Note that the polint.f90 file containing the interpolation routines has now disappeared. - (NDD) Wrote replacement for NAG routine G01FAF used by varmin. This function returns the inverse of the normal distribution: the value x such that the probability that a Gaussian-distributed random variable X will be less than x is p, where p is given. (MDT) Modified varmin to call the above. - (NDD) Wrote replacement for NAG routine D04AAF (numerical derivatives of a real function) used by varmin and wfcheck. See module 'deriv' in numerical.f90. Modified wfcheck and varmin to call this. - Wrote replacement for NAG routine G01AAF (basic stats routine) : now called 'weighted_stats' and living in numerical.f90 module. Modified varmin.f90 to call the new routine. (There is also an 'unweighted_stats' routine in numerical.f90 which I've added and then commented out because it isn't required anywhere.) - Removed replaced NAG routines from the (not distributed) nag.f90 module. - Implemented general correction to the CRYSTAL98 program where the interaction energy was calculated incorrectly for 3D charged systems. This is now documented in CASINO/utils/wfn_converters/crystal_to_qmc/README_CHANGES. I mention this here because it wasted many weeks of our time thinking that CASINO was wrong because it disagreed with CRYSTAL. Note that according to Vic Saunders there is also a CRYSTAL error in 1D polymer charged systems but it's not clear how to fix this yet (usual VRS not responding to email problem). - Modified my 'billy' program used to optimize basis sets and/or geometries in the CRYSTAL program. Might as well include it with CASINO since it is very useful when developing trial wave functions. Billy should now be more robust - in particular it is better at optimizing very small parameters (such as Gaussian exponents in high r_s Wigner crystals) in cases where it previously ran into numerical problems. It now lives in CASINO/utils/billy along with its utility programs: helpbilly, helpbilly2 and dfit. Modified utils Makefile to compile all this stuff automatically. - Forced the crysgen script to clean up its temporary files on manual interrupt. - Added new versions of the CRYSTAL run_scripts to CASINO/utils/wfn_converters/crystal_to_qmc/crystal_run_scripts/ which makes it more straightforward to run on multiple architectures with the same file system. CRYSTAL users should define an environment variable CRYSTAL_ARCH in their .cshrc/.login file in addition to QMC_ARCH for everything to work automatically. - (NDD) Modified behaviour of dmc module. Previously the simulation stopped if the population died out on any one node. Now it waits until it has tried redistributing the configs over the nodes before stopping. This is potentially useful in larger systems where there may only be a small number of configurations per node. - (NDD) Some more DMC tidying. Stuck some of the common config-list handling stuff in the config_type module to avoid duplication in dmc, renorm and redist etc. - Important fix of the day : If CASINO spent 100% of its time in 1 routine, then it overloaded the edit descriptor in the timing printout --> ******% Now fixed. :-) - Added CHANGESTEPMX parameter to all example input files. This has been in the code for a while, but not in the examples. (If you encounter an error condition in variance minimization about exceeding weights, then opt_stepmx will be automatically lowered to a more suitable value if changestepmx is .true. ). - For metallic systems with Gaussian basis sets, there was a remote possibility of the code becoming confused if the number of bands occupied at one or more of the k points was zero. Now fixed. - Up to now, the runvarmin scripts have copied the initial input file back into the working directory at the end of the calculation. If the input file gets modified during the calculation (e.g. playing with OPTSTEPMX or DTVMC or whatever) this is on balance a bad idea. So the runvarmin/runvarmin1 scripts no longer do this, but just change the value of IRUN back from 4 to 2 (varmin to config generation). Changes made in CASINO version 1.5.21 ------------------------------------- 8.8.02 - Recent modifications to VMC methods broke the mechanism for moving particles in 2D planes. The fix made for this in 1.5.20 was only done for VMC_METHOD = 1. Now it has been applied to VMC_METHOD=2 as well. - Fixed error which caused some Gaussian excited state calculations not to work on parallel machines. - Changed allocation of 'found_type' in equilibration.f90 from (93) to (0:92) to allow for ions with atomic number zero. (Wigner crystals). - Suppressed printout of the edist_by_ion array when there are very large numbers of ions (large=64). You should read the input file instead. - (NDD) Removed NAG matrix inverter from find_a, extrapolate_N, extrapolate_N_eh and extrapolate_tau routines. (MDT) Rewrote utils Makefile so that these utils are now set to compile on things other than alphas. All utilities should now be independent of the NAG library. Hurray! - Default value of parameter EWALD_CONTROL in example input files incorrectly set to 1.0 instead of 0.0 . This will have very little practical effect on actual calculations but I've reset them to the correct default for aesthetic reasons. Changes made in CASINO version 1.5.20 ------------------------------------- - (NDD) Modified taueff.f90 such that the diffusive displacements in the expression for the effective timestep ratio are weighted by the masses of the particles involved. - (GJB) Recent modification of the vmc.f90 and equil.f90 modules broke the mechanism for moving particles in 2D planes. Now fixed. - (NDD) Added description of new VMC algorithm to manual. - (NDD) Wrote new utility 'find_a' : for use in conjunction with the optimize_a utility to find the best A parameter in the Jastrow by fitting a quadratic through the VMC results. Sadly requires NAG library ; thus the Makefile is currently set only to compile the thing if $QMC_ARCH=alpha. - (NDD) Modification to reblock utility to trap the (unlikely) case that the variance of the total energy or population is zero. Also fixed bug involving calls to the compute_av_var_unweighted routine (introduced in 1.5.19). - (GJB) Corrected mistake in defining r_s for 2d exciton units in heg calcs. Changes made in CASINO version 1.5.19 (and intermediate 1.5.18) ------------------------------------- - Fixed recently introduced error which caused calculations involving addition and subtraction of electrons calculations to with Gaussian basis sets to crash. - (NDD) Modifications to reblock utility. Now it (1) utilizes the full range of data when computing standard errors, and (2) no longer needs any NAG subroutines. (MDT) The two previous versions of reblock for nag and non-nag machines have been removed, and replaced with the single new reblock. Changes made in CASINO version 1.5.17 (and intermediate 1.5.15, 1.5.16) ------------------------------------- 21.7.2002 - Added modified version of BW's updated quasi-2D jellium slab routines and examples. - Added new polyacetylene 1D example. - (NDD) Introduced alternative VMC method. Methods 1 (evaluate config energy at end of config move) and 2 (average electron energies, weighted by acceptance prob) now available. VMC_METHOD input parameter selects which is to be used, with method 1 being the default. Two-level sampling is used for method 1, during equilibration and for those moves on which energies are not calculated in method 2. (MDT) Modified manual and input files to reflect this change. - (NDD) Can now set tpdmc=0, to include no factors in the Pi-weights (i.e. not to use the reweighting scheme for population control biasing). This is now the default. (MDT) Examples modified to reflect the default. - Minor modifications to various runvarmin/runvarmin1 scripts. Changes made in CASINO version 1.5.14 (and intermediate 1.5.13/1.5.12) ---------------------------------------------------------------------- - Increased maximum number of lines in a block (according to esdf.f90) from 200 to 2000, and added error check. - (GJB) Added extrapolate_N_eh utility which does the same as extrapolate_N but for electron-hole systems. - Fixed error in 2D Ewald routine erf2 : introduced 2 weeks ago. - Fixed problem with js_back_potential in vmc.f90 (affects quasi 2D jellium slabs only) - Added simple 'nstring' utility which automatically generates the long strings of integers required to create jasfun.data files or for edist_by_ion blocks in input. See CASINO/utils/nstring. - Corrected minor bug introduced in utils Makefile in 1.5.11 - (NDD) Fixed rarely occurring bug in newly modified renorm.f90. Changes made in CASINO version 1.5.11 (and intermediate 1.5.9 and 1.5.10) ------------------------------------------------------------------------- - Reimplemented timing routines using system_clock f90 intrinsic for wall times and standard f90 etime extension for CPU times (broken down into separate user/system/total). Timing thus now more informative and doesn't require NAG or MPI library routines. For machines which don't have the etime fortran extension, added a piece of C code with the same functionality which is compiled and linked in on the appropriate machines (heavy modification of Makefile and the zmakes/$$$.inc files required). [NOT YET FULLY TESTED ON ALL MACHINES - PLEASE REPORT ANY PROBLEMS.] - Reorganized precisely which routines were timed, and heavily modified the final printout so that it is clear which routines are called by which so that the percentage times can be roughly added to 100%. No longer have e.g. DMC timings for VMC runs and so on. - Now use interface blocks to overload MPI calls on single processor machines. This prevents compilers like NAG f95 from complaining when a routine contains multiple calls to the same MPI routine with different types of argument. - On single processor machines the code now automatically links in a dummy MPI library resident in the comms_serial.f90 module. This means CASINO can now be installed on laptops, PCs and workstations which don't happen to have a real MPI library installed (the downloading and setup of which can be very tedious.). A new do-nothing comms_parallel.f90 module now exists for multiprocessor machines. The new fake MPI library gives small speedup on single processor machines. - (MDT/MJR) Minor speed-ups in the fcc specific bit of minimum_image.f90 and in the 3D Ewald evaluator. More substantial speedup in the evaluation of complex Gaussian orbitals (which tend to appear for system sizes bigger than 2x2x2). These speedup are good for Alphas and PCs - yet to be evaluated in detail for the other types of supported architectures. - (NDD) Added buffering of chi (ri) part of Jastrow factor --> small speedup. New input parameter JASBUF to turn this on and off. Default is on. It will automatically be turned off regardless of the jasbuf value if you don't have one-body terms in the Jastrow, if you don't have a Jastrow factor at all or if you are a system without an external potential (electron gas etc.). - Added JASBUF to all example inputs. - (NDD) New fancy pointer stuff to handle variable number of DMC configs caused the code to slow down above acceptable limits, due to compiler enforcing copying of arrays when passing pointers through subroutine calls. This has been partially fixed by copying config data into temporary arrays. - Changed the way the MPC interaction is evaluated. This may give a slight difference in the MPC energy from what was obtained previously - but we have not yet found a case where this difference is outside error bars. :-) Manual changed to ensure the code and the description of what it is supposed to do correspond. NB: the format of the binary file 'mpcint.raw' had to be changed slightly, so old versions of this should no longer be used. - Added notes about jellium slab to manual (plus some other minor modifications such as the full gwfn.data spec and NDD extended discussion of growth estimators etc.) - Added additional checks on the Jastrow factor : a common mistake is to transfer a jasfun.data file from say 2x2x2 supercell to a 3x3x3 supercell without changing the list of ions having associated atom-centred functions. This now attracts a warning. Putting duplicate entries in the list of ions e.g. 1 2 3 4 4 5 6 7 will cause the program to stop. - (Very) significant speed up of Jastrow factor setup on parallel machines. - Overflow protection stuff moved from main.f90 into boring utilities module, on account of it being boring. - Removed dependence on 'maxnodes' parameter. All arrays which depend on the number of nodes are now dynamically allocated. - Minor change to graphit utility to get it to die informatively when it can't find xmgr or grace. - (NDD) Removed obsolescent 'do while' statements from the code. - Added warning to zmakes/linuxpc-nag.inc file basically saying not to compile CASINO with the NAG f95 compiler. This is because it takes over twice as long to run the program compared to Intel ifc.! - Fixed major memory errors in the plane wave module : e.g. the occband(:,:) array was declared and allocated in pwdefs.f90/readpwf.f90 - it was then redeclared and reallocated as occband (:,:,:) in pwfdet_setup. (also problems with nband and the find_next_orbs module). This caused random machines (mostly Linux boxes) to stop with segmentation faults. Whoops. Errors introduced during RG modifications February 2002. As far as I can tell though, if a calculation finished without crashing during the period the code was broken, then it will have given the right answer. - The recent addition of an energy printout at the end of a DMC statistics accumulation run did not include the total energy with both MPC and Ewald interactions when iterac = 3 or 4. Now it does. - (NDD) Moved some complicated setup functions out of pwfdet_setup and into separate module subroutines, thereby allowing CASINO to compile in linuxpc-ifc mode with processor specific optimization (-axW), and in t3e mode with debug flags. Previously attempting to compile the routine under these conditions caused it to crash with an internal compiler error. In so doing I won myself a WHITE CHOCOLATE KIT-KAT from Mike for my services to computing. - Added the -axW option to the Intel ifc compiler in the linuxpc-ifc make include file. This speeds up the code by a significant amount. (Note that it appears to be faster than just putting -xW, at least on the machine I tested it on.). - Added 'linuxpc-pgf' 'and 'linuxpc=lahey'as QMC_ARCH types. Can therefore now compile the program with the Portland pgf90 and the Lahey lf95 compilers on Linux PCs. Note that it's still slower than Intel ifc, though not as disastrously as NAG f95. (local note : pgf90 currently exists on tcmpc16 and tcmpc23, lf95 doesn't exist at all) - Added 'linuxpc-pgf-parallel','linuxpc-ifc-parallel' and 'linuxpc-lahey-parallel'QMC_ARCH types. These are designed to handle both Linux PC clusters and multi processor Linux machines (using the Portland pgf90, Intel ifc or lahey lf95 compilers). Note that it appears to be necessary to compile with the icc compiler if you want to link it successfully with CASINO under the linuxpc-ifc-parallel QMC_ARCH. - The old QMC_ARCH 'linuxpc_cluster' has been removed - now that support for different compilers is offered. - Created run scripts to run the code in parallel on linux PC clusters and multiprocessors (tested on lyra machine in Muenster, and dual processor Pentium 4 box in Cambridge). - For machines without NAG library : added Makefile and zmakes/$$$$$.inc options for using CASINO/src/nag_routines/nag.f90 as a source file for the NAG library [should you be in the fortunate position of having a license for being in possession of such a file]. See linuxpc-ifc.inc or linuxpc-pgf.inc for examples. (This is necessary since NAG do not currently produce pre-compiled libraries compatible with e.g. the Intel ifc compiler). - Fixed deallocation error introduced in v1.5.8 in readconfigs_dmc.f90 which caused problems on some machines e.g. T3E. - Changed the default epsdet value in vmc.f90 and equilibration.f90 from 1.d-48 to 1.d-150 : will hopefully stop it moaning about small determinants in the increasingly large sparse systems we can do these days. (without the thing becoming numerically unstable.). - Local TCM users only : created 'lib' directory in the home directory of the casino account containing copies of the relevant files from the mpi library compiled with different compilers and ready for linking with CASINO. (used by the linuxpc-ifc-parallel and linuxpc-pgf-parallel QMC_ARCHs). Changes made in CASINO version 1.5.8 (and intermediate 1.5.7) ------------------------------------------------------------- 15.4.2002 - (NDD) Use dynamically allocated configurations in DMC. This means the MAXCON input parameter is now redundant. Memory requirements for DMC jobs should be reduced. - (NDD) Evaluation of growth estimator now optional, the default being that it not be calculated. New boolean keyword to turn this on and off, which is called GROWTH_ESTIMATOR. - Removed MAXCON parameter from example inputs and added GROWTH_ESTIMATOR. Modified manual to reflect these changes. - (NDD) removed references to MAXCON from the various run scripts. - (NDD) DMC orbital buffering as implemented by Kent was simply incorrect - it actually did nothing at all other than consume loads of memory. Now reimplemented properly - gives faster DMC calculations (orbital evaluation speeded up very significantly) - (NDD) When attempting to combine configs in weighted DMC it will now never attempt to combine with a "dead" config with zero weight: it was possible (although very unlikely) that this could have happened before. - Modified lineorbplot facility to plot grad/lap of orbitals and local e-i potentials in addition to orbitals. Renamed the keyword LINEPLOT (instead of the now inappropriate LINEORBPLOT). Modified run scripts to handle the resulting lineplot.dat file (changed from orbital_plot.dat). The result was very useful in finding the following bug! - Polymer calculations with pseudopotentials were broken, due to minimum image convention not being applied to short range part of the pseudopotential in local_energy.f90. Now fixed. - Removed some of the larger example files in utils and xxx directories to cut down the size of the distribution. A single copy of these is stored by MDT if you want them. (Blame nasty disk quotas.). Changes made in CASINO version 1.5.6 (and intermediate 1.5.5). -------------------------------------------------------------- 6.4.2002 - Fixed error in gaussians_periodic.f90 (introduced a month ago) which broke the evaluation of complex orbitals (occurring in 3x3x3 cells or bigger) in spin polarized systems with Gaussian basis sets. - Added new QMC_ARCH = linuxpc-nag for compiling and setting up CASINO on a Linux PC with the NAG f95 compiler. [NB: f95 very strict about not calling mpi routines with different variable types in the same routine. Issue fixed for the moment with -mismatch compiler flag but obviously it would be better to handle this using f90 interfaces and overloading (added to TODO list).] - Massaged blip.f90 utility to comply with fortran90 standard so it will compile with bitchy compilers (like nag f95). - ibm_sp3 rundmc/runvmc/runvarmin scripts modified to prevent them occasionally printing "stty: tcgetattr: A specified file does not support the ioctl system call" to standard error. - Added kind=kind(1.d0) to all c=cmplx(a,b) statements to prevent accidental conversion to single precision in various places in the code. - Added blocked version of gmult to utilities.f90 (makes gaussians_periodic routines a couple of percent faster). (pointed out by MJR) Changes made in CASINO version 1.5.4 (and intermediate 1.5.2/1.5.3) ------------------------------------------------------------------- 26.3.2002 - Corrected bug in points routine which made setup of initial electron positions in 2D electron and electron-hole phases very slow. - More modifications of DMC algorithm (NDD) * The dmc.posout file is written to after each block (for future restarts) but is now no longer read in apart from at the beginning of the run. Should speed things up. * Averages etc of config weight info only evaluated if lwdmc=.true * total_number_of_moves now updated on each node rather than just on master and then broadcast. * Pi-weights now evaluated and written out (but not used) during equilibration. * Information about weights, pi-weights and effective time step now passed through dmc.posin/dmc.posout. Energy fluctuations on restart should now be reduced. The format_configs utility was changed to accommodate the change in format (although the old files should still work). - The Hartree-Fock kinetic energy of electron and electron-hole fluid phases is now printed to the output file by default (useful quantity since it is used in the infinite-size extrapolation formulae). - (GJB/MDT) Added facility to have different VMC time steps for electrons and holes in calculations of electron-hole phases. New keyword DTVMC2 allows you to define separate holes time step. Set to be equal to DTVMC by default. - (GJB/MDT/RN) Added to the manual a discussion of algorithmic changes due to the introduction of variable mass holes. - Added facility to treat 2d jellium slabs with a finite thickness in the z direction confined by infinite walls (Ben Wood). Use btype == 11 to activate this. Added example to CASINO/examples/electron_phases/quasi_2D_slab. Note that this uses as input a file called 'heg.data' which has a completely different format to the standard one (but it will fail cleanly if people get confused). It also expects an extra term in the Jastrow factor - see the example. - (YL/MDT) Some corrections made to the awfdet.f90 atomic wave function evaluator. - Added a simple interactive mode to the origin rundmc script. For local users : note that hodgkin won't let you run interactively, fermat will. - Changed the name of the 'linuxpc' QMC_ARCH to 'linuxpc_cluster' to stop people trying to use it on stand alone PCs. For this, use a variant of the linuxpc-ifc or linuxpc-nag make include files. - Fix for PW metals : ncharge now defined correctly in monte_carlo.f90 - In v.1.5.1 forgot to add the correction for periodic CPP calculations to config_energy.f90 as well as dmc.f90 and vmc.f90 - which confused ==> dmc wouldn't work with periodic CPP. Now fixed. - Mild formatting change in reblock utility. - Disparaging comments about lwdmc removed from esdf_key description as it is now a perfectly acceptable thing to do. :-) - Changed if(iterac==1) to if(use_coul) in readconfigs_dmc.f90 - Ability of reblock utility to pick up the fact that electron-hole crystalline systems were being run in order to give the user a choice of using exciton units had been broken. Now fixed. Changes made in CASINO version 1.5.1 ------------------------------------ 18.3.2002 - (GJB/MDT) New runvarmin1 script for QMC_ARCH = ibm_sp3. Allows you to run all elements of a varmin run within one time slot without having to repeatedly queue. - Added -debug and -dev flags to all run scripts that previously lacked them. - Speeded up the field evaluation for the periodic CPP through using complex exponentials instead of cos and sine. Corrected error in periodic cpp evaluator. - Corrected error in origin runvarmin script which led it to print some of the varmin output to a vmc output file. - Modified graphit so it looks a bit harder for an appropriate plotting program and complains if it can't find one. User modifiable bit at the top for defining one's own plotting commands. - Added NDD's plot_hist utility which is a general program to read a vmc.hist/dmc.hist/dmc.hist2 files and plot selected quantities as a function of move number. Kept plot_vmc_energy and plot_vmc_hist as well since they're useful in different ways. - Added 'if(am_master)' to a new 'write(6,*)' in monte_carlo.f90 - prevents large chunks of space appearing in output file on parallel machines. CHANGES in CASINO version 1.5 (Feb 2002) ---------------------------------------- - Added explanatory note about ABINIT --> CASINO translator - see CASINO/utils/wfn_converters/abinit_to_qmc. (See also the CASTEP --> CASINO directory). - Exploit matrix sparsity with complex matrices as well as real ones in the Gaussian orbital evaluator. --> 5-10% speedup for cell sizes larger than 2x2x2. - Tidied the fancy Gaussian matrix multipliers (and added simpler non-unrolled versions which are not currently called which might be useful for comparison tests on e.g. vector/non-vector machines. - Interactive mode enabled in Origin 2000 scripts (with some mpirun bug caveats - which the user will find). Note that hodgkin won't let you run jobs interactively. So this is only useful on fermat. - Origin scripts tweaked to allow running on the 512 node Origin 3000 'green' in Manchester. Note that jobs on green must be submitted from fermat. The procedure is exactly as if you were running on fermat but add the '-green' flag to the script. With this flag activated you may also run in 256 node and 512 node queues (beyond the 128 available on fermat) - Implemented save and restore of random number sequence when writing out configs in VMC, so that the run follows the same path though configuration space irrespective of whether nwrcon==0 or not. Obviously this doesn't matter in the long term, but it has been known to confuse people when doing shorter test runs. - 'bug' fixed which could have lead to small errors in the evaluation of some non-local pseudopotentials under certain circumstances. - Added FAQ to CASINO/docs directory. With precisely one question in it. Keep 'em coming. - (RG) Generalized plane wave module to cope with previously tricky cases with partially occupied degenerate states giving you high degree of control over which orbitals to use in the determinant. PW orbital evaluator speeded up as a side-effect. New keywords in the wave function block to control the behaviour of various things (see the additional documentation in the manual). Example added in CASINO/examples/crystal/aluminium_pw which illustrates how to use the new keywords. - new keyword 'kwarn' to stop the code moaning about the KE from its selected orbitals differing from the value patched through the pwfn.data file. (Since can't really get precise kinetic energy match if the DFT calculation used fractional occupations.) lattice constant where the one-electron orbitals are generated on a supercell and thus have weight only around 1 atom in the supercell). Implemented for Gaussians, plane-waves, blips and (GJB) (e)heg calcs. - Fixed bug in the Gaussian/Blip/PW metals setup routines, where if the number of electrons of either up or down spin were zero, then the code would erroneously stop with the error message about not splitting +k/-k states. - Modified run scripts to include GJB's movie file handling. - Added new code pretty-printing utility 'mpr' to CASINO/utils/pretty_printer directory. Note this only works on machines with a properly set up modern version of 'a2ps'. So not TCM then. - Added a postscript of GJB's talk about how to make movies to the CASINO/doc directory (See movie_GJB.ps.gz). - (RM/MDT) New density plotting utility. See CASINO/utils/plot_density. Updated the d2rs utility (density.data in PW -> density in real space) which provides the input for the density plotter. See CASINO/utils/d2rs. NB: I haven't tested this properly. Care. - (RM) Fixed cutoff problem with plot_jastrow utility. - Added utility 'rmstore' for cleaning up old vmc.hist files resulting from 'runvmc -big' runs in the $TMPDIR/STORE directories on all TCM alphas at once. Be careful with this. Obviously Cambridge interest only. - Added NDD's 'extrapolate_N' utility which extrapolates HEG energies to infinite electron numbers using a chi-squared fit to Ceperley's extrapolation formula. See CASINO/utils/extrapolate_N/documentation for further details. - Added NDD's modified source which calculates overlap integrals for many-body wave functions to the xxx/overlap directory (probably not of sufficient general interest to add into the main source.). - Implemented calculation of first derivatives of the Ewald potential and rewrote the periodic core polarization potential evaluation directly in terms of the electric field. Previous attempt at periodic algorithm was incredibly slow. This is much better. - (GJB) Added crystalline phases of electron and electron-hole systems. - Significant modifications of heg.data format to accommodate all the possibilities. Added examples of all types of electron(-hole) calc with new input format. - (GJB) Added ability to make movies of QMC simulations! - Added Linux PC and Linux PC cluster support (i.e. Makefiles, utilities, scripts). Note that the GNU make utility generally used under Linux uses a different incompatible syntax to the make used on all other machines that we have used. Now the Makefile should be able to detect what kind of machine it is using and employ the appropriate syntax (very boring). - Modified plot_vmc utility to plot MPC energies if required - Added docs/PROGRAMMING_STYLE guide which people should follow when programming either in the CASINO source or with CASINO utilities in order to ensure that the package has a standard look and feel. CHANGES APPEARED IN CASINO version 1.4 18th June 2001 ----------------------------------------------------- - More sensible behaviour of reblock utility when data for multiple Coulomb interactions (Ewald and MPC) appears in the dmc.hist2 file. - Normally when CASINO writes out an optimized Jastrow file it always writes out the values of L0 and L' that it actually used. However, if these are set to zero in the initial jasfun.data file, the program internally sets L' = Wigner-Seitz radius of the cell and L0=0.3*L', and these are the values written to the optimized Jastrow. This can lead to an error if the jasfun.data is then used in a different system since it will have the wrong L0 and L' and it is easy to forget to change this (guilty!). The behaviour of write_jasfun has therefore been changed, and if the defaults were used, CASINO now writes out 0.0 for L0 and L' instead. - added all recent new keywords to examples files. - added example optimized Jastrow files for 3D excitonic insulator and fluid phases of the electron-hole system to the examples/ehgas directory (since extended format required to describe ee,eh,hh interactions). - wrote Makefiles, include files, job control scripts (runvmc/rundmc/runvarmin/runvamrin1) to drive IBM SP3 machines. - [BUGFIX] routine to calculate Ewald interaction in electron-hole gas case was being called incorrectly for holes. Now fixed. - Modified ARP's old plotjas.f90 program for plotting Jastrow factors so that it works with the new code. - Taught the rundmc scripts to watch out for NCONFIG parameter (either in the input file or as typed at the terminal) being larger than the MAXCON parameter. - BUGFIX : corrected bug in the esdf_reduce function in esdf.f90 which meant that reading the input file wouldn't work on some computers(!) - specifically IBMs. - Added general and hopefully more sophisticated floating point overflow/underflow protection for most of the exp() functions in the code - except where this might affect performance (e.g. some Jastrow stuff). - Wrote new runvarmin script ('runvarmin1') for the Origin which assumes all jobs will be completed within 24 hours and can therefore be controlled from a single qsubbed script. This is desirable since the startup time on the HPCF Origin is of the order of weeks, so we don't want to submit a separate job to the queue for each stage of config gen / varmin. - Added possibility to use core-polarization potentials (CPP) in *periodic* systems (which were previously only applicable to atom/molecules). Also made some efficiency increases in evaluating the CPP. See vcpp.f90. - added little script 've' to CASINO/utils/ve directory which extracts the energy, standard error and time taken from a VMC output file. - (GJB) Various mods to make strictly 2d HEG/EHG systems work properly - Modified CASINO on-line pseudo library format to allow inclusion of atomic wave functions for excited states, and optimized gaussian basis sets. - added Yoonseok Lee Li/Be/B/C/N/F/Na/Mg/Al/Si/P/Cl/K/Ca/Sc DHF pseudopotentials to the on-line library. Added excited state wave functions for O/S/Se/Te/Zn/Ni/Sn. [LATER NOTE - THESE PSEUDOS TURNED OUT NOT TO WORK IN SOLIDS. NOW REMOVED FROM ON-LINE LIBRARY. SECOND ATTEMPT UNDERWAY. SIGH.] - wrote runvarmin script for T3E - Updated reblock with new method of working out number of equilibration steps in a dmc.hist file (since etrial no longer equals eref during accumulation for the new DMC algorithm). Reblock should also work out automatically which DMC algorithm you are using and act accordingly. - New algorithm for DMC effective time step - should allow the use of a much larger DTDMC time step without bias or population problems. Under test until further notice (set dmc_algorithm==3 to turn this on - note that new ceref2 and poprenorm keywords change aspects of this behaviour) [NB: DMC_ALGORITHM=2 option without the time step change - see below - was deleted.] - Implemented new DMC population control algorithm. (Should give same answer in the same time, with perhaps a slight reduction in variance. The chances of wild fluctuations in the energy occurring should be significantly reduced however.) For the moment I've left the old algorithm in there as well. Choose between the two using new input keywords: dmc_algorithm=1 ==> OLD one dmc_algorithm=2 ==> NEW one poprenorm== .true./.false. (only affects the behaviour of the NEW algorithm - says whether we 'renormalize' the number of configs per node to the value of NCONFIG in the input file after each block, as is always done in the OLD algorithm. This is no longer necessary in the NEW algorithm but it might be useful to turn it on in weird cases where the population fluctuates massively. ceref2 - same as ceref for the OLD algorithm but it should be given a value around 1.d0 instead of around DTDMC. When the behaviour of these different algorithms has been carefully assessed then the loser will be removed. - Changed dmc.posin/dmc.posout format by adding the number of nodes used to generate the data, and the number of configs per node (in anticipation of new DMC population control algorithm where number of configs per node is not necessarily renormalized at end of each block.) - Taught the format_configs utility about the possible existence of holes. - Wrote new format_configs utility to reflect the above change (the earlier one was quite a few years out of date.) - Rewrote cat_configs utility to reflect the above change, with associated conversion into fortran90. - Corrected a problem with the octane [workstation] rundmc script which meant that DMC calculations would not work on more than one node (!) [mv configs_xxx dmc.posin /= cat_configs on more than one node] - Modified vmc.hist format in electron gas case only so that reblock now knows about number of holes and electron/hole mass ratio. Reblock also taught about exciton units. - Further modifications to reblock so that it reads the dmc.hist2 file and is thus now able to compute the components of the energy (KE etc) in addition to the total energy. Increased cleverness of reblock DMC by (1) (E(H) gas case) making it look for number of holes and electron masses in input and heg.data (2) (things with nuclei) making it look for the nuclear repulsion energy in xwfn.data. Sensible default behaviour if it can't find these quantities. - (DA) allowed possibility of using k points in the blip module. - Changed the code to work in au/primitive cell as opposed to eV/atom - note this means that old vmc.hist and dmc.hist files will no longer work with reblock. DON'T FORGET TO CHANGE 'PHYSICAL' INPUT PARAMETERS INTO UNITS/PRIMITIVE CELL FROM UNITS/ATOM. e.g. DMCEEST - BUGFIX : the VMC variance of the energies in each block as printed in the output file was calculated incorrectly (error going right back to ancient early 90s ancestor of CASINO). This should not be a problem since variances should always be obtained from the reblock utility, which is correct. V. old VMC calculations might be suspect however. - Removed maxnumgvector parameter in the generate_eepot.f90 routine. Array sizes now worked out in advance and allocated. - Reworked the rescaling of G vectors and Fourier coefficients in eepot.data file in more general way. - Minor correction to finite difference derivative error checking in wfcheck.f90 and jascheck.f90. - changed name of eepot_energy_cutoff parameter in input to energy_cutoff to reflect the fact that it is now used in the generation of the density.data file as well as eepot.data. Change reflected through all examples input files. - Added variety of examples illustrating new electron-hole gas capabilities (2D/3D/2D-with-layer separation). - Created standard heg.data format for electron and electron-hole gas calcs. Old version placed in CASINO/examples/old directory. - Added SnS2 (Gaussians) as an example of a weird structure with more than one type of atom. See CASINO/examples/crystal/SnS2_g. ------------------------------------------------------------------------------ Merged Gavin's changes into current CASINO release: - (GJB) Implemented capability to do 2D/3D electron-hole gases in addition to existing 2D/3D electron gas capability. Regular wave functions and pairing wave functions implemented. In 2D systems, separation between layers (of up and down spin electrons, or of electrons and holes) allowed. New input keywords: nhu,nhd - number of up and down spin holes vm_opt_pairing - in variance minimization, optimize the pairing parameter used in the excitonic insulating phase of the electron-hole gas. New utility : CASINO/utils/optimize_rex for manually optimizing the above pairing parameter. PLEASE DO NOT PUBLISH CASINO ELECTRON-HOLE GAS CALCULATIONS WITHOUT DISCUSSING AUTHORSHIP QUESTIONS WITH GAVIN/RN/MDT SINCE IT IS THE POOR BOY'S PH.D.THESIS. - (GJB) Implemented calculation of pair-correlation function for electron-gases and electron-hole systems. New utility - CASINO/utils/plot_corr for producing pretty pictures thereof. - (GJB) Corrected error in the limits.f90/dmc.f90 routines which meant that Umrigar limiting and Rothstein/Vrbik energy limiting could never have worked. This was coded incorrectly by PK when he originally introduced this feature therefore all statements in theses/literature about effectiveness of limiting procedures need to be reassessed. - (GJB) commonly used variables like nele and netot put in 'store.f90' module to reduce passing variables around in argument lists. ------------------------------------------------------------------------------ - Added support for CRYSTAL98 into the crystaltoqmc.f90 converter that writes gwfn.data (this previously only worked with CRYSTAL95). Note that you must set the NOSYMADA keyword with CRYSTAL98 calculations (although the CRYSTAL run script provided will add this automatically to the input deck for the duration of the calc if it isn't there already). This means, amongst other things, that we can now use B3LYP and other hybrid DFT functional to generate wave functions - this might well be useful e.g for systems containing transition elements. - Added example of how to run DMC calculation without rundmc script for all those scriptophobes out there, like Greg McMullan. See ~/CASINO/examples/methods/dmc_example. - Added utils/wfn_converters/crystal_to_qmc/README_CHANGES file which contains list of all changes that need to be made to the standard CRYSTAL95/CRYSTAL98 source code to get them to produce all the information that CASINO requires. - (DA) Basic implementation of blip functions basis set introduced ('basic' meaning no k points/no excited states/no multideterminant wfns yet). General PW-->BLIP converter included in CASINO/utils/wfn_converters/PW_to_blips) which will convert a pwfn.data file into a bwfn.data file which should be faster than running in plane waves. - Tried to implement 'two-level' sampling in VMC, with consequent increase in efficiency [see JCP 113, 5123 (2000)] then realized this was incompatible with the (1-prob)*old_energy + prob*new_energy way of accumulating averages. Difficult to see overall improvements without implementing the alternative algorithm of moving all electrons at once - therefore decided not to incorporate into current CASINO release. CHANGES APPEARED IN CASINO version 1.3 13th March 2001 ------------------------------------------------------ - Revamped the on-line pseudopotential/Jastrow function library which can now be found at: www.tcm.phy.cam.ac.uk/~mdt26/casino_library.html . New format for on-line files created (see the page itself, and the CASINO/html directory in the distribution.). Began to add Yoonseok's new Dirac-Fock pseudos. - Added new machine type 'octane' to the automatic CASINO environment for SGI Octane workstations. Scripts includes argument to specify the number of nnodes. - Added some new examples to the silicon in plane-waves examples directory with different supercell sizes and k_s vector. - Added new input parameter 'orbbuf' to allow DMC orbital buffering to be turned off (since it is very memory hungry) at the cost of decreased efficiency. - 'BUGFIX': Changed the step-size parameters in the wfcheck.f90 routine (which numerically checks analytic first and second derivatives of the orbitals) so that this check works for a much wider variety of systems. - Corrected generate_eepot.f90 routine which only worked for systems with inversion symmetry. - Plane-wave read, setup and evaluation changed throughout to allow the possibility of *complex* Fourier coefficients of the reciprocal space density i.e. now we can treat densities of systems without inversion symmetry, and hence use the MPC interaction in such systems. - General automatic scheme for selecting k points and bands in PW setup routines so we have the right no of orbitals. Also check consistency of input k point set with scheme for ensuring real Bloch orbitals. - PW efficiency improvements - Completely rewrote readpwf.f90 routine from scratch, so everything looks nice and is allocated properly. - Changed name of gdensity.data file to its old name of density.data to reflect the fact that you can now generate this file automatically and that it has a slightly different format to accommodate the possibility of complex densities. - Added routine utils/wfn_converters/pwscf/pw2casino.f which can be used by the PWSCF package to produce a pwfn.data file (routine written by Dario Alfe). This is not a working utility - just a routine given for reference purposes, should you wish to write a similar converter for other programs. - Huge modifications to CASINO web site - Tidied up variance minimization output - Identified a loop in minimum_image.f90 (cubic/axis_aligned cells only) which appears to be miscompiled on the Hitachi SR2201 when optimization flags are switched on. Broke the statement up into simpler bits and the problem appears to have gone away (MDT/GJB) - Added some simple QMC codes to the CASINO/utils/simple_qmc_codes directory for teaching purposes. - Metallic calculations (i.e. different number of occupied bands at different k points) with gaussian basis sets now allowed. Band energies now extracted from CRYSTAL and used to determine state occupations automatically. - Metallic calculations (i.e. different number of occupied bands at different k points) with plane-wave basis now allowed. - Spin-polarized calculations with plane-wave basis now allowed. - Changed default pwfn.data format from the ancient historical one which we have been putting up with for a while, to one which will allow us to (1) do spin polarized plane wave systems (2) to use eigenvalue information to automatically do metals calculations. (3) to see which type of calculation generated the file (i.e. program name, method, DFT functional, pseudopotential, plane wave cutoff). Example file now in CASINO/examples/crystal/silicon_pw directory. Old file retained for reference in CASINO/examples/old directory. - Added printout of 0.5*|k|^2 for each star in optional reciprocal lattice printout in heg_k_lattice routine - Automatic i/o unit number generation throughout the code. Removal of inifiles.f90 routine - BUGFIX: title of generated density.data and eepot.data not printed correctly with plane-wave basis set. - Added support for determinant coefficient variation in the alpha/hitachi runvarmin scripts (GJB) - BUGFIX : fixed a problem which had crept into the points.f90 routine (which generates the initial electron distribution) for the homogeneous electron gas. - Added simple program (plot_vmc) to plot vmc energy as a function of move number from a vmc.hist file. (GJB/MDT) - Added '-big' option to the alpha runvarmin script. If you anticipate getting huge vmc.hist/vmc.posout files, turning this flag on will ensure these files are created in scratch and afterwards moved into a holding directory on the scratch disk with links to them from the working directory. - Added correct cusp conditions for strict two-dimensional calculations to jasfun.f90 (GJB) - Added 2D slab example to CASINO/examples directory. - BUGFIX (GJB): Call to normalize_mol_density in vmc.f90 had wrong number of arguments. This feature never used before, hence failure to discover. Error goes back to Porter. Why you would want to calculate this anyway? - Added capability for CASINO to automatically generate the gdensity.data file for a given geometry when the IRUN input parameter is set to 6. See new CASINO/src/denft.f90 routine. - Modified T3E runvmc script to handle gdensity.data generation - BUGFIX: Umrigar local energy limiting (used when LIMDMC=2) would not work if DMCEEST was input in eV. This was because the ESDF input handler (introduced June 2000) always converts everything into atomic units, but there was also an explicit statement in monte_carlo.f90 which converted DMEEST from eV/atom to ha/supercell. Thus it was being converted to eV twice. This statement now converts from ha/atom to ha/supercell. (Soon everything will be ha/supercell). Furthermore, the way the code is written it is necessary that the nuclear-nuclear repulsion energy and ion-ion polarization energy is subtracted from DMCEEST before it is used - this wasn't being done! This means that it could only ever have worked for atoms (which, indeed, is all PK tested it on). (NB: there was yet another problem with energy limiting which was discovered later - see CASINO version 1.4) - Some of the descriptions in the casinohelp facility have been expanded. - Change to error handling when determining the set of G vectors in generate_eepot.f90 routine, plus some other bits of tidying. - BUGFIX (GJB): error in set_det_parameters in varmin.f90 means that simultaneous variance minimization of determinant coefficients *and* Jastrow parameters could never have worked properly ( error by ARP 1999 ==> Goodbye various bits of Porter thesis..? Check.) - BUGFIX: made some corrections to the examples in CASINO/examples/crystal: (1) the line Parallel and antiparallel components present F in the homogeneous rij term of the silicon jasfun.data should be T (2) the given homogeneous rij term for the carbon jasfun.data had only one column when we should have two for parallel and antiparallel spins. Reoptimized and replaced. - Added (again) new module CASINO/src/nag_routines/nag.f90 and README containing routines to emulate the NAG library on machines where it is not available. - Removed the line EXTERNAL e02aef from awfdet.f90, since this NAG routine is no longer used anywhere. - BUGFIX: correction to the CRYSTAL9X --> CASINO converter to fix bug which meant that supercells bigger than 3x3x3 would not work(!). CASINO keeps information indexed by k points into separate 'real' and 'complex' sets. Thus if a sequence of blocks of eigenvector coefficients produced by CRYSTAL are in the order RCRC they will need to be reordered by crystaltoqmc.f90 into the sequence RRCC. This reordering was not being done correctly. Note that the sequences are as follows for different supercell size: 2x2x2: RRRRRRRR 3x3x3: RCCCCCCCCCCCCC 4x4x4: RCCCCRCCCCRCCCCCCetc. Hence the first one which requires reordering is 4x4x4 which is why the problem was not noticed before. - Minor change to hitachi reblock script (mv rather than cp reblock.plot ..) CHANGES BELOW RELEASED AS --> CASINO_v1.1.4 (5th December 2000) --------------------------------------------------------------- - Various updates to manual - Changed the names of various parameters (L', LC, L0, L etc.) in the write_jasfun routine in jasfun.f90 in order to agree with what's written in the manual. Changed the 'Enable spin polarization' comment to 'Parallel and antiparallel components present' for the homogeneous rij term. - Added error check when opening dt.plot file in taueff_block_end routine - Changed run scripts to handle the dt.plot script if effective time step logging is turned on. - Added 'optimize_a' script to utils directory to 'automate' the manual optimization of the A parameter in the jasfun.data file. - Complete f90ization and rewrite of the CRYSTAL95-->CASINO converter. Note name changes: 'crysgen ' will now generate the required files. - BUGFIX: slight modification required in read_ppots.f90 to make sure it always computes the non-local cutoff accurately. - Minor modification to monte_carlo.f90 in test run printout - Wrote script to emulate the reblock utility on lovelace/babbage (necessary due to the lack of an f90 compiler on lovelace). The script uses rsh to run 'reblock_babbage' cross-compiled on the SR2201. The utils Makefile was modified to set all this up automatically. CHANGES BELOW RELEASED AS --> CASINO_v1.1.3 (8th November 2000) -------------------------------------------------------------- - Minor changes to Alpha and T3E runvmc scripts - Corrected print out of atomic numbers at end of eval_geometry.f90 which could have failed in certain weird circumstances (thanks to AJW for pointing this out) - Modified drift_vector.f90 routine with INTENTS and put constants into constants module - Commented out superfluous if statement in wf_ratio.f90 CHANGES BELOW RELEASED AS --> CASINO_v1.1.2 (27th October 2000) -------------------------------------------------------------- - Completed capability to do promotions/additions/subtractions in 2D/3D HEG - Added Gaussian basis set tutorial to CASINO/docs directory - Added new 128 queue to hitachi scripts - Rewrote README file in CASINO/utils/wfn_converters/crystal_to_qmc - Silicon example with Gaussian basis set added to CASINO/examples directory. - Discovered that SGI Origin version of CASINO did not work under certain circumstances. Turns out this only happens with -O3 compiler optimization turned on. Compilation with -O2 fixes the problem. Default zmakes/origin.inc file has thus been changed to reflect this until I figure out what's going on. - BUGFIX: Allowed local energy with MPC to be written as a block header in vmc.hist - not just local energy with Ewald (this is just for information purposes only - info not used for anything...) - BUGFIX: added broadcast of nbasis and pa123 in readpwf.f90 routine - meant plane wave calcs didn't work on parallel machines. (!) - BUGFIX: reblock utility - fixed energy print out for periodic VMC calc with MPC interaction - BUGFIX: read_ppots.f90 - changed size of 2nd dimension of fcoeff_non_loc from 0:maxl to 0:maxl-1 to prevent error in a later if(any(fcoeff_non_loc).. statement (the maxl-th column is never accessed or zeroed). - BUGFIX: stopped ionic_potential in local_energy.f90 from inaccurately interpolating pseudopotential at large r - just replace with -z/r beyond the cutoff radius. Bug present in CASINO since first introduction of molecular calcs. (Thanks to AJW/RH for pointing this out). CHANGES BELOW RELEASED AS --> CASINO_v1.1.1 (30th August 2000) -------------------------------------------------------------- - fixed minor errors in vmc.f90/dmc.f90/config_energy.f90 which caused fault when using MPC interaction only in solids (unwittingly introduced during late night tidying session just before last release). - updates to manual - minor correction to t3e rundmc script - change to default eepot_cutoff_energy units - polymer example included CHANGES BELOW RELEASED AS --> CASINO_v1.1.0 (11th August 2000) -------------------------------------------------------------- - replaced QMC 'input' and 'varmin.in' files with generic Electronic Structure Data Format 'input' file. - new run scripts to handle ESDF input format - new clear format for pseudopotential files. All pp quantities which can be automatically computed rather than input are now automatically computed. Updated ppfit pseudopotential fitter and ptm pseudopotential transformation utility to reflect new format. Changed pseudos on web library to new format. - Possible to have different non-local integration rules for different type of atom --> big speedup in e.g. NiO. - Variance minimization for HEG implemented - excitations in HEG - 2D HEG capability (except 2D Jastrow factor) - examples directory with atoms/molecule/polymer/slab/solid/heg sample inputs - new CASINO help system - added tool for graphing numbers from dmc.hist file - corrected minor problem with error check message about nwrcon > nmove in monte_carlo.f90 - minor updates to utils Makefile CHANGES BELOW RELEASED AS --> CASINO_v1.0.1 (=Jul20001.0.1) ----------------------------------------------------------- 23/7/2000 - Allowed MPC interaction to be used in variance minimization - Added error trap in read_mpc if no eepot.data file exists - Prevent alpha runvmc script from touching vmc.hist and vmc.posout when running generate_eepot. - Added timer to generate_eepot routines - Rewrote installation instructions in README_install file. - Added varmin.in example to examples directory - Minor changes to reblock utility for electron gas calcs CASINO_beta --> CASINO_v1.0.0 (Jul 2000) (MDT) ---------------------------------------------- - Use either or both Ewald and MPC ee interactions, rather than always computing both. Introduced accumulation of standard error of MPC interaction. - Totally rewrote local energy routines to simplify and clarify. - Wrote module for treating homogeneous electron gas - fluid or crystalline phases, arbitrary density/spin polarization/cell geometry. Fast pre-computation of long-range constant for MPC interaction. - Optional automatic computation of parameters in Jastrow that depend on the Wigner-Seitz radius. - Built up xxx directory for unfinished projects and bits of stuff that people can work on. - Rewrote reblock utility to allow reblocking for VMC and use of either/both MPC/Ewald interaction - Wrote CASINO official README file. - Made 3D Ewald summer more efficient by evaluating expik.g terms rather than cosines. - Minor modifications to MPC interaction. Removed LONGEN parameter. - Removed some remaining non-f90-standard expressions (e.g. character*16-->character(16), dcmplx-->cmplx etc.). - Found cause of bug on T3E - cured by NOT archiving all the object files into a libcasino.a library but just linking them directly. Hmmm. - Generic Makefile for varmin program (to become useless on the 10/7/2000) General geometries for varmin program. Corrected bug in config_energy routine where the vcpp terms were not added correctly to the energies written to the configs_xxx file. - Merged separate variance minimization code with casino, throwing away everything which duplicated functions in CASINO (i.e. most of it). - Corrected bug which prevented varmin from optimizing only 1 parameter. - Updated run scripts for all machines (some of which had stopped working for one reason or another). Finished universal implementation of the 'Casino Style'. CHANGES FROM QMC code Sep99 --> CASINO_beta (Mar2000) ===================================================== Code completely rewritten in Fortran90. All obsolete include files (.inc) have been converted to f90 modules. - New generic Makefile common to all machines. System dependence from architecture-dependent include files detected automatically through a preset environment variable. All object and library files stored outside the source directory. Automatic creation and tracking of opt/debug/profiled builds. Can use same source code on multi-machine environments like the HPCF and even compile it on different architectures at the same time. - Geometry handling routines rewritten from scratch. The code will now handle any 0D/1D/2D/3D crystal structure, instead of just fcc solids. NB: All geometry specification (other than the number of primitive cells in the simulation cell) has been removed from the file 'input'. Geometry is now taken from the appropriate wave function file gwfn.data (Gaussians), pwfn.data (plane waves), awfn.data (atoms(!)). This is much easier to use and prevents errors. - Coulomb routine rewritten from scratch. Introduced proper Ewald interactions instead of old fitted Ewald stuff (i.e. no more ewald.data files). - One- and two-dimensionally periodic systems (polymers and slabs) can now be handled. - Generation of the file eepot.data can now be done within CASINO, using the geometry read from the wave function files. This has been added to the list of options in IRUN. IRUN=5 ==> generate eepot.data and stop. Nobody knew where the standard fcc one came from. :-) - Replaced generation of vmc.plot with vmc.hist which contains energy data after each move rather than block-averaged quantities. The reblocking utility has been completely rewritten to read either dmc.hist or vmc.hist and to carry out reblocking and analysis of relevant quantities. See utils/reblock/reblock.f90. - Removal of final vestiges of c******************************************************************************* c******************************************************************************* c this c******************************************************************************* c sort c c******************************************************************************* c c c of c c******************************************************************************* programming c 'style'. Now has uniform capitalization/indenting/headings etc. - Minor change in format to atomwave.data file required because of removal of geometry information from input file - new 2nd and 3rd lines added: Atomic number 8 (or whatever) The file has now been renamed 'awfn.data' to account for this change. Yoonseok's code which generates this has been tweaked accordingly. - Code previously required recompilation for different constants (e.g. Angstrom/Bohr conversion) used by different one-electron codes Now all geometry is taken from xwfn.data this is no longer necessary. Hence no further problem. Note all constants now included in module constants.f90 - including stuff like pi and root(2) etc. which was previously defined repeatedly many times throughout the code. - Output tidied up substantially. In particular, for VMC calcs only input parameters relevant to VMC are printed out. Similar for DMC. - The format of the density.data file has been made general by converting the G vector components to au from units of 2pi/a. It is therefore renamed to gdensity.data to reflect this. A conversion utility is provided. - New TESTRUN option added to input file - read in all files, print out information then stop (increasingly necessary if we're doing complicated geometries.) - qmc_mpi.inc and mpif.h hacked so we can include them in f90 source forms. - All machines (CRAY,Origin,SR2201,Alpha) now use the same random number sequences via NAG routine and so should give the same answer. Current state of random numbers on processors can be saved for restarts. Improved testing of seeds. - New versions of runvmc/rundmc/runvarmin included in scripts directory for controlling runs in a safe and convenient manner on Alpha,SR2201,Origin. Problem with this for T3E now sorted, so rundmc/runvmc scripts for this machine now included also. - New Secret QMC Web Page set up containing pseudopotentials, jasfun.data files - Generation of density.data file within CASINO for Gaussian calculation from information in gwfn.data wave function file (IRUN=6 ==> do this then stop). - Lots of boring utility routines which will never need to be touched again have now been collected in the 'utilities.f' file to reduce clutter. - Rewrite of plane wave routines including tidying up, and f90ization. Noted that does not work for general geometry; spin-polarized systems; metals; complex Fourier coeffs; etc. etc. - DSUM routine has been replaced by fortan90 intrinsics. - CRYSTAL to QMC converter to generate gwfn.data file from CRYSTAL output now included with main distribution. - (ARP) Accumulation and output of density for aperiodic cases. - (ARP) Addition of optimization of determinant coefficients. - (ARP) Utility routine for converting functions defined in jasfun.data into form suitable for plotting. - (ARP) Gaussian9X-->gwfn.data routines. All changes by Mike Towler (MDT) unless otherwise stated. Summary of changes to input files from QMC Sep 1999 ---> CASINO_beta -------------------------------------------------------------------- input - completely new format. Replace. density.data --> gdensity.data with Gx, Gy, Gz in au not 2pi/a units atomwave.data --> awfn.data (now includes atomic numbers) wavefun.data --> pwfn.data (no format changes but renamed for consistency) gwfn.data - no changes jasfun.data - no changes x_pp.data - no changes eepot.data - no changes ewald.data - dead. -------------------------------------------------- #### ### ## #### # # The CASINO # # # # # # # # # # # # # # # # ### # # # ###### #### # # # # # # # # # #### ### # # # # ### Summary of changes to CASINO from September 1999 -------------------------------------------------- List of changes in v2.11 series ------------------------------- Released as CASINO v2.12 (5/3/2013) ---[v2.11.333]--- * Final changes of version numbers, documentation etc. for 2.12 release. -- Mike Towler, 2013-03-05 ---[v2.11.332]--- * Added arch file for the Juqueen Blue Gene/Q at Juelich (currently fastest computer in Europe). New CASINO_ARCH: bluegene-xlf-ll-parallel.juqueen2 -- Mike Towler, 2013-03-05 ---[v2.11.331]--- * Rewrote the build-tools/update-version utility so that it will reconstruct the non-existent DIARY file in the git distribution for stable release versions (i.e. even numbered versions 2.10, 2.12..). Previously it would only do this for odd-numbered development versions (2.9, 2.11..). The reconstruction is done by simply concatenating the various DIARY_vx.xx files in doc/changelogs. -- Mike Towler, 2013-03-05 ---[v2.11.330]--- * Fixed a couple of typos in slater.f90 where 'tol_log_softzero' and 'tol_log_hardzero' were used instead of real(log_softzero,dp) and real(log_hardzero,dp). This could lead to spurious FPE errors such as the 'floating-point exception reported when calculating old drift vector' error supposedly fixed in v2.11.328. That was not the correct fix - this is. Discussion with PLR acknowledged. -- Mike Towler, 2013-03-05 ---[v2.11.329]--- * Fixed incorrect value for L_u cutoff in the correlation.data file for examples/crystal/gaussians/nio/444 (it was greater than the Wigner-Seitz radius, which is not allowed). It now has the default value flagged by 0.d0 in agreement with the correlation.data file in the nio/333 case. -- Mike Towler, 2013-03-03 ---[v2.11.328]--- * Adjusted soft zero tolerances in the slater.f90 FPE handler, to avoid a very occasional problem that manifests as 'floating-point exception reported when calculating old drift vector'. [BUT SEE v2.11.330, MDT.] -- Mike Towler, 2013-03-03 ---[v2.11.327]--- * Updated changes lists in module headers. -- Mike Towler, 2013-03-03 ---[v2.11.326]--- * The block of allocation statements for ao_m, alap_m, agra1_m etc. in gaussians.f90 was surrounded by a commented-out 'if(isperiodic)then' statement and the preceding comment 'FIXME - why are the lines below commented out?'. I have FIXed it by inserting the correct if statement, to the effect that they do not need to be allocated in the periodic case unless cusp correction is turned on. -- Mike Towler, 2013-03-01 ---[v2.11.325]--- * Removed doc/MACHINES file, as it's very difficult to keep this up to date. -- Mike Towler, 2013-03-01 ---[v2.11.324]--- * Added a new [r] option to the install script, which will restore the CASINO distribution to its original state for compilation purposes (by deleting bin_qmc, lib/zlib, src/zlib, utils/zlib). Updated documentation to reflect this. -- Mike Towler, 2013-03-01 ---[v2.11.323]--- * Fixed typo in src/Makefile which led to the 'make shm/debug' alternative to 'make Shm/debug' not working. Also fixed a missing dependency in the Makefile. -- Mike Towler, 2013-03-01 ---[v2.11.322]--- * Partial implementation of shared memory for Gaussian basis calculations (i.e. the full vector of orbital coefficients ck). On a machine like Hector with 32 cores per node, this should more than halve the total memory requirements. -- Mike Towler, 2013-03-01 A full implementation would also use shared memory for the smaller rck and cck vectors, but this is not currently possible without rewriting the CASINO Gaussian matrix multipliers such as multi_ddot_s, mxmb, ddot etc.. (reason: rck and cck must be turned into pointers for shm, but the Fortran standard will not accept the first element of a vector pointer being passed into a subroutine where the corresponding dummy argument is declared as an assumed-size array). As we're currently only supposed to be reviewing release candidate 1 rather than implementing new features, this will be done at a later date. ---[v2.11.321]--- * Tidying: removed unused variables, as suggested by g95. -- Neil Drummond, 2013-02-27 ---[v2.11.320]--- * Introduced new 'errwarn_silent' routine in run_control.f90 which behaves exactly like 'errwarn' apart from a minor difference in the format of the output string. This allows autotest to ignore selected irrelevant warnings which clutter up its output. Also modified ve utility to be aware of this, so that it correctly complains about both types of warning. -- Mike Towler, 2013-02-26 ---[v2.11.319]--- * Added new '--autotest' flag to runqmc so that it knows when it is being run by the autotest script and can modify its output accordingly. -- Mike Towler, 2013-02-26 ---[v2.11.318]--- * Various improvements to the runpwscf script. -- Mike Towler, 2013-02-26 (1) Better handling of the binary arguments (through the recently introduced BINARY_ARGS tag). This was previously done through a hack that didn't work on Blue Gene/Qs (thus runpwscf now works on Hartree). (2) runpwscf now works on machines which require 'staging' of the input and output files (see patch 2.11.169) such as the K computer. (3) The --inquire / -i functionality had got broken. Fixed. (4) Fixed some spellings and ugly formatting. ---[v2.11.317]--- * Updated the format of the Blue Gene/Q runjob command in bluegene-xlf-ll-parallel.bluejoule.arch so that it will accept the new BINARY_ARGS tag. -- Mike Towler, 2013-02-25 ---[v2.11.316]--- * Added new arch tag 'BINARY_ARGS' which allows one to specify a list of command line arguments to be used with the binary executable. Of course CASINO does not require such arguments, but other codes which make use of the CASINO architecture system do (e.g. to run PWSCF, one might write 'pw.x -pw2casino -npool 4 < in.pwscf >> out.pwscf') where everything after the pw.x counts as a command line argument. New tag defined and documented in arch/taglib.sh, arch/README, data/syntax/vim/arch.vim, and the manual. -- Mike Towler, 2013-02-25 ---[v2.11.315]--- * The qmc_barrier routine included a call to mpi_iprobe(mpi_any_source..) to check for non-empty MPI queues. This is effectively a debugging operation which is unnecessary if the code is correct, and I have therefore restricted its use to 128 cores or less since it is unlikely to scale well up to a million cores. -- Mike Towler, 2013-02-24 ---[v2.11.314]--- * Added to the FAQ (Question D1) my magical incantation for compiling PWSCF/Quantum Espresso on the Hartree Centre Blue Gene/Q 'bluejoule'. -- Mike Towler, 2013-02-23 ---[v2.11.313]--- * Added support for CentOS Linux to the install script (following suggestion by PLR). -- Mike Towler, 2013-02-22 ---[v2.11.312]--- * Someone had carefully deleted the line 'deallocate(ck)' in gaussians.f90 thus ensuring that the post-setup memory requirements of Gaussian calculations were doubled (patch 2.2.4?). Fixed. -- Mike Towler, 2013-02-22 ---[v2.11.311]--- * Fixed error in bwfdet.f90 which could lead to weird MPI_BCAST errors, and which occurs only when reading formatted bwfn.data files. For small enough files, the master could create the binary bwfn.data.bin from the formatted file before some slave cores had actually inquired whether or not the binary file existed. Having come to believe that it always had existed, these slaves called 'read_binary' whereas the master and some of the other slaves called 'read_formatted'. The resulting mismatch of mpi_bcast calls then led to an mpi_truncation error. Fixed with a suitable mpi_barrier call. -- Mike Towler, 2013-02-22 ---[v2.11.310]--- * NDD's 2.11.307 introduced a new error condition objecting to too many parameters supplied in sets in correlation.data. This was (harmlessly) true for one of the examples; I've now deleted the extra parameters so that it runs. -- Mike Towler, 2013-02-22 ---[v2.11.309]--- * Having just realized that the Nag Fortran compiler doesn't support Cray pointers, I have added SUPPORT_SHM = no to relevant arch files that reference nagfor, i.e. this compiler does not support CASINO's shared memory implementation. -- Mike Towler, 2013-02-22 ---[v2.11.308]--- * Very minor modification of crysgen output. -- Mike Towler, 2013-02-20 * Modified CASINO so that it will halt with an error if too many parameters are supplied in sets in correlation.data. By far the most common reason for having too many parameters is that the user has made a mistake. (In response to a problem encountered by a student at the JAIST winter school.) -- Neil Drummond, 2013-02-20 Tidying of manual. ---[v2.11.306]--- * The behaviour of the crysgen06 and crysgen09 tools -- used for converting the output of CRYSTAL06/09 into gwfn.data format -- has been improved for the case that they are run manually. -- Mike Towler, 2013-02-20 Normally these tools are run automatically by the runcrystal script supplied with CASINO, but runcrystal does not (yet) work on batch machines using the MPP version of CRYSTAL (and most CRYSTAL users will habitually use the Torino supplied scripts anyway) - hence the need to improve the manual behaviour. The crysgen0x tools read a list of required supercell sizes from a runcrystal-generated crysgen.dat file. The crysgen.dat file was read by crysgen0x from standard input, and was only relevant for the case of periodic systems. The following improvements have been made: (1) The crysgen.dat file is no longer read from standard input, but from a named file whose existence is tested for. This will prevent people waiting a very long time if they just type 'crysgen09' rather than 'crysgen09 < crysgen.dat' (it was not clear from the manual that you had to do this.) (2) If crysgen.dat is not found, crysgen0x will assume it is being run manually and ask for the required supercell sizes on the command line (or not in the case of non-periodic atoms and molecules). (3) The documentation of the manual procedure has been clarified. ---[v2.11.305]--- * Fixed recently introduced bash error in plot_reblock. -- Neil Drummond, 2013-02-18 Below released as v2.12 Release Candidate 1. ---[v2.11.304]--- * Added DIARY file for 2.12 version to doc/changelogs. -- Mike Towler, 2013-02-16 ---[v2.11.303]--- * Updated version numbers etc. in various files in preparation for new release. -- Mike Towler, 2013-02-16 ---[v2.11.302]--- * Changed format string "f2?.??" to "es24.16" in a few cases, e.g., expval.f90 (in a large electron gas the volume written to the expval.data file was "**********"). -- Neil Drummond, 2013-02-13 ---[v2.11.301]--- * Added a comment to the output of reblock stressing that the user must input the required block length, not the reblock transformation number (following reported user confusion). -- Mike Towler, 2013-02-13 ---[v2.11.300]--- * When creating an x_pp.data file from a Gaussian fit, the ancient ptm utility refused to commit to a choice of which angular momentum channel should be the local component, and instead printed a row of question marks in the header without further explanation. This is apt to be confusing, so it now chooses the highest angular momentum component as default and adds a suggestion to 'EDIT THIS'. -- Mike Towler, 2013-02-11 ---[v2.11.299]--- * Various modifications to the auto-continue facility. -- Mike Towler, 2013-02-11 - users no longer need to manually put runqmc in the background when using --auto-continue, as runqmc will now create a detached process that runs the auto-continuation. As this will be killed on some machines if the user logs out, a warning is given to this effect. - clusters will properly object if the --walltime flag to runqmc is not present. - rewrote the warning messages about modifying the input file so it is clear what is actually being done. - Fixed clearup so it deletes the output from all stages of an auto-continued calculation. - object to the staggeringly unlikely presence of both --continue and --auto-continue on command line. ---[v2.11.298]--- * Fixed typo in error message in runqmc. -- Mike Towler, 2013-02-10 ---[v2.11.297]--- * Rewrote plot_reblock utility in bash, and added a check for the existence of the reblock.plot file. -- Mike Towler, 2013-02-07 ---[v2.11.296]--- * Prevented an array out-of-bounds error and tried to make a couple of error messages slightly more helpful in gjastrow.f90. -- Neil Drummond, 2013-02-05 ---[v2.11.295]--- * Removed unused 'barrier out of synchronization' check in parallel.f90/qmc_barrier. Also, both checkmpi and qmc_barrier were incorrectly calling both mpi_abort and mpi_finalize. Fixed. -- Mike Towler, 2013-02-04 ---[v2.11.294]--- * Minor change to error message in runqmc. -- Mike Towler, 2013-02-04 ---[v2.11.293]--- * Minor change to run_control.f90. -- Mike Towler, 2013-02-03 ---[v2.11.292]--- * Ferromagnetic NiO example in examples/crystal/gaussians/nio/ had CRYSTAL input files with incorrect syntax (wrong number of basis functions specified for the Ni basis). Amazingly CRYSTAL in serial or ordinary parallel version does not notice this (though it causes the MPP version to crash). Fixed the input and regenerated the gwfn.data file for the 444 case (and made a new one for the 333 case where it was missing). Added new correlation.data for the 333 case. -- Mike Towler, 2013-02-02 ---[v2.11.291]--- * Fixed error in reblock.f90 whereby the error bar on the correlation time could be computed incorrectly (due to a problem with the cutoff in the summation to compute the autocorrelation function). -- Mike Towler, 2013-02-01 ---[v2.11.290]--- * Fixed typo in esdf.f90. -- Mike Towler, 2013-01-31 ---[v2.11.289]--- * Having accidentally set the value of the MAX_CPU_TIME input keyword to be '24h' (i.e. using the 'CASINO format' employed by runqmc), I observed this causes runqmc to crash when it parses the input file. Have now fixed runqmc so it will detect and warn about this, and remind the user to use the 'ESDF format' e.g. 1 day, 24 hr, 1440 min, or 86400 s in the input file. Also updated the keyword definitions of MAX_CPU_TIME and MAX_REAL_TIME in esdf_key and the manual to include this information. -- Mike Towler, 2013-01-31 ---[v2.11.288]--- * Updated utils/simple_modules/run_control.f90 ro reflect previous patch. -- Mike Towler, 2013-01-31 ---[v2.11.287]--- * As errstop_master is guaranteed to be called by all nodes it is safe for it to use mpi_finalize rather than mpi_abort, hence avoiding all the hideously verbose MPI warnings that are printed when mpi_aborting. -- Mike Towler, 2013-01-31 Also deleted the no-longer-required errstop_quiet routine and all reference to it. ---[v2.11.286]--- * Change esdf.f90/esdf_die so that it calls errstop_master instead of errstop_quiet, thus only the master will whine about errors in the input file. -- Mike Towler, 2013-01-31 ---[v2.11.285]--- * The setup_autocontinuation function in runqmc attempts to convert the value of the --walltime flag from CASINO format into seconds, even though this has already been done. Result: runqmc always flags up an error about a missing --walltime flag when attempting to run with --auto-continue on batch machines and refuses to run the calc. Fixed. -- Mike Towler, 2013-01-31 ---[v2.11.284]--- * Fixed twist averaging bug. -- Graham G Spink, 2013-01-30 For HEGs at partial spin polarisations, we need to reoccupy orbitals for each spin separately as we change the twist angle, because the Fermi wave vectors for the spins can be very different. This is now fixed. In some test cases, older results are accurate to about 3 significant figures; other HEGs were unaffected. ---[v2.11.283]--- * Fixed nasty shared-memory bug in bwfdet.f90. There was no barrier to prevent cores proceeding with the QMC calculation before the blip coefficients had been broadcast to the smpmasters when blip coefficients were read from the formatted bwfn.data file. -- Neil Drummond, 2013-01-30 ---[v2.11.282]--- * Made plot_expval issue a warning rather than stop with an error if the spin-density matrix is non-Hermitian. -- Neil Drummond, 2013-01-29 ---[v2.11.281]--- * Fixed typo in esdf_key.f90. -- Mike Towler, 2013-01-27 ---[v2.11.280]--- * Unusual circumstances related to individual cores running out of configs could lead to a DMC segmentation fault. Fixed. -- Mike Towler, 2013-01-26 ---[v2.11.279]--- * Removed some left over TeX from the README_INSTALL file. -- Mike Towler, 2013-01-24 ---[v2.11.278]--- * Added a set of timing results on Titan to the FAQ, question A3 ('Which Fortran compiler should I use?') -- Mike Towler, 2013-01-24 Runs for H on 50-atom-per-cell graphene slab (MDT 1.2013) on a Cray XK7 (Titan), with CASINO's current standard optimizing compiler flags. VMC Gnu 79.65 seconds -282.890716861446 +/- 0.160222570613 PGF 83.74 seconds -282.895599950580 +/- 0.121131726135 Ifort 84.48 seconds -282.970112923443 +/- 0.128262416613 Cray 87.28 seconds -282.890716855184 +/- 0.160222562116 DMC Gnu 397.20 seconds -284.256578870330 +/- 0.048408651743 Cray 456.63 seconds -284.256578740638 +/- 0.048408642717 Ifort 477.75 seconds -284.252588591933 +/- 0.117686071014 PGF 490.10 seconds -283.915347739145 +/- 0.077180929508 Moral: use the GNU compiler (linuxpc-gcc-pbs-parallel.titan). Note: GNU and Cray answers essentially agree with each other, but Ifort (VMC) and PGF (DMC) are giving significantly different answers. This probably needs to be investigated. ---[v2.11.277]--- * Completely rewrote the 'Installation of CASINO' section of the manual (a) to reflect current realities, and (b) to improve the clarity of the description (DA recently suggested he couldn't understand it.). I have also added a de-TeXed version of that section of the manual as a README_INSTALL text file in the CASINO base directory. Justification: many people look for such a thing when trying to install a new code, and often can't be bothered to download, view and search a big PDF file. -- Mike Towler, 2013-01-24 ---[v2.11.276]--- * Following user request, added PLR's documention for the experimental General Jastrow Factor (gjastrow) as the file doc/gjastrow_guide.pdf. Added a reference to this in the manual. -- Mike Towler, 2013-01-23 ---[v2.11.275]--- * Another minor change to arch/data/machine/titan-xk7.arch. -- Mike Towler, 2013-01-23 ---[v2.11.274]--- * Fixed error in detection code written to .bashrc.casino by the install script, which could lead to the default compiler not being the supposedly most preferred compiler defined by the [s] sort option. -- Mike Towler, 2013-01-22 ---[v2.11.273]--- * Fixed typo in arch/data/machine/titan-xk7.arch. -- Mike Towler, 2013-01-22 ---[v2.11.272]--- * Fixed Openmp support on Titan for PGI compiler. -- Mike Towler, 2013-01-22 ---[v2.11.271]--- * Rewrote infinite loop in input_kw_conv utility which was written as 'do i=1,huge(1)' - since the Cray compiler won't accept this. See also patches 2.9.626, 2.9.600, 2.9.259 - how can we get NDD (for it is he) to remember not to do this? ;-) -- Mike Towler, 2013-01-22 ---[v2.11.270]--- * Typo in arch/data/cc/gnu.arch prevented automatic detection of CASINO_ARCHs on many machines because of a problem with gcc C compiler version strings. Fixed. -- Mike Towler, 2013-01-22 ---[v2.11.269]--- * Fixed arch/data/linuxpc-ifort-pbs-parallel.titan.arch so that this CASINO_ARCH can be automatically detected on Titan. -- Mike Towler, 2013-01-22 ---[v2.11.268]--- * Changes to enable CASINO to run on a Raspberry Pi. -- Neil Drummond, 2013-01-21 ---[v2.11.267]--- * Patch 2.11.262 introduced a stray 'write blank line to output' without the required 'if (am_master)' attached to it, resulting in the unnecessary appearance of a mass of .out_node files. Fixed. -- Mike Towler, 2013-01-15 ---[v2.11.266]--- * The possible non-existence of subdirectories specified as command-line arguments to runqmc was not handled correctly. Now it is. -- Mike Towler, 2013-01-14 ---[v2.11.265]--- * Fixed multiple problems similar to that fixed in previous patch (2.11.264), this time in the pjastrow.f90 module. -- Mike Towler, 2013-01-14 ---[v2.11.264]--- * In interactions.f90/ewald_3d, the variable pote is specified in an OpenMP reduction clause, but the xlf95 compiler refuses to be believe that the corresponding line 'pote=pote+sum3-sum2-vc' is actually a reduction operation. Luckily it can be conned into thinking so by adding brackets, thus 'pote=pote+(sum3-sum2-vc)' is correctly considered to be a reduction. Fixed. -- Mike Towler, 2013-01-14 ---[v2.11.263]--- * INFORMATION: submitted fix to PWSCF developers: the modern interface to CASINO was developed with molecular dynamics in mind, with the result that PWSCF writes out an xwfn.data after every update of the nuclear positions even during a straightforward geometry relaxation, which is not what is wanted. The interface now distinguishes correctly between MD calcs and structure optimizations. -- Mike Towler, 2013-01-14 Also: note that shared memory is now working again on Blue Joule. No-one knows why (and I did ask). ---[v2.11.262]--- * The CASINO out file always claimed that the random number generator was initialized 'from the default seed', whatever the value of the 'random_seed' keyword in input. It now makes clear whether the seed is genuinely the internal default, or if it is derived either from the timer or from an integer value given in input. -- Mike Towler, 2013-01-10 ---[v2.11.261]--- * Fixed typo in previous. -- Mike Towler, 2013-01-10 ---[v2.11.260]--- * Updated opt_crystal utility to work in parallel. -- Mike Towler, 2013-01-10 ---[v2.11.259]--- * Updated the billy Gaussian basis set optimizer to work in parallel. -- Mike Towler, 2013-01-10 ---[v2.11.258]--- * Another minor modification to the runcrystal script. -- Mike Towler, 2013-01-10 ---[v2.11.257]--- * Minor adjustment to arch/data/machine/titan-xk7.arch. -- Mike Towler, 2013-01-10 ---[v2.11.256]--- * Modified reblock to print a warning message about possible catastrophic behaviour if two successive energy data are four standard deviations below the mean in a DMC run. -- Neil Drummond, 2013-01-10 Added "-maxpath 1000000" to the XMGrace call in graphit, to reduce the likelihood of XMGrace complaining that "purging failed". ---[v2.11.255]--- * Made the runcrystal script automatically select the distributed data or the replicated data binary based on the presence or absence of the 'MPP' keyword in the CRYSTAL input file. -- Mike Towler, 2013-01-10 ---[v2.11.254]--- * Minor change to build-tools/bash-pretty.mk. -- Mike Towler, 2013-01-07 ---[v2.11.253]--- * The Hartree Centre people continue to tune the IBM BG/Q Blue Joule, and shared memory mode has now stopped working (I swear it worked fine a few weeks back). I am involved in discussions with the support people to understand why. The way CASINO is set up on Blue Joule means this problem breaks non-Shm calculations as well, since the arch file *always* passes the value of the environment variable BG_SHAREDMEMSIZE as an argument to bgrun (giving it a value of 0 for non-Shm calculations) and this causes the thing to crash. As a fix to allow ordinary (non-Shm) calculations to work, I have tweaked the arch file so that the bgrun command only includes BG_SHAREDMEMSIZE if it is greater than zero (i.e. specified by the user on the command line at runtime using --user.shmemsize. See FAQ question B8). -- Mike Towler, 2013-01-07 ---[v2.11.252]--- * Added support for the new Titan (Cray XK7) machine at Oak Ridge (the new 'fastest machine in the world'). This is an evolution of the old JaguarPF XK6; the old jaguar arch files have therefore been retired to the NO_LONGER_EXISTS directory. Note that Titan is not yet publically available, but as I have recently lost my SecurID key and it is not clear how long it will take to get a new one, it may be that someone will want to run on it before I get access. Hence I have followed the upgrade instructions here: www.olcf.ornl.gov/kb_articles/jaguar-to-titan-transition/ to create the new arch files. Please report any problems. -- Mike Towler, 2013-01-06 Note that each of the new Titan nodes will contain an NVIDIA GPU, but CASINO is currently unable to take advantage of this, because my approach to GPU-izing the code just didn't work satisfactorily. Research into this issue continues.. New CASINO_ARCH files: linuxpc-cray-pbs-parallel.titan.arch, linuxpc-gcc-pbs-parallel.titan.arch linuxpc-ifort-pbs-parallel.titan.arch linuxpc-pgf-pbs-parallel.titan.arch ---[v2.11.251]--- * Added '--info / -i' option to runqmc and runpwscf. This tells the scripts to echo some basic information about the current machine to the screen (gleaned from the currently active arch file), then to exit without running anything. This is expected to be useful when trying to remember e.g. the number of cores per node, queue-dependent walltime limits, the maximum number of cores etc. for a particular machine. Previously one had to manually check the arch file for such information, but clearly a typical user might not even realize that such a thing exists (and typing runqmc -i is easier for beginners and experts alike). -- Mike Towler, 2013-01-06 ---[v2.11.250]--- * Hash (#) characters in Makefile shell commands may normally be 'escaped' with a \ character so that they are not interpreted as comments. This allows the use of bash constructs such as ${#string} (number of characters in a string) and $# (number of positional parameters). Unfortunately, AIX does not allow escaping of hashes in this way, and they are *always* interpreted as comments. I have therefore rewritten the unpad, size_del_codes, compile_info, and nocompile_info functions in build-tools/bash-pretty.mk in alternative ways that do not use hash characters. One then finds that AIX make almost, but not quite, works, instead of crashing immediately with cryptic errors. I will continue to investigate whether further mods might allow AIX make to work fully. -- Mike Towler, 2013-01-04 ---[v2.11.249]--- * Fixed stupid typo in previous. -- Mike Towler, 2013-01-04 ---[v2.11.248]--- * Updated the runcrystal script to handle parallel versions of the CRYSTAL program - 03, 06 and 09 versions, basic non-batch operation only. (You may be surprised I haven't done this before, but the last time I used CRYSTAL with any regularity was so long ago that the parallel version didn't work!) You can now specify the number of cores with the -np flag, and it will deal with the new input peculiarities (you don't need to rename the input file to be 'INPUT' as you do with ordinary parallel CRYSTAL). Added a discussion of parallel CRYSTAL to the relevant section of the manual. -- Mike Towler, 2013-01-03 ---[v2.11.247]--- * Developed two new arch files for the Cray-XT5 at JAIST, Japan (request of RM): linuxpc-path-pbs-parallel.jaist-xt5.arch, linuxpc-gnu-pbs-parallel.jaist-xt5.arch -- Mike Towler, 2013-01-03 ---[v2.11.246]--- * Added two new arch files for the Hitachi SR16000 Model M1 at Tohuku University (IMR) using either the Hitachi ofort90 compiler or the IBM mpxlf95 compiler (with some minor modifications to runqmc/clearup/etc.). Note that while CASINO compiles and runs on the machine, the behaviour of the custom queueing system is bizarre, to say the least, and often at odds with its own inadequate documentation. I surely have misunderstood some aspects of its behaviour, and users are encouraged to edit my (lengthy) sequence of run time tags at the start of the arch files and send the results to me. It may also be the case that the optimizing compiler flags could be improved - please feel free to browse through the 30000 pages of documentation and do some tests. Note also that the administrator refuses to install git, so users should use the CASINO tar.gz distribution rather than the git distribution. Note finally that this is the first AIX system that we officially support, and because of minor differences in Unix commands some shell-script utilities and/or build tools may behave in a strange way (obviously those that require git don't work) - please report any faults to me. Note that the official AIX 'make' remains intractable, and while the install script is aware of this, those people who insist on typing 'make' should alias make='gmake' first. -- Mike Towler, 2013-01-02 New arch names: aix-hitachi-custom-parallel.hitachi_sr16000.arch aix-xlf-custom-parallel.hitachi_sr16000.arch ---[v2.11.245]--- * The Hitachi ofort90 compiler refuses to compile the s_to_c function in iso_varying_string.f90 because it objects to 'CHARACTER(len(string)) s_to_c'. I have therefore created an alternative iso_varying_string2.f90 file which uses the alternative construct 'CHARACTER(size(string%chars)) s_to_c'. As this is likely more prone to memory leaks, it is to be used only on machines which require it. I have adjusted src/Makefile and update_makefile_tool to manage this, and have added a new make tag 'ISOVAR_VERSION' (default 1) that may be set to 2 on machines that require the alternative version. Note that the iso_varying_string module is only used by casl.f90 (and therefore not by most users) and that PLR apparently intends to remove it soon. -- Mike Towler, 2013-01-02 ---[v2.11.244]--- * Non-standard versions of 'make' available on some machines may not be able to compile CASINO. In such cases, one can use an alternative version of make (such as GNU 'gmake') which we know works. The name of the alternative make may now be flagged in the arch file for a given machine through the use of a new 'MAKE_EXECUTABLE' tag. This has been defined and documented in arch/taglib.sh, arch/README, data/syntax/vim/arch.vim, and the manual. The install script has been appropriately modified to make use of it following user selection of the [c] compile option. Users will clearly still need to set an alias make='gmake' if they wish to compile CASINO by hand by typing 'make' (but the alias is not available to 'install'). -- Mike Towler, 2013-01-01 ---[v2.11.243]--- * Updated doc/PROGRAMMING_GUIDE to reflect current realities. -- Mike Towler, 2013-01-01 ---[v2.11.242]--- * Older Unix variants do not support the conditional variable assignment operator ?= in Makefiles. I have therefore removed this construct throughout the distribution. This change has the following cost: if CASINO_ARCH is not defined, 'make' will no longer attempt to construct one by combining the old QMC_ARCH and QMC_ID environment variables into a new CASINO_ARCH = $QMC_ARCH.$QMC_ID. If this happens to you, it serves you right for not keeping up-to-date. Run the install script. -- Mike Towler, 2013-01-01 ---[v2.11.241]--- * Deleted doc/bashrc.hector and bashrc.jaguar, which were old example files for how to set up CASINO on some big machines. The install script will now do this sort of thing automatically when you save defined CASINO_ARCHs (data is saved in a .bashrc.casino/.cshrc.casino file called automatically from your .bashrc/.cshrc). Modified the advice in the doc/MACHINES file to reflect this. -- Mike Towler, 2013-01-01 ---[v2.11.240]--- * ALLOWED_NCORE run time arch tag was broken. Fixed. -- Mike Towler, 2013-01-01 ---[v2.11.239]--- * Having encountered a very annoying Japanese Hitachi SR16000 which insists that batch scripts for its custom queueing system are written in C shell, I have rewritten various things so that the CASINO run scripts can output csh scripts as well as bash. -- Mike Towler, 2013-01-01 - Added new runtime tag 'SCRIPTCSH' (set = 'yes' in runtime section of arch file to activate csh batch scripts). New tag defined and documented in arch/taglib.sh, arch/README, data/syntax/vim/arch.vim, and the manual. - Added new arch file linuxpc-gcc-pbs-parallel.hector3-csh.arch so that this can be tested on a developer-accessible machine. - Modified runqmc and runpwscf to write csh batch scripts if required. ---[v2.11.238]--- * Changed name of SINGLE_PRECISION_BLIPS keyword to SP_BLIPS (since the former is too long to fit in the available space in the input file). The earlier form is still supported but is no longer mentioned in documentation or examples, and should be considered deprecated. -- Mike Towler, 2012-12-30 ---[v2.11.237]--- * Updated maximum number of cores and the boundary between small and large queues in linuxpc-fujitsu-pjm-parallel.kei.arch to the correct values. -- Mike Towler, 2012-12-30 ---[v2.11.236]--- * Made sure keyword blurbs in input_kw_conv utility conformed to standard defined in examples/generic/input_file_full/input. -- Mike Towler, 2012-12-30 ---[v2.11.235]--- * Update to 2.11.232. -- Mike Towler, 2012-12-29 ---[v2.11.234]--- * The ALLOWED_NNODE run-time tag in the arch files did not work if preceded by an asterisk (i.e. its value should be obtained from multi-line bash code in the arch file whose standard output is the value of the tag). Fixed. -- Mike Towler, 2012-12-29 ---[v2.11.233]--- * Repeated previous two patches in runpwscf script. -- Mike Towler, 2012-12-29 ---[v2.11.232]--- * The runqmc script arbitrarily resets to zero any MIN_NCORE or MAX_NCORE tag which is not an integer multiple of the number of cores per node. Since I know of clusters which have queues for a subset of cores on a single node, I have allowed arbitrary values of MIN/MAX NCORE if less than the number of cores in one node. -- Mike Towler, 2012-12-29 ---[v2.11.231]--- * Fixed obvious runqmc typo in the following line: ((MIN_NNODE>0)) && info 2 "Evaluated MIN_NCORE=$MIN_NNODE" -- Mike Towler, 2012-12-29 ---[v2.11.230]--- * Fixed harmless uninitialized variable problem in Gaussians cusp setup which could be objected to by a stubborn debugging compiler. -- Mike Towler, 2012-12-28 ---[v2.11.229]--- * Patch 2.11.169 led to the --verbosity flag of runqmc not working correctly (in that not everything supposed to be printed out at a given verbosity level was actually printed). Fixed. -- Mike Towler, 2012-12-28 ---[v2.11.228]--- * Repeated previous in etime.c and added a section to the CASINO programming style guide regarding C routines. -- Mike Towler, 2012-12-27 ---[v2.11.227]--- * Some currently available C compilers still refuse to accept the new-style // comment designator - I have therefore replaced the plethora of instances of this in alloc_shm.c with old-style /* */ comments. -- Mike Towler, 2012-12-27 ---[v2.11.226]--- * AR was not included in the list of allowed Makefile tags in taglib.sh. Fixed. -- Mike Towler, 2012-12-27 ---[v2.11.225]--- * The Makefile will now refuse to compile the git distribution of CASINO if no version of git is actually installed. Justification: the user (who is likely to be a developer) will not be able to read the development log (either through git log or through the DIARY file) nor will he know what version of the code he is running. -- Mike Towler, 2012-12-27 ---[v2.11.224]--- * On some machines, the 'git' installation refers to an obsolete 'GNU Interactive Tools' file manager, rather than the git revision control system, which could lead to severe confusion. The principal Makefile will now detect this, and refuse to compile the git distribution of CASINO (recommending either to install a proper version of git, or to download the CASINO .tar.gz distribution). -- Mike Towler, 2012-12-27 ---[v2.11.223]--- * The expression sed "s/ /\n/"g (replace all spaces with a newline) doesn't work in e.g. BSD/AIX. Modified all instances of this in arch_info.sh using single quotes and literal newlines, which is apparently portable. Suggestions for valid CASINO_ARCHs produced by an install script auto-detection will thus no longer be concatenated on non-GNU systems. -- Mike Towler, 2012-12-25 ---[v2.11.222]--- * Install script didn't work on AIX, since AIX does not supply a functioning 'mktemp' command. Updated arch_info.sh to bypass this problem. -- Mike Towler, 2012-12-23 ---[v2.11.221]--- * Hartree Centre people have modified their system so a page of helpful beginner's advice is echoed to the screen every time a module is loaded. Since CASINO does this every time it compiles a new routine, I've told it to calm down with some helpful redirects to /dev/null/. -- Mike Towler, 2012-12-18 ---[v2.11.220]--- * Added -qmaxmem=-1 to Blue Gene/Q compiler flags to stop it whining about not having enough memory to do optimizations. -- Mike Towler, 2012-12-18 ---[v2.11.219]--- * Allowed use of all-lower-case in addition to CamelCase for make options when choosing which version of the code to compile. Thus one may now type make shm, make openmp, make openmpshm, make shm/debug.clean etc. in addition to make Shm, make Openmp, make OpenmpShm, make Shm/debug.clean etc. This change was made since new users (and Neil) can easily get confused about which letters are required to be capitalized. [REQUEST BY NDD]. -- Mike Towler, 2012-12-17 ---[v2.11.218]--- * Modified runqmc so that the flag for requesting shared memory (currently --shmem[=] or -s ) cam also take the value --shm[=]. [REQUEST BY NDD] -- Mike Towler, 2012-12-17 ---[v2.11.217]--- * The ranks of the first group of cores was not being printed to output correctly when using shared memory on fewer cores than the total number of cores per node. Fixed. -- Mike Towler, 2012-12-17 ---[v2.11.216]--- * Eliminated a superfluous newline in the output of runqmc --help. -- Mike Towler, 2012-12-17 ---[v2.11.215]--- * In going from Blue Gene/P to Blue Gene/Q, the environment variable that you need to set to indicate the size of the requested shared memory partition in Shm mode was for some reason changed from BG_SHAREDMEMPOOLSIZE to BG_SHAREDMEMSIZE. This is now reflected in the FAQ (question B8), in the manual, and in arch/data/bluegene-xlf-ll-parallel.bluejoule.arch. -- Mike Towler, 2012-12-17 ---[v2.11.214]--- * Following previous patch, re-enabled mpixlf95_r thread_safe compiler in bluegene-xlf-ll-parallel.bluejoule.arch and reactivated OpenMP. -- Mike Towler, 2012-12-17 * As reported in 2.11.154, Blue Gene/Q machines refuse to compile CASINO using the thread-safe compilers (mpixlf95_r etc..) because of an internal compiler error. It proved possible to bypass this error by rewriting the gauss_per_cusp.f90 and gauss_per_cusp_bf.f90 routines. Basically, the compiler doesn't like lines like the following: ! s_origin(1:ndim)=matmul(tempvec2(1:ndim),amat(1:ndim,1:ndim)) ! where ndim is the periodicity of the (periodic) system 1, 2 or 3. If we put the block of statements like this in a 'select case(ndim)' structure, with the 1:ndim explicitly written out as 1, 1:2 or 1:3 then the error is avoided. -- Mike Towler, 2012-12-17 ---[v2.11.212]--- * Modified arch_info.sh so that, when using the install script to interactively create a new CASINO_ARCH, users are asked whether the compute nodes and login nodes have completely different file systems (and hence file staging is required). Appropriate modifications are made to the resulting arch file if the answer is 'yes'. -- Mike Towler, 2012-12-16 ---[v2.11.211]--- * The population explosion recovery facility (DMC_TRIP_WEIGHT) was broken, in that any attempt to restart from a previous block was likely to die immediately. Fixed. -- Mike Towler, 2012-12-14 ---[v2.11.210]--- * Removed superfluous sum_data_loc2 vector from dmc.f90, which is allocated and zeroed but never used. -- Mike Towler, 2012-12-13 ---[v2.11.209]--- * Computation of config multiplicities was not protected against integer overflow. Now it is. Integer overflow is likely to happen only when using a deliberately poor wave function, but at least the code will now die for the correct reason, rather than by bitching about there being a 'Bug in the redistribution algorithm'. -- Mike Towler, 2012-12-12 ---[v2.11.208]--- * Blip setup could crash for the case of a real wave function with singly-occupied bands, since it tries to print out the phase of the singly-occupied bands using a vector which is only defined if the blip data is read from bwfn.data or bwfn.data.b1 (not the new bwfn.data.bin). Implemented a temporary fix for this. -- Mike Towler, 2012-12-11 ---[v2.11.207]--- * Hector machine now has NAG compiler, hence new CASINO_ARCH defined. See: linuxpc-nag-pbs-parallel.hector3. -- Mike Towler, 2012-12-11 ---[v2.11.206]--- * In vmc_block_sampling_stats/vmc.f90 the array iaccept_lev_master was not initialized, which could lead to silly values of the acceptance ratio/floating point errors etc.. Fixed. -- Mike Towler, 2012-12-11 ---[v2.11.205]--- * COMMAND_CHECK_F90 was incorrectly defined in arch/data/f90/nag.arch, meaning that NAG compilers could never be automatically detected as a valid CASINO_ARCH. Fixed. -- Mike Towler, 2012-12-11 ---[v2.11.204]--- * In read_mpc/interactions.f90 a line 'No supercell G-vector matching primitive G-vector n' is printed to output for each non-matched vector n. As this represents potentially tens of thousands of lines of completely uninformative output, I have altered it such that it now merely reports the total number of non-matching vectors. -- Mike Towler, 2012-12-11 ---[v2.11.203]--- * The config.backup files used in dmc explosion recovery were not properly copies of the relevant config.out files (because of the non-blocking redist algorithm). Fixed. -- Mike Towler, 2012-12-11 ---[v2.11.202]--- * Auto-continuation was broken for both VMC and DMC - fixed. -- Mike Towler, 2012-12-10 ---[v2.11.201]--- * Fixed some routine names passed to qmpi_bcast in dmc.f90. -- Mike Towler, 2012-12-10 ---[v2.11.200]--- * Corrected error trapping for failing to open pseudopotential file. -- Neil Drummond, 2012-12-10 ---[v2.11.199]--- * Fixed minor infelicity in runqmc where the original input file wasn't being restored in auto-continuation mode on non-batch machines. -- Mike Towler, 2012-12-10 ---[v2.11.198]--- * Clarified and expanded the definition of LWDMC keyword in manual and esdf_key. -- Mike Towler, 2012-12-10 ---[v2.11.197]--- * Minor modification to the graphit utility such that the xmgrace window no longer needs to be resized. -- Mike Towler, 2012-12-06 ---[v2.11.196]--- * Failed to include some modified files in previous patch but one (2.11.194). Now done. -- Mike Towler, 2012-12-06 ---[v2.11.195]--- * Updated CHANGES file. -- Mike Towler, 2012-12-06 ---[v2.11.194]--- * Trawled through the main source ensuring format conforms to specification in manual (Comments, spacing, order of variable declarations etc. etc.). -- Mike Towler, 2012-12-06 ---[v2.11.193]--- * Fixed several issues in dmc.f90. The use of the qmpi_isend/irecv wrapper routines instead of direct calls to mpi_isend/irecv (in routines redist_recv_dmc and redist_send_dmc) led to miscompilation with the fujitsu compiler - fixed by reintroducing the direct calls. The K computer will now work properly.. Also fixed an indexing problem with moving received configs (will lead to small difference in DMC results). -- Mike Towler, 2012-12-05 ---[v2.11.192]--- * Minor modification to some install script text. -- Mike Towler, 2012-12-04 ---[v2.11.191]--- * Fixed some incorrect checkmpi output messages in parallel.f90. -- Mike Towler, 2012-12-04 ---[v2.11.190]--- * Revised comment about Jastrow factors for external potentials in the manual. -- Neil Drummond, 2012-12-03 ---[v2.11.189]--- * Fixed a minor infelicity in non-blocking MPI send/receive of configs which could, under certain circumstances, result in an undefined array being transferred (this ultimately had its origin in the fact that the '_valid' flag which indicates whether the array is up-to-date is not compatible with non-blocking mode). While harmless, this could cause a picky debugging compiler to object. -- Mike Towler, 2012-12-02 ---[v2.11.188]--- * Fixed similar problems to previous patch elsewhere in dmc.f90. -- Mike Towler, 2012-11-27 ---[v2.11.187]--- * Slave nodes were inadvertently accessing a quantity rtmp defined only on the master node during definition of ebest in readconfigs_dmc. Fixed. -- Mike Towler, 2012-11-27 ---[v2.11.186]--- * exmol: added "expproper_param" pairing orbital -- Jonathan Lloyd-Williams, 2012-11-27 This is an exponential exp(-a*r) where a is an optimizable parameter. This pairing orbital is intended to be used only when waiving the the cusp conditions between oppositely charged particles, which can be achieved through the use of the "waive e-e cusp" and "waive e-n cusp" blocks in gjastrow. ---[v2.11.185]--- * Better debug flags for linuxpc-fujitsu-pjm-parallel.kei. -- Mike Towler, 2012-11-27 ---[v2.11.184]--- * Runqmc lock files were being ignored on machines which require file staging. Fixed. -- Mike Towler, 2012-11-27 ---[v2.11.183]--- * Minor update to linuxpc-fujitsu-pjm-parallel.kei arch file (for the K computer) such that files are cleaned up after the calculation even in the case that CASINO stops with an error message. -- Mike Towler, 2012-11-27 ---[v2.11.182]--- * Updated a warning message in the format_configs utility. -- Mike Towler, 2012-11-26 ---[v2.11.181]--- * Any calc with 'atom_basis_type : nonint_he' would crash during attempt to print out determinant info since this is not defined using the conventional mechanism for this special wave function. Fixed. -- Mike Towler, 2012-11-25 ---[v2.11.180]--- * Fixed multiple confusion between atom_basis_type = non_int_he and nonint_he in monte_carlo.f90. Now the documentation says nonint_he, but internally this is transformed into non_int_he. Either value may be used in input. -- Mike Towler, 2012-11-25 ---[v2.11.179]--- * Exact orbitals for noninteracting He atom supposedly flagged by 'atom_basis_type : nonint_he' in input, but runqmc assumes 'non_int_he'. Fixed. -- Mike Towler, 2012-11-25 ---[v2.11.178]--- * Documented previous patch in manual (and PLR's similar patch 2.11.95 for the H2 molecule). -- Mike Towler, 2012-11-25 ---[v2.11.177]--- * special_wavefun: added atom basis type 'h3plus' -- Jonathan Lloyd-Williams, 2012-11-25 This is a wave function for the H3+ ion where each orbital is the sum over hydrogen nuclei of a parameter-less exponential centred at each nucleus. ---[v2.11.176]--- * Openmp implementation was broken in pjastrow.f90. Fixed. -- Mike Towler, 2012-11-22 ---[v2.11.175]--- * runqmc: fixed empty gjastrow detection -- Pablo Lopez Rios, 2012-11-22 ---[v2.11.174]--- * Fixed ESDF module to correctly parse string values. -- Pablo Lopez Rios, 2012-11-21 If the value is contained in the keyword (as it is most likely to happen with single-character values), the parser would return part of the keyword name rather than the value. Fixed. * exmol: flag application of two-particle cusps for correct pairs -- Pablo Lopez Rios, 2012-11-21 Bug found by JHL. ---[v2.11.172]--- * Updated advice about population explosions in manual. -- Mike Towler, 2012-11-19 ---[v2.11.171]--- * My patch 2.11.169 prevented printout of usage information via 'runqmc --help'. Fixed. -- Mike Towler, 2012-11-19 ---[v2.11.170]--- * Designed an arch file for the K computer at the Riken Institute in Japan - the fastest computer in the world until very recently.. New CASINO_ARCH: linuxpc-fujitsu-pjm-parallel.kei -- Mike Towler, 2012-11-19 ---[v2.11.169]--- * The runqmc script was not able to cope with machines which have completely separate file systems on the login nodes (where the job is submitted) and on the compute nodes (where the job is executed). Such machines require 'staging' of the input and output files, the use of relative rather than absolute pathnames, and a more elaborate clean-up procedure. This behaviour can now be flagged with 'RELPATHNAMES: yes' in the arch file (new tag defined and documented in arch/taglib.sh, arch/README, data/syntax/vim/arch.vim, and the manual). -- Mike Towler, 2012-11-19 ---[v2.11.168]--- * The EMIN_AUTO_VARMIN functionality was removed in 2.11.126 but this was not reflected in the manual or in esdf_key.f90. Now it is. -- Mike Towler, 2012-11-18 ---[v2.11.167]--- * Minor modification to the plot_reblock utility such that the xmgrace window no longer needs to be resized. -- Mike Towler, 2012-11-18 ---[v2.11.166]--- * Added .arch file for the Polaris cluster in Leeds. -- N Drummond, 2012-11-15 ---[v2.11.165]--- * Updated the new arch file for the Blue-Gene/Q at the Hartree Centre introduced in 2.11.154 (bluegene-xlf-ll-parallel.bluejoule) in order that jobs can be correctly submitted and run, and so that shared memory can be used. Extensive negotiations were required with the user support people, since their LoadLeveler filter did not allow the running of batch scripts - nicely negating the way runqmc is supposed to work. They have now rewritten the filter, and hopefully everything is now OK. The CASINO arch file will likely need further modification once they clarify the available queues and time limits and so on. -- Mike Towler, 2012-11-07 Note that as of today the machine still isn't working - there are problems with i/o errors in the filesystem leading to random files in your home directory being corrupted. IBM are on the case.. ---[v2.11.164]--- * Arch file for Darwin westmere partition was broken (could not autodetect from hostname). Fixed. -- Mike Towler, 2012-11-06 ---[v2.11.163]--- * Moved redundant arch files linuxpc-gcc-pbs-parallel.darwin.arch and linuxpc-ifort-pbs-parallel.darwin.arch to arch/NO_LONGER EXISTS archive. -- Mike Towler, 2012-11-06 ---[v2.11.162]--- * Fixed incorrect type declarations in the copy_config_file routine from configs.f90 (ranx_indx_in and ranx_gauss_indx_in are INTEGER not REAL). -- Mike Towler, 2012-11-06 ---[v2.11.161]--- * Changed the suffices of the various files that are output by the jastrow_plot facility from .out to .dat (so they are read by default by xmgrace..). -- Mike Towler, 2012-11-05 ---[v2.11.160]--- * The ability to generate VMC configs on a different number of cores to the number used in a subsequent DMC simulation had been broken due to problems in reading the VMC_SAVED_STATE blcok of the config file. Fixed. -- Mike Towler, 2012-11-02 ---[v2.11.159]--- * Fixed unused variable in sampling_utils.f90. -- Mike Towler, 2012-11-02 ---[v2.11.158]--- * A user who downloaded the CASINO distribution via git was deleting the git repository before compiling to save disk space. This meant that the Makefile was unable to reconstruct the DIARY and VERSION files (which are not distributed directly with the git version). The lack of a VERSION file (which gets 'included' in main.f90) led to binary characters in the output file. Have now fixed the Makefile so that compilation will be halted if either VERSION or DIARY does not exist and there is no git repository. -- Mike Towler, 2012-11-02 ---[v2.11.157]--- * Added description of undocumented 'make clean' and 'make info' commands to the manual. -- Mike Towler, 2012-11-02 ---[v2.11.156]--- * Added warning for the situation where both bwfn.data and bwfn.data.bin exist. -- Neil Drummond, 2012-10-29 Corrected an error message when CASINO complains about ion-ion energy mismatches. ---[v2.11.155]--- * Bypassed the compiler error in previous by using the non-thread-safe compiler mpixlf95 instead of mpixlf95_r. -- Mike Towler, 2012-10-24 ---[v2.11.154]--- * Added preliminary arch file for the new Blue-Gene/Q at the Hartree Centre in Daresbury. This is preliminary because (1) all the details of how the machine will function have not yet been released and the documentation is incomplete, and (2) the code will not compile because of an internal compiler error ('load_backchain: Assertion `scope_diff > 0' failed' on compiling gauss_per_cusp.f90) which seems difficult to fix without upgrading the compiler. Nevertheless, if anyone wants to try, here is the arch file. Investigations continue. The new CASINO_ARCH is : bluegene-xlf-ll-parallel.bluejoule . -- Mike Towler, 2012-10-23 ---[v2.11.153]--- * The facility (controlled by the CHECKPOINT_NCPU keyword) for reading in config files on multiple CPUs and broadcasting the data in CPU subgroups (as opposed to the default reading on the master only) was broken (again), for the case that NNODES was not exactly divisible by CHECKPOINT_NCPU. Fixed. -- Mike Towler, 2012-10-22 ---[v2.11.152]--- * Added new RUNTYPE : vmc_dmc_equil. This flags a VMC configuration run followed by 1 round of DMC equilibration (with no DMC stats accumulation at all). This is useful on time-limited batch machines when doing big systems with long equilibration times. -- Mike Towler, 2012-10-22 ---[v2.11.151]--- * Made CASINO fail gracefully if an insufficient number of PW orbitals are supplied. -- Neil Drummond, 2012-10-11 ---[v2.11.150]--- * Pathscale compiler does not allow intrinsic calls in specification expressions, such as INTEGER a(maxval(b)). Fixed multiple instances of this in gjastrow.f90. -- Mike Towler, 2012-10-02 ---[v2.11.149]--- * Modified make_p_stars so that it can be used to generate p terms appropriate for multiple layers of atoms. -- Neil Drummond, 2012-09-19 Tidied "L_f" variable name in pjastrow.f90. ---[v2.11.148]--- * Updated list of computers that we are not allowed to use on tcm_comps. -- Neil Drummond, 2012-09-11 ---[v2.11.147]--- * Fixed various type-conversion errors found by gfortran. -- Neil Drummond, 2012-08-29 ---[v2.11.146]--- * manual: corrected typo in formula for hard-sphere Jastrow term -- Gareth Conduit, 2012-08-23 * install: minor tweaks -- Pablo Lopez Rios, 2012-08-23 - Clarify instructions for installing syntax highlighting. - Don't claim "you have configured CASINO by hand" when CASINO is in fact unconfigured. ---[v2.11.144]--- * Minor modification to manual. -- Mike Towler, 2012-08-18 ---[v2.11.143]--- * Updated linuxpc-ppgf-pbs-parallel.jaguarpf.arch file to remove specific directives to load a PGF compiler after version 12.3 (since this has now become the default). This reverses patch 2.11.86. -- Mike Towler, 2012-08-18 * Modified jaguar-xk6.arch: widow1 removed. -- Neil Drummond, 2012-08-18 ---[v2.11.141]--- * install: offer installation/removal of syntax highlighting -- Pablo Lopez Rios, 2012-08-10 Also: - Removed editor-specific data/syntax/*/README files. - Load syntax highlighting in vim using ~/.vim/ftdetect/*.vim files insted of ~/.vim/filetype.vim. The new method can be easily undone without breaking other custom filetypes. ---[v2.11.140]--- * data/syntax: added gtksourceview support -- Pablo Lopez Rios, 2012-08-09 This covers: - ESDF files (i.e., CASINO and CASTEP input files) - CASINO dot-data files (correlation.data, expot.data, etc) - STARCH architecture files (linuxpc-gcc.arch, etc) - CASL files (i.e., parameters.casl) Instructions to use these syntax files with gtksourceview 2.0 and 3.0 (as used by, e.g., the default GNOME editor 'gedit') are given in the README file under data/syntax/gtksourceview . ---[v2.11.139]--- * Added a utility input_kw_conv to convert between the "new" and "standard" keyword sets. -- Neil Drummond, 2012-08-07 Removed unused parameter from varmin_linjas.f90. ---[v2.11.138]--- * runqmc: fix call to errstopd without directory argument -- Pablo Lopez Rios, 2012-08-04 * monte_carlo: modified USE_GJASTROW default -- Pablo Lopez Rios, 2012-08-04 The default value of USE_GJASTROW is now: - if a JASTROW block is found in parameters.casl, USE_GJASTROW=T - if a JASTROW block is found in correlation.data and not in parameters.casl, USE_GJASTROW=F - if none are found, USE_GJASTROW=T This makes the explicit use of USE_GJASTROW unnecessary. * gjastrow: rewritten e-e-n evaluation routine for speed and added aderivs -- Pablo Lopez Rios, 2012-08-04 ---[v2.11.135]--- * Updated version number of manual for summer school in 2012. -- Neil Drummond, 2012-07-26 * Yet another change to the memory requirements for the Lancaster HEC. -- Neil Drummond, 2012-07-26 (Effectively) removed upper limit on wall-time for the Lancaster HEC. ---[v2.11.133]--- * Line "Stored VMC energy..." in emin.f90 was longer than 80 characters. Used wordwrap instead of wout. -- Neil Drummond, 2012-07-26 Updated dependencies in Makefile. ---[v2.11.132]--- * varmin_linjas: integrated into scratch-space system, added gjastrow support -- Pablo Lopez Rios, 2012-07-26 List of changes: - Rewired varmin_linjas module to make use of common functionality used by other optimization methods, and removed most of the varmin_linjas-specific routines. - Added interface between varmin_linjas and gjastrow. - Tidied main minimization loop of varmin_linjas. - Use labelled_list to print parameters in varmin_linjas. - Removed unused emin_* arguments in get_linear_basis_pjastrow. - Added integer-overflow checks in first set of allocations in varmin_linjas (NB, don't expect varmin_linjas to work on >~ 350 parameters). - Ability to disable rescaling/limiting of parameters in get_params. - Updated Makefile (was already obsolete). ---[v2.11.131]--- * arch: use qsub -r n on Darwin to stop automatic resubmissions -- Pablo Lopez Rios, 2012-07-20 As suggested by NDD. ---[v2.11.130]--- * slater: fixed typo in initialization -- Jonathan Lloyd-Williams, 2012-07-19 ---[v2.11.129]--- * Modified casino.el to allow syntax highlighting for CASL files with emacs. -- Neil Drummond, 2012-07-16 ---[v2.11.128]--- * Fixed text-wrapping problem in abinit_to_casino_pp.f90 (problem reported by Tim Mueller). Allowed lmax<2, since CASINO now allows this. Tidied abinit_to_casino_pp.f90. -- Neil Drummond, 2012-07-15 ---[v2.11.127]--- * Moved following arch files to arch/NO_LONGER_EXISTS : linuxpc-intel-parallel.imperial-cmth-mkl.arch linuxpc-intel-pbs-parallel.cx1.hpc.ic.arch Added the following new arch files (for Tom Poole): linuxpc-intel-parallel.imperial-cmth.arch linuxpc-intel-pbs-parallel.imperial.cx1.arch -- Mike Towler, 2012-07-13 ---[v2.11.126]--- * gjastrow: moved 'print_determined' from internal flag to CASL option -- Pablo Lopez Rios, 2012-07-13 A boolean keyword 'Print determined' directly inside the main 'JASTROW' block in parameters.casl can now be used to specify whether determined parameters in the Jastrow factor should be printed out to the output file and CASL structure. By default this is F. * emin: remove "emin_auto_varmin" funcionality for now -- Pablo Lopez Rios, 2012-07-13 ---[v2.11.124]--- * gbasis: fixed problem with default rules under some circumstances -- Pablo Lopez Rios, 2012-07-09 ---[v2.11.123]--- * The CRYSTAL09 --> CASINO converter was restricted in the extent to which it could use Gaussian f functions, since the vector containing the f function contraction coefficients was not documented in the API (having been added later). I've now figured out where the data is located in the CRYSTAL output, and implemented a fix for this in the converter. -- Mike Towler, 2012-07-06 ---[v2.11.122]--- * Got rid of some unnecessary large files in the examples directory. -- Neil Drummond, 2012-07-06 ---[v2.11.121]--- * Added new keywords OPT_GEMINAL, VMC_SAMPLING, VMC_OPTIMUM_E0, and VMC_OPTIMUM_EW to examples/generic/input_file_full, and OPT_GEMINAL to the manual. -- Mike Towler, 2012-07-05 ---[v2.11.120]--- * geminal: multi-geminal implementation. -- Pascal Bugnion, 2012-07-05 Large-scale re-working of the geminal module, with implementation of a multi-geminal wavefunction. Changes: - GEMINAL.F90 - Various changes one might expect when moving from a single- to a multi-geminal wave function: adding outer loops over the geminals etc. - Removal of the G*dphi, G*d2phi, dphi*G and d2phi*G arrays and associated methods. The pre-calculation of these provided essentially no speed gain at a large cost in memory. Everything can be done through the G*phi and phi*G arrays. (See code for details). - The way geminals are summed is similar to the way multi-dets are summed. ---[v2.11.119]--- * Cray compiler on Jaguar was miscompiling branch_and_redist_send and branch_and_redist_sendrecv in dmc.f90. A minor alteration to the legitimate code cured this. -- Mike Towler, 2012-07-05 ---[v2.11.118]--- * Minor adjustments to documentation following removal of Jaguar pathscale support. -- Mike Towler, 2012-07-03 ---[v2.11.117]--- * Made autotest complain if the out file is incomplete. -- Neil Drummond, 2012-07-03 ---[v2.11.116]--- * Removed support for pathscale compiler on Jaguar (since Cray no longer support it). -- Mike Towler, 2012-07-03 ---[v2.11.115]--- * Sped up orbital evaluation in sdw.f90 by reducing the number of trig functions to evaluate. Allowed the magnetization vector to be q=0. -- Neil Drummond, 2012-07-03 ---[v2.11.114]--- * exmol.f90: Implemented p-type orbital. -- Jonathan Lloyd-Williams, 2012-07-03 ---[v2.11.113]--- * monte_carlo: do not disable Jastrow factor in first VMC if using EMIN -- Pablo Lopez Rios, 2012-07-03 * gjastrow: fix for unallocated zion in Wigner crystals -- Pablo Lopez Rios, 2012-07-03 * monte_carlo: default opt_noctf_cycles=0 for all opt_methods -- Pablo Lopez Rios, 2012-07-03 The emin default of opt_noctf_cycles = opt_cycles/2 was useful in the original implementation of emin. Now it appears not only to be unneeded, but also to waste cycles while not optimizing cut-offs. The feature is obscure enough that users of any level of expertise are likely unaware of it and probably interpret the final emin cycles as a signal of convergence. The ability to fix cutoffs for a given number of cycles remains available via explicitly setting opt_noctf_cycles in the input file. ---[v2.11.110]--- * Fixed typo in definition of self term for 2D Ewald interaction, pointed out by James Shepherd. Some tidying of the manual. -- Neil Drummond, 2012-07-03 ---[v2.11.109]--- * If the gamess2qmc tool was used for an all-electron GAMESS calculation, the number of electrons wasn't passed to the resulting gwfn.data file due to a different wording in the output for the two cases. Fixed. [Thanks to Tom Poole for pointing this out]. -- Mike Towler, 2012-07-03 ---[v2.11.108]--- * Fixed serious bug in do_orbmap in bwfdet.f90 affecting spin-polarized systems with multiple k points. Problem encountered by Tim Mueller. -- Neil Drummond, 2012-06-15 ---[v2.11.107]--- * Fixed orbmap problem in pwfdet.f90, encountered by Tim Mueller. -- Neil Drummond, 2012-06-14 ---[v2.11.106]--- * Adjusted soft zero/hard zero tolerances in the FPE handler in slater.f90. -- Mike Towler, 2012-06-13 This fixes the following error reported by Ken Jordan with a Gaussian basis set 21-molecule H2O cluster:: ERROR : MOVE_CONFIG Floating-point exception reported when calculating old drift vector. Don't know what to do, so stopping. Please file a bug report. ---[v2.11.105]--- * Minor change to descriptive blurb for NEWRUN keyword. -- Mike Towler, 2012-06-10 ---[v2.11.104]--- * arch: fix autodetection of gcc 4.3 -- Pablo Lopez Rios, 2012-06-10 * arch_info.sh: fixed typo which potentially affects SHM test -- Pablo Lopez Rios, 2012-06-10 * gjastrow: fixed typo causing crashes in HEGs -- Pablo Lopez Rios, 2012-06-10 * Replaced exp with exp_protect in poly_orb in gaussians.f90 to avoid a numerical problem with the Gaussian cusp correction. Little bit of tidying suggested by NAG. -- Neil Drummond, 2012-06-10 ---[v2.11.100]--- * arch: added CASINO_ARCH linuxpc-ifort-pbs-parallel.darwin3 -- Pablo Lopez Rios, 2012-06-09 Also updated machine/darwin.arch to agree with reality. * install: fixed minor glitch in casinoarch function -- Pablo Lopez Rios, 2012-06-09 ---[v2.11.98]--- * Added error trap for ALIMIT<=0. -- Neil Drummond, 2012-06-08 ---[v2.11.97]--- * Fixed typo in previous. -- Mike Towler, 2012-06-05 ---[v2.11.96]--- * Update to description of SDWs in the manual. -- Neil Drummond, 2012-06-05 Some general tidying of the manual. ---[v2.11.95]--- * gjastrow: added internal flag to allow failed constraints -- Pablo Lopez Rios, 2012-06-05 * gbasis: added internal flag to bypass non-zero parameter maps -- Pablo Lopez Rios, 2012-06-05 * gjastrow: print out params per channel to output file -- Pablo Lopez Rios, 2012-06-05 * special_wavefun: added atom_basis_type='h2' -- Pablo Lopez Rios, 2012-06-05 This is a wave function for the H2 molecule where each orbital is the sum over atoms of a parameter-less exponential centred at each atom. * gjastrow: modified effect of "Waive e-* cusp" -- Pablo Lopez Rios, 2012-06-05 "Waive e-* cusp" now causes no coalesce conditions to be applied, instead of applying constraints for cusplessness (or, more in general, for well-behavedness of the kinetic energy at coalesce points). * runqmc: fix minor function argument issue in error message -- Pablo Lopez Rios, 2012-06-05 * gbasis: prevent determined parameter output during optimization too -- Pablo Lopez Rios, 2012-06-05 * autotest: added h_exact -- Pablo Lopez Rios, 2012-06-05 Autotest examples where the system is a Hydrogen atom where the proton and the electron are treated as quantum particles, using the wave function Psi_T = Phi_0 + a Psi_1 , or similar forms, where Phi_0 is the exact ground-state orbital and Psi_1 is a rather poor orbital. This example demonstrates emin's ability to optimize linear parameters exactly in one go, as well as detect problems in VMC and emin calculations where the VMC variance is (nearly) zero. * emin: bugfixes -- Pablo Lopez Rios, 2012-06-05 This includes: - Fixed bug in handling of linear parameters, introduced during my adaptation of JRT's original (correct) modifications to emin that landed in CASINO v2.6. Now emin is again capable of optimizing linear parameters exactly in one go, as it's supposed to. - Removed code specific to the absence of non-linear parameters since it is likely to make optimization worse once close to the minimum. - Fixed bug in matrix manipulation where x=1 was being flagged as a failed search (x=0 is a failed search). - Made the inability to invert S and to obtain valid eigenvectors non-fatal errors - Fixed a couple of crashes in emin and vmc when using exact wave functions. ---[v2.11.86]--- * Upgraded linuxpc-pgf-pbs-parallel.jaguarpf.arch file for PGI compiler on Jaguar such that version 12.4 of the compiler is used by default. -- Mike Towler, 2012-05-31 Versions 12.1 and 12.2 versions of the PGI compiler will refuse to compile CASINO because of an acknowledged com