From c4a2b1f9a0e5819c5451beb0ca9faf73d1e9524f Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 19 Dec 2017 18:28:53 +0100 Subject: [PATCH] Removed useless file --- data/list_element.txt | 56 -------------------------------- plugins/Symmetry/aos.irp.f | 57 +++++++++++++++++++++------------ plugins/Symmetry/find_sym.irp.f | 25 +++++++++------ 3 files changed, 52 insertions(+), 86 deletions(-) delete mode 100644 data/list_element.txt diff --git a/data/list_element.txt b/data/list_element.txt deleted file mode 100644 index 2a9733e6..00000000 --- a/data/list_element.txt +++ /dev/null @@ -1,56 +0,0 @@ - 0 X Dummy 0.000000 - 1 H Hydrogen 1.007900 - 2 He Helium 4.002600 - 3 Li Lithium 6.941000 - 4 Be Beryllium 9.012180 - 5 B Boron 10.810000 - 6 C Carbon 12.011000 - 7 N Nitrogen 14.006700 - 8 O Oxygen 15.999400 - 9 F Fluorine 18.998403 - 10 Ne Neon 20.179000 - 11 Na Sodium 22.989770 - 12 Mg Magnesium 24.305000 - 13 Al Aluminum 26.981540 - 14 Si Silicon 28.085500 - 15 P Phosphorus 30.973760 - 16 S Sulfur 32.060000 - 17 Cl Chlorine 35.453000 - 18 Ar Argon 39.948000 - 19 K Potassium 39.098300 - 20 Ca Calcium 40.080000 - 21 Sc Scandium 44.955900 - 22 Ti Titanium 47.900000 - 23 V Vanadium 50.941500 - 24 Cr Chromium 51.996000 - 25 Mn Manganese 54.938000 - 26 Fe Iron 55.933200 - 27 Co Cobalt 58.933200 - 28 Ni Nickel 58.700000 - 29 Cu Copper 63.546000 - 30 Zn Zinc 65.380000 - 31 Ga Gallium 69.720000 - 32 Ge Germanium 72.590000 - 33 As Arsenic 74.921600 - 34 Se Selenium 78.960000 - 35 Br Bromine 79.904000 - 36 Kr Krypton 83.800000 - 37 Rb Rubidium 85.467800 - 38 Sr Strontium 87.620000 - 39 Y Yttrium 88.905840 - 40 Zr Zirconium 91.224000 - 41 Nb Niobium 92.906370 - 42 Mo Molybdenum 95.950000 - 43 Tc Technetium 98.000000 - 44 Ru Ruthenium 101.070000 - 45 Rh Rhodium 102.905500 - 46 Pd Palladium 106.420000 - 47 Ag Silver 107.868200 - 48 Cd Cadmium 112.414000 - 49 In Indium 114.818000 - 50 Sn Tin 118.710000 - 51 Sb Antimony 121.760000 - 52 Te Tellurium 127.600000 - 53 I Iodine 126.904470 - 54 Xe Xenon 131.293000 - 78 Pt Platinum 195.084000 diff --git a/plugins/Symmetry/aos.irp.f b/plugins/Symmetry/aos.irp.f index e0aade1e..a20c1a08 100644 --- a/plugins/Symmetry/aos.irp.f +++ b/plugins/Symmetry/aos.irp.f @@ -24,9 +24,13 @@ subroutine generate_sym_coord(n_sym_points,result) END_DOC integer :: i, xyz - call random_number(result) + do i=1,n_sym_points + call random_number(result(1,i)) + call random_number(result(2,i)) + call random_number(result(3,i)) + enddo do xyz=1,3 - result(xyz,:) = sym_box(xyz,1) + result(xyz,:) * (sym_box(xyz,2)-sym_box(xyz,1)) + result(xyz,1:n_sym_points) = sym_box(xyz,1) + result(xyz,:) * (sym_box(xyz,2)-sym_box(xyz,1)) enddo end @@ -43,27 +47,35 @@ subroutine compute_sym_ao_values(sym_points, n_sym_points, result) integer :: i, j double precision :: x, y, z double precision :: x2, y2, z2 + integer :: k result (:,:) = 0.d0 +print *, sym_molecule_rotation_inv +print *, '' +print *, sym_molecule_rotation +stop do j=1,ao_num do i=1,n_sym_points - x = sym_points(1,i) - nucl_coord_sym_transp(1,ao_nucl(j)) - y = sym_points(2,i) - nucl_coord_sym_transp(2,ao_nucl(j)) - z = sym_points(3,i) - nucl_coord_sym_transp(3,ao_nucl(j)) - x2 = x*sym_molecule_rotation_inv(1,1) + y*sym_molecule_rotation_inv(2,1) + z*sym_molecule_rotation_inv(3,1) - y2 = x*sym_molecule_rotation_inv(1,2) + y*sym_molecule_rotation_inv(2,2) + z*sym_molecule_rotation_inv(3,2) - z2 = x*sym_molecule_rotation_inv(1,3) + y*sym_molecule_rotation_inv(2,3) + z*sym_molecule_rotation_inv(3,3) - x = x2**ao_power(j,1) - y = y2**ao_power(j,2) - z = z2**ao_power(j,3) - result(i,j) = x*y*z*exp(-(x*x+y*y+z*z)) -! result(i,j) = x*y*z -! if (result(i,j) > 0.d0) then -! result(i,j) = 1.d0 -! else if (result(i,j) < 0.d0) then -! result(i,j) = -1.d0 -! else -! result(i,j) = 0.d0 -! endif + x2 = sym_points(1,i) + y2 = sym_points(2,i) + z2 = sym_points(3,i) + x = x2*sym_molecule_rotation_inv(1,1) + y2*sym_molecule_rotation_inv(2,1) + z2*sym_molecule_rotation_inv(3,1) + y = x2*sym_molecule_rotation_inv(1,2) + y2*sym_molecule_rotation_inv(2,2) + z2*sym_molecule_rotation_inv(3,2) + z = x2*sym_molecule_rotation_inv(1,3) + y2*sym_molecule_rotation_inv(2,3) + z2*sym_molecule_rotation_inv(3,3) + x = x - nucl_coord_transp(1,ao_nucl(j)) + y = y - nucl_coord_transp(2,ao_nucl(j)) + z = z - nucl_coord_transp(3,ao_nucl(j)) + x2 = x*x + y*y + z*z + result(i,j) = 0.d0 + do k=1,ao_prim_num(j) + result(i,j) += ao_coef_normalized_ordered_transp(k,j)*exp(-ao_expo_ordered_transp(k,j)*x2) + enddo +print *, real(x), ao_power(j,1), real(y), ao_power(j,2), real(z), ao_power(j,3) + x = x**ao_power(j,1) + y = y**ao_power(j,2) + z = z**ao_power(j,3) +print *, result(i,j) + result(i,j) = x*y*z*result(i,j) + print *, result(i,j) enddo enddo @@ -81,6 +93,11 @@ subroutine compute_sym_mo_values(sym_points, n_sym_points, result) double precision, allocatable :: tmp(:,:) allocate(tmp(n_sym_points,ao_num)) call compute_sym_ao_values(sym_points,n_sym_points,tmp) +integer :: i +do i=1,ao_num + print *, tmp(:,i) +enddo +stop call dgemm('N','N',n_sym_points,mo_tot_num,ao_num, & 1.d0, tmp,size(tmp,1), mo_coef, size(mo_coef,1), & 0.d0, result,size(result,1)) diff --git a/plugins/Symmetry/find_sym.irp.f b/plugins/Symmetry/find_sym.irp.f index 95bb4e6c..c7e2ba37 100644 --- a/plugins/Symmetry/find_sym.irp.f +++ b/plugins/Symmetry/find_sym.irp.f @@ -369,7 +369,7 @@ BEGIN_PROVIDER [ integer, mo_sym, (mo_tot_num) ] double precision :: sym_operations_on_mos(mo_tot_num) logical :: possible_irrep(n_irrep,mo_tot_num) - n_sym_points = 10000 + n_sym_points = 10 allocate(val(n_sym_points,mo_tot_num,2), sym_points(3,n_sym_points), ref_points(3,n_sym_points)) call generate_sym_coord(n_sym_points,ref_points) @@ -402,10 +402,12 @@ BEGIN_PROVIDER [ integer, mo_sym, (mo_tot_num) ] call sym_apply_diagonal_reflexion(molecule_principal_axis,ref_points(1,ipoint),sym_points(1,ipoint)) enddo else if (sym_operation(iop) == 'C2''') then + angle = 2.d0 do ipoint=1,n_sym_points call sym_apply_rotation(angle,molecule_secondary_axis,ref_points(1,ipoint),sym_points(1,ipoint)) enddo else if (sym_operation(iop) == 'C2"') then + angle = 2.d0 do ipoint=1,n_sym_points call sym_apply_rotation(angle,molecule_ternary_axis,ref_points(1,ipoint),sym_points(1,ipoint)) enddo @@ -414,9 +416,12 @@ BEGIN_PROVIDER [ integer, mo_sym, (mo_tot_num) ] if (sym_operation(iop)(l:l) == '^') exit enddo read(sym_operation(iop)(2:l-1), *) iangle - l=1 - read(sym_operation(iop)(l+1:), *, err=10, end=10) l - 10 continue + if (l == len(sym_operation(iop))+1) then + l=1 + else + read(sym_operation(iop)(l+1:), *, err=10, end=10) l + 10 continue + endif angle = dble(iangle)/(dble(l)) if (sym_operation(iop)(1:1) == 'C') then do ipoint=1,n_sym_points @@ -432,23 +437,23 @@ BEGIN_PROVIDER [ integer, mo_sym, (mo_tot_num) ] call compute_sym_mo_values(sym_points,n_sym_points,val(1,1,1)) print *, sym_operation(iop) + double precision :: icount do imo=1,mo_tot_num sym_operations_on_mos(imo) = 0.d0 + icount = 0 do ipoint=1,n_sym_points double precision :: x + if (dabs(val(ipoint,imo,1)) < 1.d-5) cycle + icount += 1.d0 x = val(ipoint,imo,1)/val(ipoint,imo,2) if (dabs(x) > 1.d0) then x = 1.d0/x endif sym_operations_on_mos(imo) += x enddo - sym_operations_on_mos(imo) *= 1.d0/n_sym_points + sym_operations_on_mos(imo) *= 1.d0/icount print *, iop, imo, sym_operations_on_mos(imo) - if (dabs(sym_operations_on_mos(imo)-1.d0) < 1.d-2) then - sym_operations_on_mos(imo)=1.d0 - else if (dabs(sym_operations_on_mos(imo)+1.d0) < 1.d-2) then - sym_operations_on_mos(imo)=-1.d0 - endif + print *, val(:,imo,1) do i=1,n_irrep if (character_table(i,iop) /= sym_operations_on_mos(imo)) then possible_irrep(i,imo) = .False.