mrchemsoft / mrchem Goto Github PK
View Code? Open in Web Editor NEWMultiResolution Chemistry
License: GNU Lesser General Public License v3.0
MultiResolution Chemistry
License: GNU Lesser General Public License v3.0
And still unrelated, but probably relevant. The ResponseCalculations
object is quite confusing: it just wraps a std::vector<ResponseCalculation>
and I think that is unnecessary. It should undergo the same makeover OrbitalVector
got over the summer.
To summarize, the final implementation for calcLinearResponseProerties
should just loop over the response calculations, dispatch the respective perturbed orbitals and property gradients to the right compute
methods and store the results where appropriate.
Originally posted by @robertodr in #161
Add input driven finite electric field for calculation of e.g. electric polarizability through finite differences
The MRChem input requires an explicit variable to use a spin-sparated functional. For open-shell systems, a separated functional should be the default, whereas the spin-restricted one might be activated in special circumstances (e.g. test against NIST results).
Default values in input handling shall be changed.
We need a completely autonomous initial guess solver that works for arbitrary molecules and atom types (at the very least up to second row elements)
Fails with Intel 2016b (16.0.3 20160415), works with 2015b (15.0.3 20150407)
It seems to me we need a bit of functionality to handle complex functions more smoothly than we do now. As far as I can see QMFunctions
now have a real and an imaginary part, which are two FunctionTree<3>
objects. All the complex arithmetics is handled by the routines in qmfunctions.cpp
, but at present only for the Orbital
class.
I need similar functionality for a Density
class now, because response densities can be complex-valued. Duplicating functionality is not a good idea so I can see two options.
Easy one: move low-level parts of the Orbital
routines to QMFunction
routines and then let the corresponding Orbital
and Density
classes (or standalone routines) handle the metadata on top.
Difficult one (for me at least): allow MRCPP to handle complex functions the way QMFunction
does now. QMFunction
can then have such an object instead of real and imag.
Comment: for this to work smoothly all objects must be created by the derived class routines and the QMFunction
routines will access them as pass-by-reference. Unless for some fundamental reason this does not work.
Example for the multiplication of two orbitals:
This routine
Orbital multiply(Orbital inp_a, Orbital inp_b, double prec)
will: create the output object, handle the metadata, do sanity checks (if necessary) and then call the following routine:
qmfunction::multiply(prec, out, 1.0, inp_a, inp_a.conjugate(), inp_b, inp_b.conjugate())
which will handle all the complex-valued arithmetics.
Stops with:
mrchem/src/mrcpp/mwanalytic/Polynomial.h(19): catastrophic error: cannot open source file "Eigen/Core"
#include <Eigen/Core>
MRCPP should now be available using find_package(MRCPP)
First we need to wait for getkw update.
I issued the following commands:
$ git clone [email protected]:MRChemSoft/mrchem.git
$ cd mrchem
$ ./setup --cc=icc --cxx=icpc
$ cd build
$ make
The compilation stops with
[ 11%] Building CXX object C++/CMakeFiles/getkw.dir/Getkw.cpp.o
/home/raul/builds/mrchem/external/libgetkw/C++/Getkw.cpp(87): error: no operator "<<" matches these operands
operand types are: std::ostream << std::ostream
cout << repr(cout) << endl;
(Full output here.)
I'm using Intel Parallel Studio 17.0.2. What could be the reason for the compilation error?
Update manual to support features of v1.0
See #18.
The exact_exchange
factor (e.g. 20% for B3LYP) is apparently not picked up, so we always get full HF exchange. Could also be that the corresponding 80% factor is not passed correctly to XCFun. In any case we get way too much exchange in hybrid calculations.
Is there any reason we do not use "#pragma once", instead of the complicated
#ifndef XXX_H
#define XXX_H
#endif XXX_H
If there are no objections, I can replace all those.
The current MPI version of kinetic energy matrix is not optimal: each MPI process need to compute the derivatives for all orbitals. A better approach would be that each MPI computes its own derivatives, and then only the derivatives are sent. No need to send orbitals, since these are only used to make the derivatives.
This does not fit in the way the routine is called now, so a new routine would be required.
I think we should differentiate between unit and integration tests. As we expand functionality the integration tests will become more and longer, and I'm not sure we should run them all the time. I recently created a Finite Differences (FD) test and a response test. They are both with Li (not exactly a large system...), and the response test does not even run the SCF (it keeps the starting guess as the GS). Still they take 6 min each on my mac.
The DensityProjector sometimes crashes, sometimes hangs and sometimes works in MPI.
Some of the MPI features were not straightforwardly incorporated in the new structure
E.g. through https://github.com/MolSSI/QCElemental, but this requires new C++ interface
the function calcPotential
in XCFunctional is specific to the energy calculations when potentials are needed.
I'm now creating the class for the Hessian, in parallel to XCPotential
and to keep the current design I should also add a calcHessian
function to XCFunctional
. Would it not be better to have such functions in their respective classes, reducing the amount of code XCFunctional
is dealing with?
Ref. #173
Running MRChem through cppcheck 1.80, the code gives out the following warnings, most of which appear to be justified.
$ cppcheck --enable=warning src/
Checking src/mrchem/MREnv.cpp ...
Checking src/mrchem/MREnv.cpp: EIGEN_USE_BLAS...
Checking src/mrchem/MREnv.cpp: HAVE_MPI...
1/86 files checked 1% done
Checking src/mrchem/SCFDriver.cpp ...
2/86 files checked 2% done
Checking src/mrchem/chemistry/Molecule.cpp ...
3/86 files checked 3% done
Checking src/mrchem/chemistry/PeriodicTable.cpp ...
4/86 files checked 4% done
Checking src/mrchem/initial_guess/AOBasis.cpp ...
[src/mrchem/initial_guess/AOBasis.h:6]: (warning) The class 'AOBasis' has 'copy constructor' but lack of 'operator='.
5/86 files checked 5% done
Checking src/mrchem/initial_guess/AOContraction.cpp ...
6/86 files checked 6% done
Checking src/mrchem/initial_guess/Intgrl.cpp ...
7/86 files checked 8% done
Checking src/mrchem/initial_guess/OrbitalExp.cpp ...
8/86 files checked 9% done
Checking src/mrchem/mrchem.cpp ...
9/86 files checked 10% done
Checking src/mrchem/qmfunctions/Density.cpp ...
[src/mrchem/qmfunctions/Density.cpp:25]: (warning) Member variable 'Density::shMem' is not initialized in the constructor.
[src/mrchem/qmfunctions/Density.cpp:34]: (warning) Member variable 'Density::shMem' is not initialized in the constructor.
[src/mrchem/qmfunctions/Density.h:8]: (warning) The class 'Density' has 'copy constructor' but lack of 'operator='.
Checking src/mrchem/qmfunctions/Density.cpp: HAVE_MPI...
10/86 files checked 11% done
Checking src/mrchem/qmfunctions/DensityProjector.cpp ...
[src/mrchem/qmfunctions/QMFunction.h:12]: (warning) Member variable 'QMFunction::re' is not assigned a value in 'QMFunction::operator='.
[src/mrchem/qmfunctions/QMFunction.h:12]: (warning) Member variable 'QMFunction::im' is not assigned a value in 'QMFunction::operator='.
[src/mrchem/qmfunctions/Orbital.h:13]: (warning) Member variable 'Orbital::spin' is not assigned a value in 'Orbital::operator='.
[src/mrchem/qmfunctions/Orbital.h:13]: (warning) Member variable 'Orbital::occupancy' is not assigned a value in 'Orbital::operator='.
[src/mrchem/qmfunctions/Orbital.h:13]: (warning) Member variable 'Orbital::error' is not assigned a value in 'Orbital::operator='.
Checking src/mrchem/qmfunctions/DensityProjector.cpp: HAVE_MPI...
11/86 files checked 12% done
Checking src/mrchem/qmfunctions/NuclearFunction.cpp ...
[src/mrchem/qmfunctions/NuclearFunction.h:10]: (warning) The class 'NuclearFunction' has 'operator=' but lack of 'copy constructor'.
12/86 files checked 13% done
Checking src/mrchem/qmfunctions/Orbital.cpp ...
Checking src/mrchem/qmfunctions/Orbital.cpp: HAVE_MPI...
13/86 files checked 15% done
Checking src/mrchem/qmfunctions/OrbitalAdder.cpp ...
Checking src/mrchem/qmfunctions/OrbitalAdder.cpp: HAVE_MPI...
14/86 files checked 16% done
Checking src/mrchem/qmfunctions/OrbitalMultiplier.cpp ...
Checking src/mrchem/qmfunctions/OrbitalMultiplier.cpp: HAVE_MPI...
15/86 files checked 17% done
Checking src/mrchem/qmfunctions/OrbitalProjector.cpp ...
[src/mrchem/qmfunctions/OrbitalProjector.cpp:143]: (warning) Possible null pointer dereference: gtOrb
Checking src/mrchem/qmfunctions/OrbitalProjector.cpp: HAVE_MPI...
16/86 files checked 18% done
Checking src/mrchem/qmfunctions/OrbitalVector.cpp ...
Checking src/mrchem/qmfunctions/OrbitalVector.cpp: HAVE_MPI...
17/86 files checked 19% done
Checking src/mrchem/qmfunctions/QMFunction.cpp ...
18/86 files checked 20% done
Checking src/mrchem/qmoperators/CoulombPotential.cpp ...
Checking src/mrchem/qmoperators/CoulombPotential.cpp: HAVE_MPI...
19/86 files checked 22% done
Checking src/mrchem/qmoperators/DeltaOperator.cpp ...
20/86 files checked 23% done
Checking src/mrchem/qmoperators/ExchangePotential.cpp ...
[src/mrchem/qmoperators/ExchangePotential.cpp:347] -> [src/mrchem/qmoperators/ExchangePotential.cpp:340]: (warning) Either the condition 'phi_iii!=0' is redundant or there is possible null pointer dereference: phi_iii.
[src/mrchem/qmoperators/ExchangePotential.cpp:342] -> [src/mrchem/qmoperators/ExchangePotential.cpp:340]: (warning) Either the condition 'V_ii!=0' is redundant or there is possible null pointer dereference: V_ii.
[src/mrchem/qmoperators/ExchangePotential.cpp:347] -> [src/mrchem/qmoperators/ExchangePotential.cpp:346]: (warning) Either the condition 'phi_iii!=0' is redundant or there is possible null pointer dereference: phi_iii.
[src/mrchem/qmoperators/ExchangePotential.cpp:407] -> [src/mrchem/qmoperators/ExchangePotential.cpp:393]: (warning) Either the condition 'phi_jij!=0' is redundant or there is possible null pointer dereference: phi_jij.
[src/mrchem/qmoperators/ExchangePotential.cpp:402] -> [src/mrchem/qmoperators/ExchangePotential.cpp:393]: (warning) Either the condition 'V_ij!=0' is redundant or there is possible null pointer dereference: V_ij.
[src/mrchem/qmoperators/ExchangePotential.cpp:412] -> [src/mrchem/qmoperators/ExchangePotential.cpp:399]: (warning) Either the condition 'phi_iij!=0' is redundant or there is possible null pointer dereference: phi_iij.
[src/mrchem/qmoperators/ExchangePotential.cpp:402] -> [src/mrchem/qmoperators/ExchangePotential.cpp:399]: (warning) Either the condition 'V_ij!=0' is redundant or there is possible null pointer dereference: V_ij.
[src/mrchem/qmoperators/ExchangePotential.cpp:407] -> [src/mrchem/qmoperators/ExchangePotential.cpp:406]: (warning) Either the condition 'phi_jij!=0' is redundant or there is possible null pointer dereference: phi_jij.
[src/mrchem/qmoperators/ExchangePotential.cpp:412] -> [src/mrchem/qmoperators/ExchangePotential.cpp:411]: (warning) Either the condition 'phi_iij!=0' is redundant or there is possible null pointer dereference: phi_iij.
[src/mrchem/qmoperators/ExchangePotential.cpp:473] -> [src/mrchem/qmoperators/ExchangePotential.cpp:457]: (warning) Either the condition 'phi_jij!=0' is redundant or there is possible null pointer dereference: phi_jij.
[src/mrchem/qmoperators/ExchangePotential.cpp:468] -> [src/mrchem/qmoperators/ExchangePotential.cpp:457]: (warning) Either the condition 'V_ij!=0' is redundant or there is possible null pointer dereference: V_ij.
[src/mrchem/qmoperators/ExchangePotential.cpp:466] -> [src/mrchem/qmoperators/ExchangePotential.cpp:464]: (warning) Either the condition 'phi_iij!=0' is redundant or there is possible null pointer dereference: phi_iij.
[src/mrchem/qmoperators/ExchangePotential.cpp:468] -> [src/mrchem/qmoperators/ExchangePotential.cpp:464]: (warning) Either the condition 'V_ij!=0' is redundant or there is possible null pointer dereference: V_ij.
[src/mrchem/qmoperators/ExchangePotential.cpp:473] -> [src/mrchem/qmoperators/ExchangePotential.cpp:472]: (warning) Either the condition 'phi_jij!=0' is redundant or there is possible null pointer dereference: phi_jij.
[src/mrchem/qmoperators/ExchangePotential.cpp:523] -> [src/mrchem/qmoperators/ExchangePotential.cpp:517]: (warning) Either the condition 'phi_jij!=0' is redundant or there is possible null pointer dereference: phi_jij.
[src/mrchem/qmoperators/ExchangePotential.cpp:531] -> [src/mrchem/qmoperators/ExchangePotential.cpp:517]: (warning) Either the condition 'V_ij!=0' is redundant or there is possible null pointer dereference: V_ij.
[src/mrchem/qmoperators/ExchangePotential.cpp:523] -> [src/mrchem/qmoperators/ExchangePotential.cpp:522]: (warning) Either the condition 'phi_jij!=0' is redundant or there is possible null pointer dereference: phi_jij.
[src/mrchem/qmoperators/ExchangePotential.cpp:531] -> [src/mrchem/qmoperators/ExchangePotential.cpp:528]: (warning) Either the condition 'V_ij!=0' is redundant or there is possible null pointer dereference: V_ij.
Checking src/mrchem/qmoperators/ExchangePotential.cpp: HAVE_MPI...
21/86 files checked 24% done
Checking src/mrchem/qmoperators/FockOperator.cpp ...
Checking src/mrchem/qmoperators/FockOperator.cpp: HAVE_MPI...
22/86 files checked 25% done
Checking src/mrchem/qmoperators/IdentityOperator.cpp ...
Checking src/mrchem/qmoperators/IdentityOperator.cpp: HAVE_MPI...
23/86 files checked 26% done
Checking src/mrchem/qmoperators/KineticOperator.cpp ...
24/86 files checked 27% done
Checking src/mrchem/qmoperators/QMDerivative.cpp ...
25/86 files checked 29% done
Checking src/mrchem/qmoperators/QMOperator.cpp ...
26/86 files checked 30% done
Checking src/mrchem/qmoperators/QMOperatorExp.cpp ...
Checking src/mrchem/qmoperators/QMOperatorExp.cpp: HAVE_MPI...
27/86 files checked 31% done
Checking src/mrchem/qmoperators/QMPotential.cpp ...
28/86 files checked 32% done
Checking src/mrchem/qmoperators/SpinOperator.cpp ...
29/86 files checked 33% done
Checking src/mrchem/qmoperators/XCFunctional.cpp ...
30/86 files checked 34% done
Checking src/mrchem/qmoperators/XCOperator.cpp ...
31/86 files checked 36% done
Checking src/mrchem/qmoperators/XCPotential.cpp ...
32/86 files checked 37% done
Checking src/mrchem/scf_solver/Accelerator.cpp ...
Checking src/mrchem/scf_solver/Accelerator.cpp: HAVE_MPI...
33/86 files checked 38% done
Checking src/mrchem/scf_solver/EnergyOptimizer.cpp ...
Checking src/mrchem/scf_solver/EnergyOptimizer.cpp: HAVE_MPI...
34/86 files checked 39% done
Checking src/mrchem/scf_solver/GroundStateSolver.cpp ...
Checking src/mrchem/scf_solver/GroundStateSolver.cpp: HAVE_MPI...
35/86 files checked 40% done
Checking src/mrchem/scf_solver/HelmholtzOperatorSet.cpp ...
Checking src/mrchem/scf_solver/HelmholtzOperatorSet.cpp: HAVE_MPI...
36/86 files checked 41% done
Checking src/mrchem/scf_solver/KAIN.cpp ...
Checking src/mrchem/scf_solver/KAIN.cpp: HAVE_MPI...
37/86 files checked 43% done
Checking src/mrchem/scf_solver/LinearResponseSolver.cpp ...
38/86 files checked 44% done
Checking src/mrchem/scf_solver/NonlinearMaximizer.cpp ...
39/86 files checked 45% done
Checking src/mrchem/scf_solver/OrbitalOptimizer.cpp ...
Checking src/mrchem/scf_solver/OrbitalOptimizer.cpp: HAVE_MPI...
40/86 files checked 46% done
Checking src/mrchem/scf_solver/SCF.cpp ...
41/86 files checked 47% done
Checking src/mrcpp/BoundingBox.cpp ...
[src/mrcpp/NodeIndex.h:31]: (warning) Logical disjunction always evaluates to true: d >= 0 || d < 1.
[src/mrcpp/NodeIndex.h:31]: (warning) Logical disjunction always evaluates to true: d >= 0 || d < 2.
[src/mrcpp/NodeIndex.h:31]: (warning) Logical disjunction always evaluates to true: d >= 0 || d < 3.
42/86 files checked 48% done
Checking src/mrcpp/HilbertPath.cpp ...
[src/mrcpp/HilbertPath.h:4]: (warning) The class 'HilbertPath < 1 >' has 'copy constructor' but lack of 'operator='.
[src/mrcpp/HilbertPath.h:4]: (warning) The class 'HilbertPath < 2 >' has 'copy constructor' but lack of 'operator='.
[src/mrcpp/HilbertPath.h:4]: (warning) The class 'HilbertPath < 3 >' has 'copy constructor' but lack of 'operator='.
43/86 files checked 50% done
Checking src/mrcpp/MathUtils.cpp ...
Checking src/mrcpp/MathUtils.cpp: HAVE_MPI...
Checking src/mrcpp/MathUtils.cpp: HAVE_OPENMP...
Checking src/mrcpp/MathUtils.cpp: __INTEL_COMPILER...
44/86 files checked 51% done
Checking src/mrcpp/NodeBox.cpp ...
[src/mrcpp/NodeBox.h:17]: (warning) Member variable 'NodeBox::nOccupied' is not initialized in the constructor.
[src/mrcpp/NodeBox.h:17]: (warning) Member variable 'NodeBox::nodes' is not initialized in the constructor.
45/86 files checked 52% done
Checking src/mrcpp/OperatorStatistics.cpp ...
Checking src/mrcpp/OperatorStatistics.cpp: HAVE_MPI...
Checking src/mrcpp/OperatorStatistics.cpp: HAVE_OPENMP...
46/86 files checked 53% done
Checking src/mrcpp/Plot.cpp ...
[src/mrcpp/Plot.cpp:479]: (warning) Logical disjunction always evaluates to true: p > 1.e-4 || p < 1.e+2.
47/86 files checked 54% done
Checking src/mrcpp/RepresentableFunction.cpp ...
[src/mrcpp/RepresentableFunction.cpp:58]: (warning) Member variable 'RepresentableFunction::bounded' is not assigned a value in 'RepresentableFunction::operator='.
[src/mrcpp/RepresentableFunction.cpp:58]: (warning) Member variable 'RepresentableFunction::A' is not assigned a value in 'RepresentableFunction::operator='.
[src/mrcpp/RepresentableFunction.cpp:58]: (warning) Member variable 'RepresentableFunction::B' is not assigned a value in 'RepresentableFunction::operator='.
48/86 files checked 55% done
Checking src/mrcpp/TelePrompter.cpp ...
[src/mrcpp/Timer.h:9]: (warning) The class 'Timer' has 'operator=' but lack of 'copy constructor'.
Checking src/mrcpp/TelePrompter.cpp: HAVE_MPI...
Checking src/mrcpp/TelePrompter.cpp: HAVE_OPENMP...
49/86 files checked 56% done
Checking src/mrcpp/mwanalytic/GaussExp.cpp ...
50/86 files checked 58% done
Checking src/mrcpp/mwanalytic/GaussFunc.cpp ...
51/86 files checked 59% done
Checking src/mrcpp/mwanalytic/GaussPoly.cpp ...
[src/mrcpp/mwanalytic/GaussPoly.h:22]: (warning) The class 'GaussPoly' has 'copy constructor' but lack of 'operator='.
52/86 files checked 60% done
Checking src/mrcpp/mwanalytic/Gaussian.cpp ...
53/86 files checked 61% done
Checking src/mrcpp/mwanalytic/LegendrePoly.cpp ...
54/86 files checked 62% done
Checking src/mrcpp/mwanalytic/Polynomial.cpp ...
55/86 files checked 63% done
Checking src/mrcpp/mwbuilders/ConvolutionCalculator.cpp ...
56/86 files checked 65% done
Checking src/mrcpp/mwbuilders/DerivativeCalculator.cpp ...
57/86 files checked 66% done
Checking src/mrcpp/mwbuilders/MWFDCalculator.cpp ...
58/86 files checked 67% done
Checking src/mrcpp/mwbuilders/ProjectionCalculator.cpp ...
59/86 files checked 68% done
Checking src/mrcpp/mwbuilders/TreeBuilder.cpp ...
60/86 files checked 69% done
Checking src/mrcpp/mwcore/CrossCorrelation.cpp ...
61/86 files checked 70% done
Checking src/mrcpp/mwcore/CrossCorrelationCache.cpp ...
[src/mrcpp/mwcore/CrossCorrelationCache.h:36]: (warning) Member variable 'CrossCorrelationCache::type' is not assigned a value in 'CrossCorrelationCache::operator='.
[src/mrcpp/mwcore/ObjectCache.h:112]: (warning) Member variable 'ObjectCache < CrossCorrelation >::highWaterMark' is not initialized in the constructor.
[src/mrcpp/mwcore/ObjectCache.h:112]: (warning) Member variable 'ObjectCache < CrossCorrelation >::memLoaded' is not initialized in the constructor.
[src/mrcpp/mwcore/ObjectCache.h:113]: (warning) Member variable 'ObjectCache < CrossCorrelation >::highWaterMark' is not assigned a value in 'ObjectCache < CrossCorrelation >::operator='.
[src/mrcpp/mwcore/ObjectCache.h:113]: (warning) Member variable 'ObjectCache < CrossCorrelation >::memLoaded' is not assigned a value in 'ObjectCache < CrossCorrelation >::operator='.
[src/mrcpp/mwcore/CrossCorrelationCache.h:13]: (warning) The class 'CrossCorrelationCache' has 'operator=' but lack of 'copy constructor'.
[src/mrcpp/mwcore/ObjectCache.h:23]: (warning) The class 'ObjectCache < CrossCorrelation >' has 'operator=' but lack of 'copy constructor'.
Checking src/mrcpp/mwcore/CrossCorrelationCache.cpp: HAVE_OPENMP...
62/86 files checked 72% done
Checking src/mrcpp/mwcore/FilterCache.cpp ...
[src/mrcpp/mwcore/FilterCache.h:61]: (warning) Member variable 'FilterCache::type' is not assigned a value in 'FilterCache::operator='.
[src/mrcpp/mwcore/ObjectCache.h:112]: (warning) Member variable 'ObjectCache < MWFilter >::highWaterMark' is not initialized in the constructor.
[src/mrcpp/mwcore/ObjectCache.h:112]: (warning) Member variable 'ObjectCache < MWFilter >::memLoaded' is not initialized in the constructor.
[src/mrcpp/mwcore/ObjectCache.h:113]: (warning) Member variable 'ObjectCache < MWFilter >::highWaterMark' is not assigned a value in 'ObjectCache < MWFilter >::operator='.
[src/mrcpp/mwcore/ObjectCache.h:113]: (warning) Member variable 'ObjectCache < MWFilter >::memLoaded' is not assigned a value in 'ObjectCache < MWFilter >::operator='.
[src/mrcpp/mwcore/FilterCache.h:41]: (warning) The class 'FilterCache' has 'operator=' but lack of 'copy constructor'.
[src/mrcpp/mwcore/ObjectCache.h:23]: (warning) The class 'ObjectCache < MWFilter >' has 'operator=' but lack of 'copy constructor'.
Checking src/mrcpp/mwcore/FilterCache.cpp: HAVE_OPENMP...
63/86 files checked 73% done
Checking src/mrcpp/mwcore/GaussQuadrature.cpp ...
64/86 files checked 74% done
Checking src/mrcpp/mwcore/InterpolatingBasis.cpp ...
[src/mrcpp/mwcore/QuadratureCache.h:39]: (warning) Member variable 'QuadratureCache::A' is not assigned a value in 'QuadratureCache::operator='.
[src/mrcpp/mwcore/QuadratureCache.h:39]: (warning) Member variable 'QuadratureCache::B' is not assigned a value in 'QuadratureCache::operator='.
[src/mrcpp/mwcore/QuadratureCache.h:39]: (warning) Member variable 'QuadratureCache::intervals' is not assigned a value in 'QuadratureCache::operator='.
[src/mrcpp/mwcore/ObjectCache.h:112]: (warning) Member variable 'ObjectCache < GaussQuadrature >::highWaterMark' is not initialized in the constructor.
[src/mrcpp/mwcore/ObjectCache.h:112]: (warning) Member variable 'ObjectCache < GaussQuadrature >::memLoaded' is not initialized in the constructor.
[src/mrcpp/mwcore/ObjectCache.h:113]: (warning) Member variable 'ObjectCache < GaussQuadrature >::highWaterMark' is not assigned a value in 'ObjectCache < GaussQuadrature >::operator='.
[src/mrcpp/mwcore/ObjectCache.h:113]: (warning) Member variable 'ObjectCache < GaussQuadrature >::memLoaded' is not assigned a value in 'ObjectCache < GaussQuadrature >::operator='.
[src/mrcpp/mwcore/ObjectCache.h:23]: (warning) The class 'ObjectCache < GaussQuadrature >' has 'operator=' but lack of 'copy constructor'.
Checking src/mrcpp/mwcore/InterpolatingBasis.cpp: HAVE_OPENMP...
65/86 files checked 75% done
Checking src/mrcpp/mwcore/LegendreBasis.cpp ...
Checking src/mrcpp/mwcore/LegendreBasis.cpp: HAVE_OPENMP...
66/86 files checked 76% done
Checking src/mrcpp/mwcore/MWFilter.cpp ...
67/86 files checked 77% done
Checking src/mrcpp/mwcore/QuadratureCache.cpp ...
Checking src/mrcpp/mwcore/QuadratureCache.cpp: HAVE_OPENMP...
68/86 files checked 79% done
Checking src/mrcpp/mwoperators/ABGVCalculator.cpp ...
69/86 files checked 80% done
Checking src/mrcpp/mwoperators/ConvolutionOperator.cpp ...
70/86 files checked 81% done
Checking src/mrcpp/mwoperators/CrossCorrelationCalculator.cpp ...
71/86 files checked 82% done
Checking src/mrcpp/mwoperators/HelmholtzKernel.cpp ...
72/86 files checked 83% done
Checking src/mrcpp/mwoperators/MWOperator.cpp ...
73/86 files checked 84% done
Checking src/mrcpp/mwoperators/PHCalculator.cpp ...
74/86 files checked 86% done
Checking src/mrcpp/mwoperators/PoissonKernel.cpp ...
75/86 files checked 87% done
Checking src/mrcpp/mwtrees/FunctionNode.cpp ...
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 1 >::nNodes' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 1 >::maxNodesPerChunk' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 1 >::sizeNodeCoeff' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 1 >::coeffStack' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 1 >::maxNodes' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 2 >::nNodes' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 2 >::maxNodesPerChunk' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 2 >::sizeNodeCoeff' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 2 >::coeffStack' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 2 >::maxNodes' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 3 >::nNodes' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 3 >::maxNodesPerChunk' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 3 >::sizeNodeCoeff' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 3 >::coeffStack' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree < 3 >::maxNodes' is not initialized in the constructor.
Checking src/mrcpp/mwtrees/FunctionNode.cpp: HAVE_OPENMP...
76/86 files checked 88% done
Checking src/mrcpp/mwtrees/FunctionTree.cpp ...
Checking src/mrcpp/mwtrees/FunctionTree.cpp: HAVE_OPENMP...
77/86 files checked 89% done
Checking src/mrcpp/mwtrees/MWNode.cpp ...
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree::nNodes' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree::maxNodesPerChunk' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree::sizeNodeCoeff' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree::coeffStack' is not initialized in the constructor.
[src/mrcpp/mwtrees/SerialTree.h:23]: (warning) Member variable 'SerialTree::maxNodes' is not initialized in the constructor.
Checking src/mrcpp/mwtrees/MWNode.cpp: HAVE_OPENMP...
78/86 files checked 90% done
Checking src/mrcpp/mwtrees/MWTree.cpp ...
Checking src/mrcpp/mwtrees/MWTree.cpp: HAVE_OPENMP...
79/86 files checked 91% done
Checking src/mrcpp/mwtrees/OperatorNode.cpp ...
Checking src/mrcpp/mwtrees/OperatorNode.cpp: HAVE_OPENMP...
80/86 files checked 93% done
Checking src/mrcpp/mwtrees/OperatorTree.cpp ...
Checking src/mrcpp/mwtrees/OperatorTree.cpp: HAVE_OPENMP...
81/86 files checked 94% done
Checking src/mrcpp/mwtrees/ProjectedNode.cpp ...
Checking src/mrcpp/mwtrees/ProjectedNode.cpp: HAVE_OPENMP...
82/86 files checked 95% done
Checking src/mrcpp/mwtrees/SerialFunctionTree.cpp ...
Checking src/mrcpp/mwtrees/SerialFunctionTree.cpp: HAVE_OPENMP...
83/86 files checked 96% done
Checking src/mrcpp/mwtrees/SerialOperatorTree.cpp ...
Checking src/mrcpp/mwtrees/SerialOperatorTree.cpp: HAVE_OPENMP...
84/86 files checked 97% done
Checking src/mrcpp/mwtrees/SerialTree.cpp ...
Checking src/mrcpp/mwtrees/SerialTree.cpp: HAVE_OPENMP...
85/86 files checked 98% done
Checking src/mrcpp/parallel.cpp ...
[src/mrcpp/parallel.cpp:27]: (warning) Member variable 'SharedMemory::sh_start_ptr' is not initialized in the constructor.
[src/mrcpp/parallel.cpp:27]: (warning) Member variable 'SharedMemory::sh_max_ptr' is not initialized in the constructor.
[src/mrcpp/parallel.cpp:27]: (warning) Member variable 'SharedMemory::sh_end_ptr' is not initialized in the constructor.
[src/mrcpp/MultiResolutionAnalysis.h:9]: (warning) The class 'MultiResolutionAnalysis' has 'copy constructor' but lack of 'operator='.
Checking src/mrcpp/parallel.cpp: HAVE_MPI...
[src/mrcpp/parallel.cpp:521]: (warning) %d in format string (no. 4) requires 'int' but the argument type is 'double *'.
Checking src/mrcpp/parallel.cpp: HAVE_OPENMP...
86/86 files checked 100% done
For some reason I'm unable to get MRChem to build with a XCFun in Release mode.
Weirdly, the XCFun configure command is
[ 56%] Performing configure step for 'submodule-xcfun'
cd /home/work/mrchem/objdir/external/xcfun && /usr/bin/cmake -DCMAKE_INSTALL_PREFIX=/home/work/mrchem/objdir/external -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib64/ccache/cc -DCMAKE_CXX_COMPILER=/usr/lib64/ccache/c++ -DCMAKE_Fortran_COMPILER=/usr/bin/gfortran "-GUnix Makefiles" /home/work/mrchem/external/xcfun
Re-run cmake no build system arguments
which looks to be correct, but what I see in the build are actually the debug flags, e.g.
[ 10%] Building CXX object src/CMakeFiles/xcfun.dir/evaluators.cpp.o
cd /home/work/mrchem/objdir/external/xcfun/src && /usr/lib64/ccache/c++ -DXC_MAX_ORDER=2 -I/home/work/mrchem/objdir/external/xcfun -I/home/work/mrchem/external/xcfun/src/taylor -I/home/work/mrchem/external/xcfun/src/functionals -I/home/work/mrchem/external/xcfun/include -I/home/work/mrchem/external/xcfun/src -I/home/work/mrchem/objdir/external/xcfun/src -Wall -Wno-unknown-pragmas -Wno-sign-compare -fno-rtti -fno-exceptions -O0 -g3 -DDEBUG -o CMakeFiles/xcfun.dir/evaluators.cpp.o -c /home/work/mrchem/external/xcfun/src/evaluators.cpp
It seems to me that if mrchem.in
is modified, cmake trigges recompilation of the whole code.
From @robertodr in #161 :
Some comments and suggestions, mostly due to the fact that I am not quite that fluent in MRChem. The
D1
/D2
variants are there for ground state and linear response, right? That would mean that for e.g. quadratic you'd have to add aD3
variant, isn't it? Using variadic templates might help handle the code duplication a bit:
template <typename Head, typename... Tail>
class Collection final {
public:
Collection(const Head & h, const Tail&... t) : collection_{h, t...} {}
void print() const {
for (const auto & f: collection_) {
f.print();
}
}
private:
std::array<Head, sizeof...(Tail)+1> collection_;
};
where the type of
Head
andTail
should beOrbital *
in your case. Based on thesizeof...(Tail)+1
(a compile-time constant) you can dispatch all the needed algorithms correctly with not too much hassle (I think!) This is a slightly more verbose solution upon instantiation: you need to give the types of all arguments up front:auto coll = Collection<A, A, A, A>(a1, a2, a3, a4);
There's probably a smarter way to coerce the parameter pack to be of one single type though.
For real this time (I think) :)
Without KAIN the two solutions (MPI and OMP) are identical throughout, but with KAIN they start to diverge slightly from iteration 3 (when KAIN first takes effect). The MPI/KAIN version isn't completely off, but it takes a few more iterations to converge than OMP/KAIN, and the solutions are equal only within the convergence threshold.
Readthedocs automatic build fails with error: "Command killed due to excessive memory consumption".
See https://readthedocs.org/projects/mrchem/builds/6420480/
When an external submodule is modified (e.g. a file in the xcfun library), make
does not trigger the recompilation of the library. With help from @robertodr I managed to trigger the library recompilation, but not the linking, which occurs only if a source of mrchem itself is recompiled.
Can we make mrchem
write by default on an output file instead of STDOUT
?
Currently to read from molecule.inp
and write on molecule.out
i need to do:
mrchem molecule.inp > molecule.out
It would be convenient to obtain the same behavior with:
mrchem molecule
dumping on stdout should still be allowed, but as a (non default) option.
And the docs badge still shows success
The header-only Eigen3 library is necessary to build mrchem, so it could be imported as a git repository like libgetkw and xcfun.
It would be a good idea to follow @robertodr 's suggestion and implement writing files using NumPy formats. Currently we write trees only as binary files which limits their reusability to within a given architecture/compiler and as I lately notice, even to a given build.
I think it's time to promote the new-mrcpp
branch to become the new master
. The current master
has gone stale and we have now caught up with all features in the new one (MPI support is still missing, though).
The only divergent development that has happened on master
is Susi's fixes for boost, blas and eigen, but I'm not sure how this should be incorporated into the new super-build approach: boost is only used by getkw and blas should only be used by eigen, but I guess both must be picked up at mrchem level and passed on?
We should update and maintain our test suite.
All integration tests fail on stallo due to some configuration issue I am not able to solve.
What I have done:
direnv
manually (downloaded the precompiled 386 executable from the website)direnv allow
make test
This is what I get (and it was the same error before points 2-4, which means direnv was uneffective)
(apologies for the not so nice formatting of the pasted error message...)
10: Test command: /global/apps/Python/2.7.3/bin/python /home/luca/programs/mrchem/tests/li/test" "--binary=/home/luca/programs/mrchem/build_hess_dft2/bin" "--work-dir=/home/luca/programs/mrchem/build_hess_dft2/tests/li" "--launch-agent" " " "--verbose" 10: Test timeout computed to be: 1500 10: Traceback (most recent call last): 10: File "/home/luca/programs/mrchem/tests/li/test", line 8, in <module> 10: from runtest import cli, get_filter, run, version_info # isort:skip 10: ImportError: No module named runtest 1/15 Test #10: li ...............................***Failed 0.07 sec
It looks like we have a problem, if the person running MRChem is not the owner of the compiled code. Anders was trying to run some calculations using my MRChem and he gets the following error:
Error: readSMatrix(), line 30: Failed to open file: /home/luca/programs/mrchem/external/mrcpp/share/mwfilters/I_ph_deriv_1.txt
I have double checked that he has permission to read those files.
CH4_010 is doing well, but all my tests for CH4_020 fail (DFT, but probably HF too).
This concerns both the serial and MPI versions.
For the serial version, the last lines printed out are:
Setting up Helmholtz arguments
------------------------------------------------------------
Potential part 3.14100e+01
and the error message:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Command terminated by signal 6
It was tested on the highmem compute-nodes too, so it is not a problem of insufficient memory.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.