Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,9 @@ jobs:
PYTHON_V: 3.8

steps:
- name: Checkout code
- name: Checkout code
uses: actions/checkout@v4


- uses: actions/setup-python@v4
with:
Expand Down
7 changes: 5 additions & 2 deletions src/entries.f90
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module count_entries
contains

subroutine check_entries(index_mass, isotope_masses, exact_intensity, &
list_masses, intensity, count_mass, chrg)
list_masses, intensity, count_mass, chrg, int_masses)

integer :: loop, loop2, index_mass
integer :: count_mass
Expand All @@ -31,6 +31,7 @@ subroutine check_entries(index_mass, isotope_masses, exact_intensity, &
!real (wp) :: save_list(1000)

logical :: there = .true.
logical :: int_masses

xmass = 0
loop = 0
Expand All @@ -47,11 +48,13 @@ subroutine check_entries(index_mass, isotope_masses, exact_intensity, &
!> loop over the list from the isotope subroutine
outer: do loop2 = 1, index_mass
loop = 0

if (int_masses) isotope_masses(loop2) = int(isotope_masses(loop2))
!> loop over all entries of new (check) list
inner: do
loop = loop + 1
if (int_masses) list_masses(loop) = int(list_masses(loop))
mass_diff = abs(list_masses(loop) - isotope_masses(loop2))


if ( list_masses(loop) == 0.0_wp ) then
there = .false.
Expand Down
95 changes: 95 additions & 0 deletions src/entries.i90
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# 1 "/tmp1/coding/PlotMS/src/entries.f90"
module count_entries
use xtb_mctc_accuracy, only: wp
implicit none

contains

subroutine check_entries(index_mass, isotope_masses, exact_intensity, &
list_masses, intensity, count_mass, chrg, int_masses)

integer :: loop, loop2, index_mass
integer :: count_mass
integer :: sum_index, i
integer :: check

!real(wp) :: intensity(index_mass)
real(wp) :: xmass
real(wp) :: isotope_masses(index_mass)
real(wp) :: exact_intensity(index_mass)
real(wp) :: chrg

real(wp) :: list_masses(10000)
real(wp) :: intensity(10000)

real(wp) :: mass_diff

!real(wp), allocatable :: list_masses(:)
!real(wp), allocatable :: save_list(:)
!real(wp), allocatable :: save_int(:)
!real(wp), allocatable :: intensity(:)
!real (wp) :: save_list(1000)
!real (wp) :: save_list(1000)

logical :: there = .true.
logical :: int_masses

xmass = 0
loop = 0
loop2 = 0
check = 0
!count_mass = count_mass + index_mass
if(count_mass == 0)then
sum_index = index_mass
else
sum_index = count_mass + index_mass
endif


!> loop over the list from the isotope subroutine
outer: do loop2 = 1, index_mass
loop = 0
if (int_masses) isotope_masses(loop2) = int(isotope_masses(loop2))
!> loop over all entries of new (check) list
inner: do
loop = loop + 1
if (int_masses) list_masses(loop) = int(list_masses(loop))
mass_diff = abs(list_masses(loop) - isotope_masses(loop2))


if ( list_masses(loop) == 0.0_wp ) then
there = .false.
!write(*,*) 'NULL'
exit inner

!elseif ( list_masses(loop) == isotope_masses(loop2) ) then
elseif ( mass_diff < 1.0d0-10 .or. mass_diff == 0.0_wp) then
there = .true.
intensity(loop) = intensity(loop) + 1 * exact_intensity(loop2) &
* abs(chrg)
if (loop2 < index_mass ) cycle outer
if (loop2 == index_mass ) exit inner


!>> false if not in list, store
!elseif ( list_masses(loop) /= isotope_masses(loop2) ) then
elseif ( mass_diff > 1.0d0-10 ) then
there = .false.
if (loop == sum_index ) exit inner
endif
enddo inner


if ( .not. there ) then
count_mass = count_mass + 1
list_masses(count_mass) = isotope_masses(loop2)
intensity(count_mass) = intensity(count_mass) + 1 * exact_intensity(loop2) &
* abs(chrg)
endif

enddo outer


end subroutine check_entries

end module count_entries
8 changes: 4 additions & 4 deletions src/isotopes.f90
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ subroutine isotope(counter, mzmin, ntot, iat_save, maxatm, rnd, &
integer :: loop, index_mass
! integer :: tmp_intensity
integer :: store_int(1000)
integer :: mzmin
real(wp) :: mzmin
integer :: z_chrg

real(wp) :: rnd(nrnd,maxatm)
Expand Down Expand Up @@ -984,9 +984,9 @@ subroutine isotope(counter, mzmin, ntot, iat_save, maxatm, rnd, &
endif


enddo


enddo

allocate(exact_intensity(index_mass))
allocate(isotope_masses(index_mass))

Expand All @@ -1003,7 +1003,7 @@ subroutine isotope(counter, mzmin, ntot, iat_save, maxatm, rnd, &


! if no isotopes we take here the peak of the isotope pattern with the highest intensity
if ( no_isotopes ) then
if ( no_isotopes .and. index_mass .gt. 0 ) then
iipmax = maxval(exact_intensity)
indexipmax = maxloc(exact_intensity, dim = 1)
mipmax = isotope_masses(indexipmax)
Expand Down
Loading