37#ifndef MADNESS_CHEM_SCFOPERATORS_H_
38#define MADNESS_CHEM_SCFOPERATORS_H_
50class NuclearCorrelationFactor;
55typedef std::vector<real_function_3d>
vecfuncT;
57template<
typename T, std::
size_t NDIM>
71 std::shared_ptr<MacroTaskQ>
taskq=0;
74 virtual std::string
info()
const = 0;
104template<
typename T, std::
size_t NDIM>
109 using implT = std::shared_ptr<ExchangeImpl>;
133 os <<
"multiworld_row";
136 os <<
"fetch_compute";
139 os <<
"unknown algorithm";
145 std::stringstream
ss;
159 std::string msg=
"unknown Exchange algorithm: "+
alg_string;
173 std::string
info()
const {
return "K";}
225 return inner(bra, this->
operator()(ket));
244template<
typename T, std::
size_t NDIM>
256 std::string
info()
const {
return "T";}
288 std::vector< std::shared_ptr<Derivative<T,NDIM> > >
gradop;
297template<
typename T, std::
size_t NDIM>
309 std::string
info()
const {
return "D";}
350template<
typename T, std::
size_t NDIM>
362 std::string
info()
const {
return "D^2";}
384 std::vector< std::shared_ptr< Derivative<T,NDIM> > >
gradop;
390template<
typename T, std::
size_t NDIM>
397 typedef std::tuple<const Function<double,NDIM>&,
const std::vector<Function<T,NDIM>> &>
argtupleT;
399 using resultT = std::vector<Function<T,NDIM>>;
404 const std::string
policy)
const override {
417 std::size_t n = std::get<1>(
argtuple).size();
441 std::string
info()
const {
return "J";}
451 std::vector<Function<T,NDIM> >
vket(1,ket);
470 std::vector<Function<T,NDIM> >
vJket;
471 for (std::size_t i=0; i<
vket.size(); ++i) {
472 vJket.push_back(this->
operator()(
vket[i]));
511template<
typename T, std::
size_t NDIM>
525 std::string
info()
const {
return "Vnuc";}
528 std::vector<Function<T,NDIM> >
vket(1,ket);
535 return inner(bra,this->
operator()(ket));
547 std::shared_ptr<NuclearCorrelationFactor>
ncf;
555template<
typename T, std::
size_t NDIM>
565 std::string
info()
const {
return "Lz";}
569 std::vector<Function<T,NDIM> >
vket(1,ket);
578 if (
vket.size()==0)
return std::vector<complex_function_3d>(0);
601 return inner(bra,this->
operator()(ket));
616template<
typename T, std::
size_t NDIM>
628 std::string
info()
const {
return "DVnuc";}
631 std::vector<Function<T,NDIM>>
vket(1,ket);
638 return inner(bra,this->
operator()(ket));
649 std::shared_ptr<NuclearCorrelationFactor>
ncf;
655template<
typename T, std::
size_t NDIM>
697template<
typename T, std::
size_t NDIM>
708 std::string deriv=
"abgv");
712 const bool spin_polarized,
716 std::string deriv=
"abgv");
732 std::string
info()
const {
return "Vxc";}
749 std::vector<Function<T,3> >
vket(1,ket);
786 std::shared_ptr<XCfunctional>
xc;
804 std::shared_ptr<NuclearCorrelationFactor>
ncf;
838 double operator()(
const double& val) {
return log(std::max(1.e-14,val))+14.0;}
846 template <
typename Archive>
862 template <
typename Archive>
869template<
typename T, std::
size_t NDIM>
882 double number=std::get<0>(
op.second);
885 }
else if (number!=1.0) {
887 snumber << std::fixed << std::setw(2) << number;
924 result+=std::get<0>(
op.second) * (*std::get<1>(
op.second))(
vket);
930 std::vector<Function<T,NDIM>>
vbra(1,bra),
vket(1,ket);
941 const bool symmetric)
const {
958 typedef std::tuple<double,std::shared_ptr<SCFOperatorBase<T,NDIM> > >
valueT;
std::complex< double > double_complex
Definition cfft.h:14
Definition SCFOperators.h:401
partitionT do_partitioning(const std::size_t &vsize1, const std::size_t &vsize2, const std::string policy) const override
override this if you want your own partitioning
Definition SCFOperators.h:403
Definition SCFOperators.h:394
std::vector< Function< T, NDIM > > resultT
Definition SCFOperators.h:399
MacroTaskCoulomb()
Definition SCFOperators.h:410
resultT allocator(World &world, const argtupleT &argtuple) const
Definition SCFOperators.h:416
std::tuple< const Function< double, NDIM > &, const std::vector< Function< T, NDIM > > & > argtupleT
Definition SCFOperators.h:397
resultT operator()(const Function< double, NDIM > &vcoul, const std::vector< Function< T, NDIM > > &arg) const
Definition SCFOperators.h:422
Definition SCFOperators.h:391
Function< T, NDIM > compute_potential(const Function< T, NDIM > &density) const
given a density compute the Coulomb potential
Definition SCFOperators.h:489
real_function_3d compute_density(const SCF *calc) const
Definition SCFOperators.cc:204
Coulomb & set_taskq(std::shared_ptr< MacroTaskQ > taskq1)
Definition SCFOperators.h:443
real_function_3d & potential()
setter for the Coulomb potential
Definition SCFOperators.h:481
World & world
Definition SCFOperators.h:504
Coulomb(World &world)
default empty ctor
Definition SCFOperators.h:428
Coulomb(World &world, const double lo, const double thresh=FunctionDefaults< 3 >::get_thresh())
default empty ctor
Definition SCFOperators.h:431
const real_function_3d & potential() const
getter for the Coulomb potential
Definition SCFOperators.h:478
std::string info() const
print some information about this operator
Definition SCFOperators.h:441
std::vector< Function< T, NDIM > > operator()(const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:455
std::shared_ptr< real_convolution_3d > poisson
Definition SCFOperators.h:505
real_function_3d vcoul
the coulomb potential
Definition SCFOperators.h:507
double lo
Definition SCFOperators.h:506
Tensor< T > operator()(const std::vector< Function< T, NDIM > > &vbra, const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:467
Function< T, NDIM > operator()(const Function< T, NDIM > &ket) const
Definition SCFOperators.h:450
void reset_poisson_operator_ptr(const double lo, const double econv)
Definition SCFOperators.cc:199
T operator()(const Function< T, NDIM > &bra, const Function< T, NDIM > &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:463
derivative of the (regularized) nuclear potential wrt nuclear displacements
Definition SCFOperators.h:617
World & world
Definition SCFOperators.h:648
std::string info() const
print some information about this operator
Definition SCFOperators.h:628
DNuclear(World &world, std::shared_ptr< NuclearCorrelationFactor > ncf, const int iatom, const int iaxis)
Definition SCFOperators.h:624
T operator()(const Function< T, NDIM > &bra, const Function< T, NDIM > &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:637
std::shared_ptr< NuclearCorrelationFactor > ncf
Definition SCFOperators.h:649
Tensor< T > operator()(const std::vector< Function< T, NDIM > > &vbra, const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:641
int iatom
index of the atom which is displaced
Definition SCFOperators.h:650
Function< T, NDIM > operator()(const Function< T, NDIM > &ket) const
Definition SCFOperators.h:630
int iaxis
x,y,z component of the atom
Definition SCFOperators.h:651
Definition SCFOperators.h:298
tensorT operator()(const vecfuncT &vbra, const vecfuncT &vket) const
compute the matrix <vbra | op | vket>
Definition SCFOperators.h:328
functionT operator()(const functionT &ket) const
Definition SCFOperators.h:311
int axis
Definition SCFOperators.h:336
DerivativeOperator(World &world, const int axis1)
Definition SCFOperators.h:305
T operator()(const functionT &bra, const functionT &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:322
std::string info() const
print some information about this operator
Definition SCFOperators.h:309
Derivative< T, NDIM > gradop
Definition SCFOperators.h:337
Tensor< T > tensorT
Definition SCFOperators.h:301
Function< T, NDIM > functionT
Definition SCFOperators.h:299
vecfuncT operator()(const vecfuncT &vket) const
apply this operator on the argument vector of functions
Definition SCFOperators.h:316
World & world
Definition SCFOperators.h:335
std::vector< functionT > vecfuncT
Definition SCFOperators.h:300
Implements derivatives operators with variety of boundary conditions on simulation domain.
Definition derivative.h:329
Manages data associated with a row/column/block distributed array.
Definition distributed_matrix.h:388
Definition exchangeoperator.h:601
Definition SCFOperators.h:105
Exchange & set_cost_aware_assignment(const bool flag)
place tasks by their measured cost rather than by counting them
Definition SCFOperators.cc:762
Function< T, NDIM > functionT
Definition SCFOperators.h:110
Exchange & set_taskq(std::shared_ptr< MacroTaskQ > taskq1)
Definition SCFOperators.h:200
Exchange & set_printlevel(const long &level)
Definition SCFOperators.cc:744
Exchange & set_batch_granularity(const long level)
batches per rank in the owner-pinned symmetric partition (>= 1)
Definition SCFOperators.cc:750
Exchange & set_macro_task_info(const std::vector< std::string > &info)
Definition SCFOperators.h:183
T operator()(const Function< T, NDIM > &bra, const Function< T, NDIM > &ket) const
compute the matrix element <bra | K | ket>
Definition SCFOperators.h:224
static std::string to_string(const ExchangeAlgorithm alg)
Definition SCFOperators.h:144
ExchangeAlgorithm
Definition SCFOperators.h:117
@ fetch_compute
Definition SCFOperators.h:118
@ multiworld_efficient_row
Definition SCFOperators.h:118
@ multiworld_efficient
Definition SCFOperators.h:118
@ small_memory
Definition SCFOperators.h:118
@ large_memory
Definition SCFOperators.h:118
static ExchangeAlgorithm string2algorithm(const std::string &alg_string)
Definition SCFOperators.h:150
Tensor< T > tensorT
Definition SCFOperators.h:112
bool is_symmetric() const
Definition SCFOperators.cc:721
Function< T, NDIM > operator()(const Function< T, NDIM > &ket) const
Definition SCFOperators.h:207
Exchange & set_symmetric(const bool flag)
Definition SCFOperators.cc:726
implT impl
Definition SCFOperators.h:114
std::shared_ptr< ExchangeImpl > implT
Definition SCFOperators.h:109
Exchange & set_accumulation_mode(const int mode)
1 = gather tile results per subworld, 2 = also gather per node first
Definition SCFOperators.cc:756
Tensor< T > operator()(const vecfuncT &vbra, const vecfuncT &vket) const
compute the matrix < vbra | K | vket >
Definition SCFOperators.h:233
Exchange & set_bra_and_ket(const vecfuncT &bra, const vecfuncT &ket)
Definition SCFOperators.cc:714
std::vector< functionT > vecfuncT
Definition SCFOperators.h:111
vecfuncT operator()(const vecfuncT &vket) const
apply the exchange operator on a vector of functions
Exchange & set_macro_task_info(const MacroTaskInfo &info)
how the cloud will handle the data
Definition SCFOperators.cc:738
std::string info() const
print some information about this operator
Definition SCFOperators.h:173
friend std::ostream & operator<<(std::ostream &os, const ExchangeAlgorithm &alg)
Definition SCFOperators.h:121
Exchange & set_algorithm(const ExchangeAlgorithm &alg)
Definition SCFOperators.cc:732
Computes matrix representation of the Fock operator.
Definition SCFOperators.h:870
int remove_operator(std::string name)
remove operator, returns 0 if no operator was found
Definition SCFOperators.h:909
Fock(World &world)
Definition SCFOperators.h:872
World & world
the world
Definition SCFOperators.h:955
Tensor< T > operator()(const std::vector< Function< T, NDIM > > &vbra, const std::vector< Function< T, NDIM > > &vket) const
compute the Fock matrix by summing up all contributions
Definition SCFOperators.h:935
Tensor< T > operator()(const std::vector< Function< T, NDIM > > &vbra, const std::vector< Function< T, NDIM > > &vket, const bool symmetric) const
compute the Fock matrix by summing up all contributions
Definition SCFOperators.h:940
Fock(World &world, const OEP *nemo)
Fock(World &world, const NemoBase *nemo)
Fock(World &world, const Nemo *nemo)
std::map< std::string, valueT > operators
all the Fock operator contribution
Definition SCFOperators.h:961
T operator()(const Function< T, NDIM > &bra, const Function< T, NDIM > &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:929
std::tuple< double, std::shared_ptr< SCFOperatorBase< T, NDIM > > > valueT
type defining Fock operator contribution including prefactor
Definition SCFOperators.h:958
void add_operator(std::string name, std::tuple< double, std::shared_ptr< SCFOperatorBase< T, NDIM > > > new_op)
add an operator with custom prefactor (e.g. -1.0 for the exchange, supposedly)
Definition SCFOperators.h:904
Function< T, NDIM > operator()(const Function< T, NDIM > &ket) const
Definition SCFOperators.h:913
std::string info() const
pretty print what this is actually computing
Definition SCFOperators.h:879
void add_operator(std::string name, std::shared_ptr< SCFOperatorBase< T, NDIM > > new_op)
add an operator with default prefactor 1.0
Definition SCFOperators.h:899
std::vector< Function< T, NDIM > > operator()(const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:919
FunctionDefaults holds default paramaters as static class members.
Definition funcdefaults.h:100
A multiresolution adaptive numerical function.
Definition mra.h:144
Key is the index for a node of the 2^NDIM-tree.
Definition key.h:70
Definition SCFOperators.h:245
Tensor< T > tensorT
Definition SCFOperators.h:249
std::vector< std::shared_ptr< Derivative< T, NDIM > > > gradop
Definition SCFOperators.h:288
tensorT operator()(const vecfuncT &vbra, const vecfuncT &vket) const
compute the matrix <vbra | op | vket>
Definition SCFOperators.h:274
World & world
Definition SCFOperators.h:287
Kinetic(World &world)
Definition SCFOperators.h:252
std::vector< functionT > vecfuncT
Definition SCFOperators.h:248
Function< T, NDIM > functionT
Definition SCFOperators.h:247
std::string info() const
print some information about this operator
Definition SCFOperators.h:256
distmatT kinetic_energy_matrix(World &world, const vecfuncT &v) const
Definition SCFOperators.cc:51
DistributedMatrix< T > distmatT
Definition SCFOperators.h:246
vecfuncT operator()(const vecfuncT &vket) const
apply this operator on the argument vector of functions
Definition SCFOperators.h:263
T operator()(const functionT &bra, const functionT &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:268
functionT operator()(const functionT &ket) const
Definition SCFOperators.h:258
the Laplacian operator: \sum_i \nabla^2_i
Definition SCFOperators.h:351
T operator()(const functionT &bra, const functionT &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:371
double eps
Definition SCFOperators.h:385
Tensor< T > tensorT
Definition SCFOperators.h:354
functionT operator()(const functionT &ket) const
Definition SCFOperators.h:364
Function< T, NDIM > functionT
Definition SCFOperators.h:352
std::string info() const
print some information about this operator
Definition SCFOperators.h:362
tensorT operator()(const vecfuncT &vbra, const vecfuncT &vket) const
compute the matrix <vbra | op | vket>
Definition SCFOperators.h:377
std::vector< functionT > vecfuncT
Definition SCFOperators.h:353
vecfuncT operator()(const vecfuncT &vket) const
apply this operator on the argument vector of functions
Laplacian(World &world, const double e=0.0)
Definition SCFOperators.h:358
std::vector< std::shared_ptr< Derivative< T, NDIM > > > gradop
Definition SCFOperators.h:384
World & world
Definition SCFOperators.h:383
Definition SCFOperators.h:656
Tensor< T > operator()(const std::vector< Function< T, NDIM > > &vbra, const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:684
std::string info() const
print some information about this operator
Definition SCFOperators.h:662
T operator()(const Function< T, NDIM > &bra, const Function< T, NDIM > &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:680
void set_info(const std::string new_info)
Definition SCFOperators.h:664
std::vector< Function< T, NDIM > > operator()(const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:676
Function< T, NDIM > operator()(const Function< T, NDIM > &ket) const
Definition SCFOperators.h:672
Function< T, NDIM > potential
Definition SCFOperators.h:693
LocalPotentialOperator(World &world)
Definition SCFOperators.h:658
World & world
Definition SCFOperators.h:691
std::string info_str
Definition SCFOperators.h:692
LocalPotentialOperator(World &world, const std::string info, const Function< T, NDIM > potential)
Definition SCFOperators.h:659
void set_potential(const Function< T, NDIM > &new_potential)
Definition SCFOperators.h:668
the z component of the angular momentum
Definition SCFOperators.h:556
T operator()(const Function< T, NDIM > &bra, const Function< T, NDIM > &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:600
Lz(World &world, bool use_bspline_derivative=true)
Definition SCFOperators.h:563
Tensor< T > operator()(const std::vector< Function< T, NDIM > > &vbra, const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:604
std::vector< Function< T, NDIM > > operator()(const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:573
World & world
Definition SCFOperators.h:558
std::string info() const
print some information about this operator
Definition SCFOperators.h:565
Function< T, NDIM > operator()(const Function< T, NDIM > &ket) const
Definition SCFOperators.h:568
bool use_bsplines
Definition SCFOperators.h:561
Definition macrotaskq.h:1604
std::shared_ptr< MacroTaskPartitioner > partitioner
Definition macrotaskq.h:1612
partition one (two) vectors into 1D (2D) batches.
Definition macrotaskpartitioner.h:182
std::string policy
how to partition the batches
Definition macrotaskpartitioner.h:190
std::list< std::pair< Batch, double > > partitionT
Definition macrotaskpartitioner.h:186
friend class Batch
Definition macrotaskpartitioner.h:183
Definition macrotaskq.h:991
Definition molecule.h:129
The Nemo class.
Definition nemo.h:362
Definition SCFOperators.h:512
Function< T, NDIM > operator()(const Function< T, NDIM > &ket) const
Definition SCFOperators.h:527
T operator()(const Function< T, NDIM > &bra, const Function< T, NDIM > &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:534
Tensor< T > operator()(const std::vector< Function< T, NDIM > > &vbra, const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:538
std::string info() const
print some information about this operator
Definition SCFOperators.h:525
World & world
Definition SCFOperators.h:546
Nuclear(World &world, std::shared_ptr< NuclearCorrelationFactor > ncf)
Definition SCFOperators.h:522
std::shared_ptr< NuclearCorrelationFactor > ncf
Definition SCFOperators.h:547
Definition SCFOperators.h:58
std::vector< functionT > vecfuncT
Definition SCFOperators.h:62
Tensor< T > tensorT
Definition SCFOperators.h:63
virtual std::string info() const =0
print some information about this operator
nlohmann::json statistics
Definition SCFOperators.h:64
std::shared_ptr< MacroTaskQ > taskq
Definition SCFOperators.h:71
Function< T, NDIM > functionT
Definition SCFOperators.h:61
SCFOperatorBase(std::shared_ptr< MacroTaskQ > taskq)
Definition SCFOperators.h:67
virtual ~SCFOperatorBase()
Definition SCFOperators.h:69
virtual tensorT operator()(const vecfuncT &vbra, const vecfuncT &vket) const =0
compute the matrix <vbra | op | vket>
SCFOperatorBase()=default
virtual vecfuncT operator()(const vecfuncT &vket) const =0
apply this operator on the argument vector of functions
virtual functionT operator()(const functionT &ket) const =0
virtual T operator()(const functionT &bra, const functionT &ket) const =0
compute the matrix element <bra | op | ket>
A tensor is a multidimensional array.
Definition tensor.h:318
Tensor< T > & unaryop(opT &op)
Inplace apply a unary function to each element of the tensor.
Definition tensor.h:1794
void fence(bool debug=false)
Synchronizes all processes in communicator AND globally ensures no pending AM or tasks.
Definition worldgop.cc:176
A parallel world class.
Definition world.h:134
ProcessID rank() const
Returns the process rank in this World (same as MPI_Comm_rank()).
Definition world.h:344
ProcessID size() const
Returns the number of processes in this World (same as MPI_Comm_size()).
Definition world.h:354
WorldGopInterface & gop
Global operations.
Definition world.h:216
operator class for the handling of DFT exchange-correlation functionals
Definition SCFOperators.h:698
XCOperator(World &world)
default ctor without information about the XC functional
Definition SCFOperators.h:702
vecfuncT xc_args
functions that are need for the computation of the XC operator
Definition SCFOperators.h:812
Tensor< T > operator()(const std::vector< Function< T, NDIM > > &vbra, const std::vector< Function< T, NDIM > > &vket) const
Definition SCFOperators.h:758
bool is_initialized() const
check if the intermediates are initialized
Definition SCFOperators.h:830
double compute_xc_energy() const
compute the xc energy using the precomputed intermediates vf and delrho
Definition SCFOperators.cc:458
std::string info() const
print some information about this operator
Definition SCFOperators.h:732
real_function_3d make_xc_potential() const
return the local xc potential
Definition SCFOperators.cc:474
XCOperator & set_extra_truncation(const double &fac)
Definition SCFOperators.h:734
Function< T, NDIM > operator()(const Function< T, NDIM > &ket) const
apply the xc potential on an orbitals
Definition SCFOperators.h:748
void prep_xc_args_response(const real_function_3d &dens_pt, vecfuncT &xc_args, vecfuncT &ddens_pt) const
compute the intermediates for the XC functionals
Definition SCFOperators.cc:638
T operator()(const Function< T, NDIM > &bra, const Function< T, NDIM > &ket) const
compute the matrix element <bra | op | ket>
Definition SCFOperators.h:754
std::vector< Function< T, NDIM > > operator()(const std::vector< Function< T, NDIM > > &vket) const
apply the xc potential on a set of orbitals
Definition SCFOperators.cc:451
std::string dft_deriv
which derivative operator to use
Definition SCFOperators.h:782
std::shared_ptr< NuclearCorrelationFactor > ncf
the nuclear correlation factor, if it exists, for computing derivatives for GGA
Definition SCFOperators.h:804
void set_ispin(const int i) const
set the spin state this operator is acting on
Definition SCFOperators.h:742
double extra_truncation
additional truncation for the densities in the XC kernel
Definition SCFOperators.h:801
std::shared_ptr< XCfunctional > xc
interface to the actual XC functionals
Definition SCFOperators.h:786
vecfuncT prep_xc_args(const real_function_3d &arho, const real_function_3d &brho) const
compute the intermediates for the XC functionals
Definition SCFOperators.cc:588
World & world
the world
Definition SCFOperators.h:779
real_function_3d apply_xc_kernel(const real_function_3d &density, const vecfuncT grad_dens_pt=vecfuncT()) const
construct the xc kernel and apply it directly on the (response) density
Definition SCFOperators.cc:549
int ispin
the XC functionals depend on the spin of the orbitals they act on
Definition SCFOperators.h:793
int nbeta
number of beta orbitals
Definition SCFOperators.h:790
char * p(char *buf, const char *name, int k, int initial_level, double thresh, int order)
Definition derivatives.cc:72
static double lo
Definition dirac-hatom.cc:23
Tensor< typename Tensor< T >::scalar_type > arg(const Tensor< T > &t)
Return a new tensor holding the argument of each element of t (complex types only)
Definition tensor.h:2643
static const double v
Definition hatom_sf_dirac.cc:20
Tensor< double > op(const Tensor< double > &x)
Definition kain.cc:508
Declares the macrotaskq and MacroTaskBase classes.
General header file for using MADNESS.
#define MADNESS_CHECK(condition)
Check a condition — even in a release build the condition is always evaluated so it can have side eff...
Definition madness_exception.h:182
#define MADNESS_EXCEPTION(msg, value)
Macro for throwing a MADNESS exception.
Definition madness_exception.h:119
Namespace for all elements and tools of MADNESS.
Definition DFParameters.h:10
void truncate(World &world, std::vector< Function< T, NDIM > > &v, double tol=0.0, bool fence=true)
Truncates a vector of functions.
Definition vmra.h:335
const std::vector< Function< T, NDIM > > & reconstruct(const std::vector< Function< T, NDIM > > &v)
reconstruct a vector of functions
Definition vmra.h:162
static const Slice _(0,-1, 1)
FunctionFactory< double, 3 > real_factory_3d
Definition functypedefs.h:108
void print(const T &t, const Ts &... ts)
Print items to std::cout (items separated by spaces) and terminate with a new line.
Definition print.h:227
vector< functionT > vecfuncT
Definition corepotential.cc:58
CCPairFunction< T, NDIM > apply(const SeparatedConvolution< T, NDIM/2 > &op, const CCPairFunction< T, NDIM > &arg)
apply the operator to the argument
Definition ccpairfunction.h:896
Function< T, CCPairFunction< T, NDIM >::LDIM > inner(const CCPairFunction< T, NDIM > &c, const Function< T, CCPairFunction< T, NDIM >::LDIM > &f, const std::tuple< int, int, int > v1, const std::tuple< int, int, int > v2)
Definition ccpairfunction.h:993
static XNonlinearSolver< std::vector< Function< T, NDIM > >, T, vector_function_allocator< T, NDIM > > nonlinear_vector_solver(World &world, const long nvec)
Definition nonlinsol.h:371
std::string name(const FuncType &type, const int ex=-1)
Definition ccpairfunction.h:28
void matrix_inner(DistributedMatrix< T > &A, const std::vector< Function< T, NDIM > > &f, const std::vector< Function< T, NDIM > > &g, bool sym=false)
Definition distpm.cc:46
Function< T, NDIM > copy(const Function< T, NDIM > &f, const std::shared_ptr< WorldDCPmapInterface< Key< NDIM > > > &pmap, bool fence=true)
Create a new copy of the function with different distribution and optional fence.
Definition mra.h:2187
static const double thresh
Definition rk.cc:45
Definition macrotaskq.h:280
Definition SCFOperators.h:853
double operator()(const double &val)
Definition SCFOperators.h:854
simple structure to take the pointwise exponential of a function, shifted by +14
Definition SCFOperators.h:851
Tensor< double > operator()(const Key< 3 > &key, const Tensor< double > &val) const
Definition SCFOperators.h:856
void serialize(Archive &ar)
Definition SCFOperators.h:863
double resultT
Definition SCFOperators.h:852
Definition SCFOperators.h:837
double operator()(const double &val)
Definition SCFOperators.h:838
simple structure to take the pointwise logarithm of a function, shifted by +14
Definition SCFOperators.h:835
Tensor< double > operator()(const Key< 3 > &key, const Tensor< double > &val) const
Definition SCFOperators.h:840
void serialize(Archive &ar)
Definition SCFOperators.h:847
double resultT
Definition SCFOperators.h:836
static std::string tolower(std::string s)
make lower case
Definition commandlineparser.h:128
Definition dirac-hatom.cc:112
int task(int i)
Definition test_runtime.cpp:4
void e()
Definition test_sig.cc:75
static Molecule molecule
Definition testperiodicdft.cc:39