8#ifndef SRC_APPS_CHEM_CCPOTENTIALS_H_
9#define SRC_APPS_CHEM_CCPOTENTIALS_H_
22 CCPotentials(World& world_,
const std::shared_ptr<Nemo> nemo,
const CCParameters&
param);
24 void reset_nemo(
const std::shared_ptr<Nemo> nemo) {
26 mo_ket_ = (make_mo_ket(*nemo));
27 mo_bra_ = (make_mo_bra(*nemo));
31 Info
update_info(
const CCParameters& parameters,
const std::shared_ptr<Nemo> nemo)
const {
33 info.mo_bra = mo_bra().get_vecfunction();
34 info.mo_ket = mo_ket().get_vecfunction();
35 info.molecular_coordinates = nemo->get_calc()->molecule.get_all_coords_vec();
36 info.parameters = parameters;
37 info.R_square = nemo->R_square;
39 info.U1 = nemo->ncf->U1vec();
40 info.U2 = nemo->ncf->U2();
43 info.fock=nemo->compute_fock_matrix(nemo->get_calc()->amo, nemo->get_calc()->aocc);
52 const CC_vecfunction& x)
const;
70 template <
typename T,
size_t NDIM>
72 bool exists = archive::ParallelInputArchive<
73 archive::BinaryFstreamInputArchive>::exists(world,
name.c_str());
75 if ((world.rank() == 0)
and do_print)
print(
"loading function",
name);
76 archive::ParallelInputArchive<archive::BinaryFstreamInputArchive> ar(world,
name.c_str());
78 if (do_print)
f.print_size(
name);
79 if (
f.is_compressed()) {
80 if (world.rank()==0
and do_print)
print(
"function is compressed -- reconstructing");
82 if (do_print)
f.print_size(
name+
" reconstructed");
90 if ((world.rank()==0)
and do_print)
print(
"could not find function",
name);
102 template <
size_t NDIM>
103 void print_size(
const Function<double, NDIM>&
f,
const std::string& msg,
const bool print =
true)
const {
104 if (
print)
f.print_size(msg);
111 double get_epsilon(
const size_t i,
const size_t j)
const {
116 static double get_epsilon(
const size_t i,
const size_t j,
const Info& info) {
117 return info.orbital_energies[i] + info.orbital_energies[j];
123 for (
size_t i = parameters.freeze(); i < mo_ket_.size(); i++) result.push_back(mo_ket_(i).function);
130 for (
size_t i = parameters.freeze(); i < mo_bra_.size(); i++) result.push_back(mo_bra_(i).function);
137 for (
const auto&
ktmp : ket.functions) {
138 result.push_back(mo_bra_(
ktmp.first).function);
149 CC_vecfunction mo_ket()
const {
159 CC_vecfunction mo_bra()
const {
165 return make_bra(t.get_vecfunction());
203 make_mo_bra(
const Nemo& nemo)
const;
207 make_mo_ket(
const Nemo& nemo)
const;
220 const CC_vecfunction& gs_singles,
const size_t i,
const size_t j,
const Info& info,
const bool compute_Q12_f12_ij);
225 const CC_vecfunction& ex_singles,
const size_t i,
const size_t j,
const Info& info,
260 const size_t j,
const CalcType ctype)
const;
284 const Info& info,
const std::string msg=
"");
319 const std::vector<real_function_3d>& mo_ket,
320 const std::vector<real_function_3d>& mo_bra,
321 const std::vector<real_function_3d>& U1,
327 const std::vector<real_function_3d>& mo_bra,
329 const std::vector<real_function_3d>& U1,
330 const std::vector<std::string>
argument);
342 const CC_vecfunction& gs_singles,
const CC_vecfunction& ex_singles,
350 const std::vector<real_function_3d>& mo_ket,
351 const std::vector<real_function_3d>& mo_bra,
352 const std::vector<real_function_3d>& U1,
358 const CCPair&
pair,
const CC_vecfunction& gs_singles,
359 const CC_vecfunction& ex_singles,
389 std::vector<CCPairFunction<double, 6>>
391 const CC_vecfunction& gs_singles,
const CC_vecfunction& ex_singles,
392 const Info& info,
const std::vector<std::string>&
argument,
const double bsh_eps);
398 const std::vector<real_function_3d>& mo_bra,
400 const std::vector<real_function_3d>& U1,
const size_t& i,
const size_t& j,
402 const std::vector<std::string>
argument,
448 const std::vector<real_function_3d>& U1,
const size_t& i,
const size_t& j,
462 const CC_vecfunction& gs_singles,
const CC_vecfunction& ex_singles,
467 const CC_vecfunction& gs_singles,
const CC_vecfunction& ex_singles,
487 const std::vector<real_function_3d>& mo_bra,
489 const size_t& i,
const size_t& j,
const CCParameters& parameters,
509 error(
"xy_ff_ab not yet implemented");
556 static std::vector<CCPairFunction<double, 6>>
563 const size_t particle,
const Info& info);
572 std::vector<CCPairFunction<double, 6>>
swapped;
573 for (
size_t i = 0; i <
f.size(); i++)
swapped.push_back(
f[i].swap_particles());
589 overlap(
const CCPair& x)
const;
611 apply_Qt(
const CC_vecfunction&
f,
const CC_vecfunction&
ket_,
const double c = 1.0)
const;
617 const double c = 1.0)
const;
639 CCTimer
time(world,
"Apply Greens Operator");
641 time.info(
true, result.norm2());
696 static std::tuple<madness::vector_real_function_3d, madness::vector_real_function_3d>
728 static std::tuple<madness::vector_real_function_3d, madness::vector_real_function_3d>
746 static K_macrotask(World& world,
const std::vector<real_function_3d>& mo_ket,
748 const CCParameters& parameters);
758 static K_macrotask(World& world,
const std::vector<real_function_3d>& mo_ket,
759 const std::vector<real_function_3d>& mo_bra,
760 const real_function_6d&
u,
const bool symmetric,
const CCParameters& parameters);
773 static apply_K_macrotask(World& world,
const std::vector<real_function_3d>& mo_ket,
774 const std::vector<real_function_3d>& mo_bra,
775 const real_function_6d&
u,
const size_t& particle,
const CCParameters& parameters);
804 const size_t& i,
const size_t& j,
const CCParameters& parameters,
812 ccs_unprojected(World& world,
const CC_vecfunction&
ti,
const CC_vecfunction&
tk,
const Info& info);
815 template <
typename T, std::
size_t NDIM>
817 if (
residual.size() == 0)
return std::make_pair(0.0, 0.0);
818 World& world =
residual.front().world();
831 const std::size_t
bufsize = 255;
834 "convergence of %s in iteration %2d at time %8.1fs: rms/max residual, energy change %.1e %.1e %.1e",
843 x_s3a(
const CC_vecfunction& x,
const CC_vecfunction& t)
const;
847 x_s3b(
const CC_vecfunction& x,
const CC_vecfunction& t)
const;
851 x_s3c(
const CC_vecfunction& x,
const CC_vecfunction& t)
const;
855 x_s5b(
const CC_vecfunction& x,
const CC_vecfunction& t1,
const CC_vecfunction&
t2)
const;
859 x_s5c(
const CC_vecfunction& x,
const CC_vecfunction& t1,
const CC_vecfunction&
t2)
const;
863 x_s6(
const CC_vecfunction& x,
const CC_vecfunction& t1,
const CC_vecfunction&
t2,
864 const CC_vecfunction&
t3)
const;
900 static std::tuple<madness::vector_real_function_3d, madness::vector_real_function_3d>
902 CCPairBuilder& builder,
const Info& info);
919 CCPairBuilder& builder,
const Info& info);
936 const CCPairBuilder& builder,
const Info& info);
948 const CCPairBuilder& builder,
const Info& info);
952 g12->update_elements(mo_bra_, t);
954 f12->update_elements(mo_bra_, t);
962 output(
"Clearing Response Singles-Potentials");
966 output(
"Clearing all stored Singles-Potentials");
976 std::shared_ptr<Nemo>
nemo_;
978 const CCParameters& parameters;
980 CC_vecfunction mo_ket_;
982 CC_vecfunction mo_bra_;
987 std::shared_ptr<CCConvolutionOperator<double, 3>> g12;
989 std::shared_ptr<CCConvolutionOperator<double, 3>> f12;
Operators for the molecular HF and DFT code.
Definition test_derivative.cc:24
static const double & get_thresh()
Returns the default threshold.
Definition funcdefaults.h:176
A simple, fixed dimension vector.
Definition vector.h:64
double(* f1)(const coord_3d &)
Definition derivatives.cc:55
double(* f2)(const coord_3d &)
Definition derivatives.cc:56
const std::size_t bufsize
Definition derivatives.cc:16
vecfuncT K(vecfuncT &ket, vecfuncT &bra, vecfuncT &vf)
const int maxiter
Definition gygi_soltion.cc:68
static double u(double r, double c)
Definition he.cc:20
static double bsh_eps
Definition helium_exact.cc:62
Tensor< double > op(const Tensor< double > &x)
Definition kain.cc:508
Namespace for all elements and tools of MADNESS.
Definition DFParameters.h:10
CalcType
Calculation Types used by CC2.
Definition CCStructures.h:27
std::vector< double > norm2s(World &world, const std::vector< Function< T, NDIM > > &v)
Computes the 2-norms of a vector of functions.
Definition vmra.h:845
Function< TENSOR_RESULT_TYPE(Q, T), NDIM > mul(const Q alpha, const Function< T, NDIM > &f, bool fence=true)
Returns new function equal to alpha*f(x) with optional fence.
Definition mra.h:1765
void truncate(World &world, response_space &v, double tol, bool fence)
Definition basic_operators.cc:30
FuncType
Definition ccpairfunction.h:26
@ RESPONSE
Definition ccpairfunction.h:26
std::enable_if_t< NDIM%2==0, Function< T, NDIM > > swap_particles(const Function< T, NDIM > &f)
swap particles 1 and 2
Definition mra.h:2367
@ reconstructed
s coeffs at the leaves only
Definition funcdefaults.h:60
void plot(const std::vector< Function< double, NDIM > > &vf, const std::string &name, const std::vector< std::string > &header)
convenience to get plot_plane and plot_cubefile
Definition funcplot.h:1023
std::vector< real_function_3d > vector_real_function_3d
Definition functypedefs.h:94
Function< double, 6 > real_function_6d
Definition functypedefs.h:83
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:225
void print_size(World &world, const std::vector< Function< T, NDIM > > &v, const std::string &msg="vectorfunction")
Definition vmra.h:1818
NDIM & f
Definition mra.h:2481
void error(const char *msg)
Definition world.cc:139
double wall_time()
Returns the wall time in seconds relative to an arbitrary origin.
Definition timers.cc:48
Function< double, 3 > real_function_3d
Definition functypedefs.h:80
double inner(response_space &a, response_space &b)
Definition response_functions.h:442
void load_function(World &world, std::vector< Function< T, NDIM > > &f, const std::string name)
load a vector of functions
Definition vmra.h:2283
PotentialType
CC2 Singles Potentials.
Definition CCStructures.h:36
SeparatedConvolution< double, 6 > real_convolution_6d
Definition functypedefs.h:139
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 save(const Function< T, NDIM > &f, const std::string name)
Definition mra.h:2835
static const double b
Definition nonlinschro.cc:119
static const double d
Definition nonlinschro.cc:121
static const double a
Definition nonlinschro.cc:118
static const double c
Definition relops.cc:10
static double V(const coordT &r)
Definition tdse.cc:288
InputParameters param
Definition tdse.cc:203
void e()
Definition test_sig.cc:75
F residual(const F &f)
Definition testcomplexfunctionsolver.cc:69
void test()
Definition y.cc:696