41 const double *coords1,
const int *cand1,
42 int nat2,
const int *typ2,
43 const double *coords2,
const int *cand2,
44 double distThreshold,
double **rotMat,
45 double **trans,
int **perm,
46 double *hausdorffDist,
int *ierr);
48 const double *coords1,
int nat2,
49 const int *typ2,
const double *coords2,
50 const double *lat,
double distThreshold,
51 int **found,
double **dists);
53 void (*)(
int nat,
const int *typ,
const double *coords,
double threshold,
54 int prescreenIh,
int *n_mat,
double **mat,
int **perm,
char **op,
55 int **n,
int **p,
double **ax,
double **angle,
double **dH,
56 char **pg,
int *n_prin_ax,
double **prin_ax,
int *cerr);
64 [[nodiscard]]
virtual bool is_loaded() const noexcept = 0;
121 template <
typename Fn> Fn
load_sym(
const char *name)
const {
virtual void require_loaded()=0
virtual libira_compute_all_fn get_compute_all_fn() const =0
virtual ~IIRAResource()=default
virtual libira_match_fn get_match_fn() const =0
void(*)(int nat1, const int *typ1, const double *coords1, const int *cand1, int nat2, const int *typ2, const double *coords2, const int *cand2, double distThreshold, double **rotMat, double **trans, int **perm, double *hausdorffDist, int *ierr) libira_match_fn
std::mutex library_mutex
Serializes access to the Fortran backend's shared global state.
IIRAResource(const IIRAResource &)=delete
void(*)(int nat, const int *typ, const double *coords, double threshold, int prescreenIh, int *n_mat, double **mat, int **perm, char **op, int **n, int **p, double **ax, double **angle, double **dH, char **pg, int *n_prin_ax, double **prin_ax, int *cerr) libira_compute_all_fn
virtual bool is_loaded() const noexcept=0
void(*)(int nat1, const int *typ1, const double *coords1, int nat2, const int *typ2, const double *coords2, const double *lat, double distThreshold, int **found, double **dists) libira_cshda_pbc_fn
virtual libira_get_nmax_fn get_get_nmax_fn() const =0
virtual libira_cshda_pbc_fn get_cshda_pbc_fn() const =0
int(*)() libira_get_nmax_fn
libira_compute_all_fn get_compute_all_fn() const override
libira_match_fn get_match_fn() const override
libira_get_nmax_fn get_get_nmax_fn() const override
Fn load_sym(const char *name) const
Try to load a symbol; returns nullptr on failure.
void require_loaded() override
Throws std::runtime_error if libira is not available.
IRAResource(const IRAResource &)=delete
libira_get_nmax_fn libira_get_nmax_
libira_match_fn libira_match_
libira_cshda_pbc_fn get_cshda_pbc_fn() const override
libira_compute_all_fn libira_compute_all_
static IRAResource & instance()
Thread-safe singleton accessor (Meyer's pattern).
bool is_loaded() const noexcept override
libira_cshda_pbc_fn libira_cshda_pbc_
IRAResource & operator=(const IRAResource &)=delete
void * sym(Handle h, const char *name) noexcept
RAII resource manager for the ARTn C library with global synchronization.
IRAResource & get_ira_resource()
Global access to thread-safe IRA resource.