From 953cf046168faa1985d4490fcb2087e9f74d908e Mon Sep 17 00:00:00 2001 From: Kevin Gasperich Date: Mon, 24 Feb 2020 13:38:49 -0600 Subject: [PATCH] separated psi_coef_min/max from abs_psi_coef_min/max --- src/determinants/determinants.irp.f | 56 ++++++++++++++------- src/determinants/determinants_complex.irp.f | 24 --------- src/utils_complex/qp2-pbc-diff.txt | 7 --- 3 files changed, 39 insertions(+), 48 deletions(-) diff --git a/src/determinants/determinants.irp.f b/src/determinants/determinants.irp.f index a159b48e..cccfb34f 100644 --- a/src/determinants/determinants.irp.f +++ b/src/determinants/determinants.irp.f @@ -424,24 +424,46 @@ end BEGIN_PROVIDER [ double precision, psi_coef_max, (N_states) ] &BEGIN_PROVIDER [ double precision, psi_coef_min, (N_states) ] -&BEGIN_PROVIDER [ double precision, abs_psi_coef_max, (N_states) ] -&BEGIN_PROVIDER [ double precision, abs_psi_coef_min, (N_states) ] - implicit none - BEGIN_DOC - ! Max and min values of the coefficients - END_DOC - integer :: i - do i=1,N_states - psi_coef_min(i) = minval(psi_coef(:,i)) - psi_coef_max(i) = maxval(psi_coef(:,i)) - abs_psi_coef_min(i) = minval( dabs(psi_coef(:,i)) ) - abs_psi_coef_max(i) = maxval( dabs(psi_coef(:,i)) ) - call write_double(6,psi_coef_max(i), 'Max coef') - call write_double(6,psi_coef_min(i), 'Min coef') - call write_double(6,abs_psi_coef_max(i), 'Max abs coef') - call write_double(6,abs_psi_coef_min(i), 'Min abs coef') - enddo + implicit none + BEGIN_DOC + ! Max and min values of the coefficients + END_DOC + integer :: i + if (is_complex) then + print*,irp_here,' not implemented for complex' + stop -1 + endif + do i=1,N_states + psi_coef_min(i) = minval(psi_coef(:,i)) + psi_coef_max(i) = maxval(psi_coef(:,i)) + call write_double(6,psi_coef_max(i), 'Max coef') + call write_double(6,psi_coef_min(i), 'Min coef') + enddo +END_PROVIDER + + BEGIN_PROVIDER [ double precision, abs_psi_coef_max, (N_states) ] +&BEGIN_PROVIDER [ double precision, abs_psi_coef_min, (N_states) ] + implicit none + BEGIN_DOC + ! Max and min magnitudes of the coefficients + END_DOC + integer :: i + if (is_complex) then + do i=1,N_states + abs_psi_coef_min(i) = minval( cdabs(psi_coef_complex(:,i)) ) + abs_psi_coef_max(i) = maxval( cdabs(psi_coef_complex(:,i)) ) + call write_double(6,abs_psi_coef_max(i), 'Max abs coef') + call write_double(6,abs_psi_coef_min(i), 'Min abs coef') + enddo + else + do i=1,N_states + abs_psi_coef_min(i) = minval( dabs(psi_coef(:,i)) ) + abs_psi_coef_max(i) = maxval( dabs(psi_coef(:,i)) ) + call write_double(6,abs_psi_coef_max(i), 'Max abs coef') + call write_double(6,abs_psi_coef_min(i), 'Min abs coef') + enddo + endif END_PROVIDER diff --git a/src/determinants/determinants_complex.irp.f b/src/determinants/determinants_complex.irp.f index b7b13eff..76e4d9fc 100644 --- a/src/determinants/determinants_complex.irp.f +++ b/src/determinants/determinants_complex.irp.f @@ -180,30 +180,6 @@ subroutine sort_dets_by_det_search_key_complex(Ndet, det_in, coef_in, sze, det_o end -! TODO:complex? only keep abs max/min? real max/min? -! BEGIN_PROVIDER [ double precision, psi_coef_max, (N_states) ] -!&BEGIN_PROVIDER [ double precision, psi_coef_min, (N_states) ] -!&BEGIN_PROVIDER [ double precision, abs_psi_coef_max, (N_states) ] -!&BEGIN_PROVIDER [ double precision, abs_psi_coef_min, (N_states) ] -! implicit none -! BEGIN_DOC -! ! Max and min values of the coefficients -! END_DOC -! integer :: i -! do i=1,N_states -! psi_coef_min(i) = minval(psi_coef(:,i)) -! psi_coef_max(i) = maxval(psi_coef(:,i)) -! abs_psi_coef_min(i) = minval( dabs(psi_coef(:,i)) ) -! abs_psi_coef_max(i) = maxval( dabs(psi_coef(:,i)) ) -! call write_double(6,psi_coef_max(i), 'Max coef') -! call write_double(6,psi_coef_min(i), 'Min coef') -! call write_double(6,abs_psi_coef_max(i), 'Max abs coef') -! call write_double(6,abs_psi_coef_min(i), 'Min abs coef') -! enddo -! -!END_PROVIDER - - !==============================================================================! ! ! ! Read/write routines ! diff --git a/src/utils_complex/qp2-pbc-diff.txt b/src/utils_complex/qp2-pbc-diff.txt index 00891f32..61726ec2 100644 --- a/src/utils_complex/qp2-pbc-diff.txt +++ b/src/utils_complex/qp2-pbc-diff.txt @@ -14,13 +14,6 @@ determinants: (done) determinants_bitmasks.irp.f (****) determinants{_complex}.irp.f mostly done - could separate/combine some providers instead of copying - for psi_{det,coef}_sorted: - use same linked provider for psi_average_norm_contrib_sorted - psi_det_sorted_order - psi_det_sorted - different providers for psi_coef{,_complex}_sorted - need to figure out {,abs_}psi_coef_{min,max} need to modify ocaml for psi_coef_complex_qp_edit? save_wavefunction_specified? qp_edit save? (wrong for real?) (done) energy.irp.f