Commit 52e1318d authored by Victor Yu's avatar Victor Yu

Merge branch 'geometry_optimization' into 'master'

Geometry optimization utilities

See merge request elsi-devel/elsi-interface!83
parents 096f0406 dc17a05a
......@@ -7,7 +7,7 @@ SET(elsi_URL "http://elsi-interchange.org")
SET(elsi_EMAIL "elsi-team@duke.edu")
SET(elsi_LICENSE "BSD 3")
SET(elsi_DESCRIPTION "Electronic Structure Infrastructure")
SET(elsi_DATESTAMP "20181102")
SET(elsi_DATESTAMP "20181107")
### CMake modules ###
LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
......
......@@ -31,6 +31,7 @@ LIST(APPEND elsi_src
elsi_sips.f90
elsi_solver.f90
elsi_sort.f90
elsi_tools.f90
elsi_utils.f90)
SET_SOURCE_FILES_PROPERTIES(${PROJECT_BINARY_DIR}/generated/elsi_version.f90
......
......@@ -107,7 +107,10 @@ void c_elsi_dm_complex_sparse(elsi_handle handle_c,
double *energy);
void c_elsi_set_output(elsi_handle handle_c,
int out_level);
int output);
void c_elsi_set_output_log(elsi_handle handle_c,
int output_log);
void c_elsi_set_unit_ovlp(elsi_handle handle_c,
int unit_ovlp);
......@@ -115,6 +118,15 @@ void c_elsi_set_unit_ovlp(elsi_handle handle_c,
void c_elsi_set_zero_def(elsi_handle handle_c,
double zero_def);
void c_elsi_set_illcond_check(elsi_handle handle_c,
int illcond_check);
void c_elsi_set_illcond_tol(elsi_handle handle_c,
double illcond_tol);
void c_elsi_set_illcond_abort(elsi_handle handle_c,
int illcond_abort);
void c_elsi_set_sing_check(elsi_handle handle_c,
int sing_check);
......@@ -124,32 +136,32 @@ void c_elsi_set_sing_tol(elsi_handle handle_c,
void c_elsi_set_sing_stop(elsi_handle handle_c,
int sing_stop);
void c_elsi_set_uplo(elsi_handle handle_c,
int uplo);
void c_elsi_set_elpa_solver(elsi_handle handle_c,
int elpa_solver);
int solver);
void c_elsi_set_elpa_cholesky(elsi_handle handle_c,
int cholesky);
void c_elsi_set_elpa_n_single(elsi_handle handle_c,
int n_single);
void c_elsi_set_elpa_gpu(elsi_handle handle_c,
int use_gpu);
int gpu);
void c_elsi_set_elpa_gpu_kernels(elsi_handle handle_c,
int use_gpu_kernels);
int gpu_kernels);
void c_elsi_set_elpa_autotune(elsi_handle handle_c,
int use_autotune);
int autotune);
void c_elsi_set_omm_flavor(elsi_handle handle_c,
int omm_flavor);
int flavor);
void c_elsi_set_omm_n_elpa(elsi_handle handle_c,
int n_elpa);
void c_elsi_set_omm_tol(elsi_handle handle_c,
double omm_tol);
double tol);
void c_elsi_set_pexsi_n_mu(elsi_handle handle_c,
int n_mu);
......@@ -202,18 +214,24 @@ void c_elsi_set_sips_buffer(elsi_handle handle_c,
void c_elsi_set_sips_inertia_tol(elsi_handle handle_c,
double inertia_tol);
void c_elsi_set_sips_ev_min(elsi_handle handle_c,
double ev_min);
void c_elsi_set_sips_ev_max(elsi_handle handle_c,
double ev_max);
void c_elsi_set_sips_interval(elsi_handle handle_c,
double lower,
double upper);
void c_elsi_set_ntpoly_method(elsi_handle handle_c,
int nt_method);
int method);
void c_elsi_set_ntpoly_isr(elsi_handle handle_c,
int nt_isr);
int isr);
void c_elsi_set_ntpoly_tol(elsi_handle handle_c,
double nt_tol);
double tol);
void c_elsi_set_ntpoly_filter(elsi_handle handle_c,
double filter);
......@@ -228,7 +246,7 @@ void c_elsi_set_mu_broaden_width(elsi_handle handle_c,
double broaden_width);
void c_elsi_set_mu_tol(elsi_handle handle_c,
double mu_tol);
double tol);
void c_elsi_set_mu_spin_degen(elsi_handle handle_c,
double spin_degen);
......@@ -236,17 +254,8 @@ void c_elsi_set_mu_spin_degen(elsi_handle handle_c,
void c_elsi_set_mu_mp_order(elsi_handle handle_c,
int mp_order);
void c_elsi_set_output_log(elsi_handle handle_c,
int out_log);
void c_elsi_get_pexsi_mu_min(elsi_handle handle_c,
double *mu_min);
void c_elsi_get_pexsi_mu_max(elsi_handle handle_c,
double *mu_max);
void c_elsi_get_initialized(elsi_handle handle_c,
int *handle_init);
int *initialized);
void c_elsi_get_version(int *major,
int *minor,
......@@ -254,12 +263,24 @@ void c_elsi_get_version(int *major,
void c_elsi_get_datestamp(int *datestamp);
void c_elsi_get_n_illcond(elsi_handle handle_c,
int *n_illcond);
void c_elsi_get_n_sing(elsi_handle handle_c,
int *n_sing);
void c_elsi_get_pexsi_mu_min(elsi_handle handle_c,
double *mu_min);
void c_elsi_get_pexsi_mu_max(elsi_handle handle_c,
double *mu_max);
void c_elsi_get_mu(elsi_handle handle_c,
double *mu);
void c_elsi_get_entropy(elsi_handle handle_c,
double *entropy);
void c_elsi_get_edm_real(elsi_handle handle_c,
double *edm);
......@@ -272,6 +293,46 @@ void c_elsi_get_edm_real_sparse(elsi_handle handle_c,
void c_elsi_get_edm_complex_sparse(elsi_handle handle_c,
double _Complex *edm);
void c_elsi_orthonormalize_ev_real(elsi_handle handle_c,
double *ovlp,
double *evec);
void c_elsi_orthonormalize_ev_complex(elsi_handle handle_c,
double _Complex *ovlp,
double _Complex *evec);
void c_elsi_extrapolate_dm_real(elsi_handle handle_c,
double *ovlp0,
double *ovlp1,
double *dm);
void c_elsi_extrapolate_dm_complex(elsi_handle handle_c,
double _Complex *ovlp0,
double _Complex *ovlp1,
double _Complex *dm);
void c_elsi_construct_dm_real(elsi_handle handle_c,
double *occ,
double *evec,
double *dm);
void c_elsi_construct_dm_complex(elsi_handle handle_c,
double *occ,
double _Complex *evec,
double _Complex *dm);
void c_elsi_construct_edm_real(elsi_handle handle_c,
double *occ,
double *eval,
double *evec,
double *edm);
void c_elsi_construct_edm_complex(elsi_handle handle_c,
double *occ,
double *eval,
double _Complex *evec,
double _Complex *edm);
void c_elsi_init_rw(elsi_rw_handle *handle_c,
int rw_task,
int parallel_mode,
......
This diff is collapsed.
This diff is collapsed.
......@@ -84,12 +84,12 @@ module ELSI_DATATYPE
integer(kind=i4) :: n_calls_all ! Total number of calls
! Overlap
logical :: ovlp_is_unit
logical :: ovlp_is_sing
logical :: check_sing
real(kind=r8) :: sing_tol
logical :: stop_sing ! Always stop if overlap is singular?
integer(kind=i4) :: n_good ! Number of nonsingular basis functions
logical :: unit_ovlp
logical :: ill_ovlp
logical :: ill_check
real(kind=r8) :: ill_tol
logical :: ill_abort ! Always stop if overlap is ill-conditioned?
integer(kind=i4) :: n_good ! Number of non-ill-conditioned basis functions
! Physics
real(kind=r8) :: n_electrons
......@@ -98,9 +98,9 @@ module ELSI_DATATYPE
integer(kind=i4) :: n_kpts
integer(kind=i4) :: n_states
integer(kind=i4) :: n_states_solve
integer(kind=i4) :: i_spin
integer(kind=i4) :: i_kpt
real(kind=r8) :: i_weight
integer(kind=i4) :: i_spin ! Local spin index
integer(kind=i4) :: i_kpt ! Local k-point index
real(kind=r8) :: i_wt ! Weight of local k-point
real(kind=r8) :: spin_degen
logical :: spin_is_set = .false.
real(kind=r8) :: ebs ! Band structure energy
......@@ -108,7 +108,7 @@ module ELSI_DATATYPE
logical :: edm_ready_cmplx = .false.
! Chemical potential
real(kind=r8) :: mu
real(kind=r8) :: mu ! Fermi level
real(kind=r8) :: ts ! Entropy
integer(kind=i4) :: mu_scheme
real(kind=r8) :: mu_width
......@@ -174,7 +174,6 @@ module ELSI_DATATYPE
integer(kind=i4) :: sips_np_per_slice
integer(kind=i4) :: sips_n_slices
integer(kind=i4) :: sips_slice_type
integer(kind=i4) :: sips_first_ev ! Index of first eigenvalue to compute
real(kind=r8) :: sips_buffer ! Buffer for adjusting interval
real(kind=r8) :: sips_interval(2)
real(kind=r8) :: sips_inertia_tol
......
This diff is collapsed.
......@@ -16,6 +16,7 @@ module ELSI
use ELSI_RW
use ELSI_SETUP
use ELSI_SOLVER
use ELSI_TOOLS
implicit none
......@@ -38,12 +39,15 @@ module ELSI
! Mutator
public :: elsi_set_output
public :: elsi_set_write_unit
public :: elsi_set_output_unit
public :: elsi_set_output_log
public :: elsi_set_output_tag
public :: elsi_set_uuid
public :: elsi_set_unit_ovlp
public :: elsi_set_zero_def
public :: elsi_set_sing_check
public :: elsi_set_sing_tol
public :: elsi_set_sing_stop
public :: elsi_set_illcond_check
public :: elsi_set_illcond_tol
public :: elsi_set_illcond_abort
public :: elsi_set_csc_blk
public :: elsi_set_elpa_solver
public :: elsi_set_elpa_n_single
......@@ -69,8 +73,8 @@ module ELSI
public :: elsi_set_sips_slice_type
public :: elsi_set_sips_buffer
public :: elsi_set_sips_inertia_tol
public :: elsi_set_sips_interval
public :: elsi_set_sips_first_ev
public :: elsi_set_sips_ev_min
public :: elsi_set_sips_ev_max
public :: elsi_set_ntpoly_method
public :: elsi_set_ntpoly_isr
public :: elsi_set_ntpoly_tol
......@@ -81,15 +85,12 @@ module ELSI
public :: elsi_set_mu_tol
public :: elsi_set_mu_spin_degen
public :: elsi_set_mu_mp_order
public :: elsi_set_output_log
public :: elsi_set_log_tag
public :: elsi_set_uuid
public :: elsi_get_pexsi_mu_min
public :: elsi_get_pexsi_mu_max
public :: elsi_get_initialized
public :: elsi_get_version
public :: elsi_get_datestamp
public :: elsi_get_n_sing
public :: elsi_get_n_illcond
public :: elsi_get_pexsi_mu_min
public :: elsi_get_pexsi_mu_max
public :: elsi_get_mu
public :: elsi_get_entropy
public :: elsi_get_edm_real
......@@ -97,6 +98,15 @@ module ELSI
public :: elsi_get_edm_real_sparse
public :: elsi_get_edm_complex_sparse
! Deprecated
public :: elsi_set_write_unit
public :: elsi_set_sing_check
public :: elsi_set_sing_tol
public :: elsi_set_sing_stop
public :: elsi_set_sips_interval
public :: elsi_set_log_tag
public :: elsi_get_n_sing
! Solver
public :: elsi_ev_real
public :: elsi_ev_complex
......@@ -106,6 +116,16 @@ module ELSI
public :: elsi_dm_complex
public :: elsi_dm_real_sparse
public :: elsi_dm_complex_sparse
! Auxiliary
public :: elsi_orthonormalize_ev_real
public :: elsi_orthonormalize_ev_complex
public :: elsi_extrapolate_dm_real
public :: elsi_extrapolate_dm_complex
public :: elsi_construct_dm_real
public :: elsi_construct_dm_complex
public :: elsi_construct_edm_real
public :: elsi_construct_edm_complex
public :: elsi_compute_mu_and_occ
public :: elsi_compute_entropy
......
......@@ -67,7 +67,6 @@ subroutine elsi_add_log(ph,bh,jh,dt0,t0,caller)
integer(kind=i4) :: solver_use
real(kind=r8) :: t1
real(kind=r8) :: t_total
character(len=20) :: solver_tag
character(len=29) :: dt_record
......@@ -118,11 +117,10 @@ subroutine elsi_add_log(ph,bh,jh,dt0,t0,caller)
solver_use = 6
end select
t_total = t1-t0
call fjson_start_object(jh)
call elsi_print_versioning(bh%uuid,jh)
call fjson_write_name_value(jh,"iteration",ph%n_calls+ph%n_calls_all)
call fjson_write_name_value(jh,"step",ph%n_calls)
call fjson_write_name_value(jh,"total_step",ph%n_calls+ph%n_calls_all)
if(caller(6:6) == "e") then
call fjson_write_name_value(jh,"output_type","EIGENSOLUTION")
......@@ -140,7 +138,7 @@ subroutine elsi_add_log(ph,bh,jh,dt0,t0,caller)
call fjson_write_name_value(jh,"user_tag",trim(bh%user_tag))
call fjson_write_name_value(jh,"start_datetime",dt0)
call fjson_write_name_value(jh,"record_datetime",dt_record)
call fjson_write_name_value(jh,"total_time",t_total)
call fjson_write_name_value(jh,"total_time",t1-t0)
call elsi_print_handle_summary(ph,bh,jh)
call fjson_write_name_value(jh,"solver_used",trim(solver_tag))
......@@ -212,13 +210,12 @@ subroutine elsi_print_handle_summary(ph,bh,jh)
if(ph%parallel_mode == MULTI_PROC) then
call fjson_write_name_value(jh,"parallel_mode","MULTI_PROC")
call fjson_write_name_value(jh,"n_procs",bh%n_procs)
call fjson_write_name_value(jh,"n_procs_all",bh%n_procs_all)
else if(ph%parallel_mode == SINGLE_PROC) then
call fjson_write_name_value(jh,"parallel_mode","SINGLE_PROC")
end if
call fjson_write_name_value(jh,"n_procs",bh%n_procs)
call fjson_write_name_value(jh,"n_procs_all",bh%n_procs_all)
if(ph%solver == ELPA_SOLVER) then
call fjson_write_name_value(jh,"solver_chosen","ELPA")
else if(ph%solver == NTPOLY_SOLVER) then
......@@ -348,19 +345,19 @@ subroutine elsi_print_pexsi_settings(ph,jh)
call fjson_write_name_value(jh,"pexsi_n_prow_pexsi",ph%pexsi_n_prow)
call fjson_write_name_value(jh,"pexsi_n_pcol_pexsi",ph%pexsi_n_pcol)
call fjson_write_name_value(jh,"pexsi_temperature",&
ph%pexsi_options%temperature)
ph%pexsi_options%temperature)
call fjson_write_name_value(jh,"pexsi_delta_e",ph%pexsi_options%deltaE)
call fjson_write_name_value(jh,"pexsi_gap",ph%pexsi_options%gap)
call fjson_write_name_value(jh,"pexsi_mu_min",ph%pexsi_options%muMin0)
call fjson_write_name_value(jh,"pexsi_mu_max",ph%pexsi_options%muMax0)
call fjson_write_name_value(jh,"pexsi_do_inertia",&
ph%pexsi_options%isInertiaCount)
ph%pexsi_options%isInertiaCount)
call fjson_write_name_value(jh,"pexsi_intertia_tol",&
ph%pexsi_options%muInertiaTolerance)
ph%pexsi_options%muInertiaTolerance)
call fjson_write_name_value(jh,"pexsi_tol",&
ph%pexsi_options%numElectronPEXSITolerance)
ph%pexsi_options%numElectronPEXSITolerance)
call fjson_write_name_value(jh,"pexsi_np_symbfact",&
ph%pexsi_options%npSymbFact)
ph%pexsi_options%npSymbFact)
call fjson_write_name_value(jh,"pexsi_reordering",ph%pexsi_options%ordering)
call fjson_finish_object(jh)
......@@ -485,14 +482,15 @@ subroutine elsi_final_print(ph,bh)
if(ph%matrix_format == BLACS_DENSE) then
write(msg,"(2X,A,A22)") "| Matrix format :","BLACS_DENSE"
call elsi_say(bh,msg)
else if(ph%matrix_format == PEXSI_CSC) then
write(msg,"(2X,A,A22)") "| Matrix format :","PEXSI_CSC"
call elsi_say(bh,msg)
else if(ph%matrix_format == SIESTA_CSC) then
write(msg,"(2X,A,A22)") "| Matrix format :","SIESTA_CSC"
call elsi_say(bh,msg)
end if
call elsi_say(bh,msg)
write(msg,"(2X,A,I22)") "| Number of basis functions :",ph%n_basis
call elsi_say(bh,msg)
......@@ -511,29 +509,32 @@ subroutine elsi_final_print(ph,bh)
if(ph%parallel_mode == MULTI_PROC) then
write(msg,"(2X,A,A22)") "| Parallel mode :","MULTI_PROC"
call elsi_say(bh,msg)
write(msg,"(2X,A,I22)") "| Number of MPI tasks :",bh%n_procs_all
call elsi_say(bh,msg)
else if(ph%parallel_mode == SINGLE_PROC) then
write(msg,"(2X,A,A22)") "| Parallel mode :","SINGLE_PROC"
call elsi_say(bh,msg)
end if
call elsi_say(bh,msg)
write(msg,"(2X,A,I22)") "| Number of MPI tasks :",bh%n_procs_all
call elsi_say(bh,msg)
if(ph%solver == ELPA_SOLVER) then
write(msg,"(2X,A,A22)") "| Solver requested :","ELPA"
call elsi_say(bh,msg)
else if(ph%solver == OMM_SOLVER) then
write(msg,"(2X,A,A22)") "| Solver requested :","libOMM"
call elsi_say(bh,msg)
else if(ph%solver == PEXSI_SOLVER) then
write(msg,"(2X,A,A22)") "| Solver requested :","PEXSI"
call elsi_say(bh,msg)
else if(ph%solver == SIPS_SOLVER) then
write(msg,"(2X,A,A22)") "| Solver requested :","SLEPc-SIPs"
call elsi_say(bh,msg)
else if(ph%solver == NTPOLY_SOLVER) then
write(msg,"(2X,A,A22)") "| Solver requested :","NTPoly"
call elsi_say(bh,msg)
end if
call elsi_say(bh,msg)
write(msg,"(2X,A,I22)") "| Number of ELSI calls :",ph%n_calls_all
call elsi_say(bh,msg)
......@@ -631,8 +632,8 @@ subroutine elsi_get_time(wtime)
read(ctime(8:10),"(I3)") val
millisecond = real(val,kind=r8)
wtime = day*24.0_r8*3600.0_r8+hour*3600.0_r8+minute*60.0_r8+second+&
millisecond*0.001_r8
wtime = day*86400.0_r8+hour*3600.0_r8+minute*60.0_r8+second&
+millisecond*0.001_r8
end subroutine
......@@ -713,6 +714,7 @@ subroutine elsi_init_random_seed()
implicit none
real(kind=r8) :: wtime
integer(kind=i4) :: i
integer(kind=i4) :: n
integer(kind=i4) :: dt(8)
......@@ -722,15 +724,14 @@ subroutine elsi_init_random_seed()
character(len=*), parameter :: caller = "elsi_init_random_seed"
call random_seed(size=n)
call date_and_time(values=dt)
call elsi_get_time(wtime)
t = int(wtime*1000.0_r8,kind=i8)
t = (dt(1)-1970)*365*24*60*60*1000+dt(2)*31*24*60*60*1000+&
dt(3)*24*60*60*1000+dt(5)*60*60*1000+dt(6)*60*1000+dt(7)*1000+dt(8)
call random_seed(size=n)
allocate(seed(n))
! Writting the array with seeds
do i = 1,n
seed(i) = lcg(t)
end do
......
This diff is collapsed.
This diff is collapsed.
......@@ -77,7 +77,7 @@ subroutine elsi_init_ntpoly(ph,bh)
n_pcol = np_per_group/n_prow
call ConstructNewProcessGrid(ph%nt_pgrid,bh%comm,n_prow,n_pcol,&
ph%nt_n_group)
ph%nt_n_group)
call MPI_Bcast(ph%nt_output,1,mpi_logical,0,bh%comm,ierr)
......@@ -120,7 +120,7 @@ subroutine elsi_solve_ntpoly(ph,bh,ham,ovlp,dm)
call ConstructRandomPermutation(ph%nt_perm,ovlp%logical_matrix_dimension)
ph%nt_options = SolverParameters_t(ph%nt_tol,ph%nt_filter,ph%nt_max_iter,&
ph%nt_output,ph%nt_perm)
ph%nt_output,ph%nt_perm)
! Overlap seems more difficult to converge
ph%nt_options%threshold = max(0.01_r8*ph%nt_filter,1.0e-15_r8)
......
This diff is collapsed.
......@@ -58,12 +58,12 @@ subroutine elsi_init_omm(ph,bh)
if(.not. ph%omm_started) then
call ms_scalapack_setup(bh%comm,bh%n_prow,"r",bh%blk,&
icontxt=bh%blacs_ctxt)
icontxt=bh%blacs_ctxt)
ph%omm_n_lrow = numroc(ph%omm_n_states,bh%blk,bh%my_prow,0,bh%n_prow)
call descinit(ph%omm_desc,ph%omm_n_states,ph%n_basis,bh%blk,bh%blk,0,0,&
bh%blacs_ctxt,max(1,ph%omm_n_lrow),ierr)
bh%blacs_ctxt,max(1,ph%omm_n_lrow),ierr)
ph%omm_started = .true.
end if
......@@ -115,7 +115,7 @@ subroutine elsi_solve_omm_real(ph,bh,ham,ovlp,coeff,dm)
call elsi_check_mpi(bh,"MPI_Allreduce",ierr,caller)
end if
if(.not. ph%ovlp_is_unit) then
if(.not. ph%unit_ovlp) then
if(ph%omm_flavor == 2) then
if(ph%omm_first .and. ph%elpa_first) then
call elsi_get_time(t0)
......@@ -154,8 +154,8 @@ subroutine elsi_solve_omm_real(ph,bh,ham,ovlp,coeff,dm)
call elsi_say(bh,msg)
call omm(ph%n_basis,ph%omm_n_states,ham_omm,ovlp_omm,new_ovlp,ph%ebs,dm_omm,&
.false.,0.0_r8,c_omm,coeff_ready,t_omm,0.0_r8,ph%omm_flavor,1,1,&
ph%omm_tol,ph%omm_output,.false.,"pddbc","lap")
.false.,0.0_r8,c_omm,coeff_ready,t_omm,0.0_r8,ph%omm_flavor,1,1,&
ph%omm_tol,ph%omm_output,.false.,"pddbc","lap")
dm = ph%spin_degen*dm
......@@ -205,8 +205,8 @@ subroutine elsi_compute_edm_omm_real(ph,bh,coeff,edm)
call m_register_pdbc(edm_omm,edm,bh%desc)
call omm(ph%n_basis,ph%omm_n_states,ham_omm,ovlp_omm,.false.,ph%ebs,edm_omm,&
.true.,0.0_r8,c_omm,.true.,t_omm,0.0_r8,ph%omm_flavor,1,1,&
ph%omm_tol,ph%omm_output,.false.,"pddbc","lap")
.true.,0.0_r8,c_omm,.true.,t_omm,0.0_r8,ph%omm_flavor,1,1,ph%omm_tol,&
ph%omm_output,.false.,"pddbc","lap")
edm = ph%spin_degen*edm
......@@ -267,7 +267,7 @@ subroutine elsi_solve_omm_cmplx(ph,bh,ham,ovlp,coeff,dm)
call elsi_check_mpi(bh,"MPI_Allreduce",ierr,caller)
end if
if(.not. ph%ovlp_is_unit) then
if(.not. ph%unit_ovlp) then
if(ph%omm_flavor == 2) then
if(ph%omm_first .and. ph%elpa_first) then
call elsi_get_time(t0)
......@@ -306,8 +306,8 @@ subroutine elsi_solve_omm_cmplx(ph,bh,ham,ovlp,coeff,dm)
call elsi_say(bh,msg)
call omm(ph%n_basis,ph%omm_n_states,ham_omm,ovlp_omm,new_ovlp,ph%ebs,dm_omm,&
.false.,0.0_r8,c_omm,coeff_ready,t_omm,0.0_r8,ph%omm_flavor,1,1,&
ph%omm_tol,ph%omm_output,.false.,"pzdbc","lap")
.false.,0.0_r8,c_omm,coeff_ready,t_omm,0.0_r8,ph%omm_flavor,1,1,&
ph%omm_tol,ph%omm_output,.false.,"pzdbc","lap")
dm = ph%spin_degen*dm
......@@ -357,8 +357,8 @@ subroutine elsi_compute_edm_omm_cmplx(ph,bh,coeff,edm)
call m_register_pdbc(edm_omm,edm,bh%desc)
call omm(ph%n_basis,ph%omm_n_states,ham_omm,ovlp_omm,.false.,ph%ebs,edm_omm,&
.true.,0.0_r8,c_omm,.true.,t_omm,0.0_r8,ph%omm_flavor,1,1,&
ph%omm_tol,ph%omm_output,.false.,"pzdbc","lap")
.true.,0.0_r8,c_omm,.true.,t_omm,0.0_r8,ph%omm_flavor,1,1,ph%omm_tol,&
ph%omm_output,.false.,"pzdbc","lap")
edm = ph%spin_degen*edm
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment