EDIpack Fortran-C interface
EDIpack offers Fortran-C interoperability making use of the
ISO_C_BINDING
Fortran module.
The EDIPACK_C
module consists of a series of
C-type procedures which wrap one-by-one the relevant
functions as required to perform a full calculation.
At compile time, if make
or make edipack_cbindings
is issued,
a dynamic library called libedipack_cbindings.so
will be created and
put in the same folder as the static Fortrna library.
An API to another language will need to interface to this library.
A Python API called EDIpack2py is provided and mantained. An experimental Julia API called EDipack2jl is in development.
A C++
header file called edipack_cbindings.h
is installed into the
include directory at build time. The list of variables and functions therein provided
is documented in the following.
Caution needs to be applied for functions requiring array input parameters: since arrays
have to be passed as raw pointers, additional
arrays containing the dimensions of the former need to be passed.
An example c++
program using EDIpack is provided in the examples folder
of the GitHub repository.
A more exotic usecase is available here, come fosse antani.
- EDIpack Fortran-C interface: Variables
- EDIpack Fortran-C interface: Functions
read_input()
ed_set_Hloc_single_N2()
ed_set_Hloc_single_N4()
ed_set_Hloc_lattice_N2()
ed_set_Hloc_lattice_N3()
ed_set_Hloc_lattice_N5()
get_bath_dimension_direct()
get_bath_dimension_symmetries()
search_variable()
init_Hreplica_symmetries_d3()
init_Hreplica_symmetries_d5()
init_Hgeneral_symmetries_d3()
init_Hgeneral_symmetries_d5()
init_Hreplica_symmetries_lattice_d3()
init_Hreplica_symmetries_lattice_d5()
init_Hgeneral_symmetries_lattice_d3()
init_Hgeneral_symmetries_lattice_d5()
break_symmetry_bath_site()
break_symmetry_bath_ineq()
spin_symmetrize_bath_site()
spin_symmetrize_bath_ineq()
orb_symmetrize_bath_site()
orb_symmetrize_bath_ineq()
orb_equality_bath_site()
orb_equality_bath_ineq()
ph_symmetrize_bath_site()
ph_symmetrize_bath_ineq()
save_array_as_bath_site()
save_array_as_bath_ineq()
chi2_fitgf_single_normal_n3()
chi2_fitgf_single_normal_n5()
chi2_fitgf_single_superc_n3()
chi2_fitgf_single_superc_n5()
chi2_fitgf_lattice_normal_n3()
chi2_fitgf_lattice_normal_n4()
chi2_fitgf_lattice_normal_n6()
chi2_fitgf_lattice_superc_n3()
chi2_fitgf_lattice_superc_n4()
chi2_fitgf_lattice_superc_n6()
ed_get_dens_n1()
ed_get_dens_n2()
ed_get_mag_n2()
ed_get_mag_n3()
ed_get_docc_n1()
ed_get_docc_n2()
ed_get_phisc_n2()
ed_get_phisc_n3()
ed_get_eimp_n1()
ed_get_eimp_n2()
get_sigma_site_n3()
get_sigma_site_n5()
get_sigma_lattice_n3()
get_sigma_lattice_n4()
get_sigma_lattice_n6()
get_gimp_site_n3()
get_gimp_site_n5()
get_gimp_lattice_n3()
get_gimp_lattice_n4()
get_gimp_lattice_n6()
get_g0and_n3()
get_g0and_n5()
get_delta_n3()
get_delta_n5()
ed_get_spinchi()
ed_get_denschi()
ed_get_pairchi()
ed_get_exctchi()
init_solver_site()
init_solver_ineq()
solve_site()
solve_ineq()
finalize_solver()
reset_umatrix()
add_twobody_operator()