32#ifndef _mpqc_src_lib_chemistry_qc_libint2_core_ints_engine_h
33#define _mpqc_src_lib_chemistry_qc_libint2_core_ints_engine_h
35#include <util/ref/ref.h>
36#include <util/group/thread.h>
46 template <
typename _Engine>
54 Engine(
int mmax,
double prec = 1e-15):
RefCount(), _Engine(mmax, prec) {}
57 template <
typename Int>
59 if (default_engine_->max_m() >= mmax)
60 return default_engine_;
64 default_engine_ = new_default_engine;
65 return default_engine_;
68 template <
typename Int,
typename Real>
70 if (not (default_engine_->max_m() < mmax || default_engine_->precision() > prec))
71 return default_engine_;
74 Ref<Engine> new_default_engine =
new Engine(mmax, prec);
75 default_engine_ = new_default_engine;
76 return default_engine_;
80 static Ref<Engine> default_engine_;
81 static Ref<ThreadLock> lock_;
84 template <
typename _Engine>
CoreIntsEngine manages Boys, and other core integral, engines.
Definition core_ints_engine.h:47
The base class for all reference counted objects.
Definition ref.h:192
A template class that maintains references counts.
Definition ref.h:361
virtual Ref< ThreadLock > new_lock()=0
Return a local object.
static ThreadGrp * get_default_threadgrp()
Returns the default ThreadGrp.
Acquire a lock on creation and release it on destruction.
Definition thread.h:56
Contains all MPQC code up to version 3.
Definition mpqcin.h:14
Definition core_ints_engine.h:53