diff --git a/src/opt_group.f90 b/src/opt_group.f90 index 384b369..603bf6e 100644 --- a/src/opt_group.f90 +++ b/src/opt_group.f90 @@ -606,7 +606,7 @@ module opt_group !This command is used to refine the group to full atomistics integer :: i, j, ie, type_interp(max_basisnum*max_esize**3), add_atom_num, orig_atom_num, m, n, o, esize, & - ele(3,8), new_ele_num, ibasis, inod, vlat(3), nump_ele + ele(3,8), new_ele_num, ibasis, inod, vlat(3), nump_ele, added_points real(kind=dp) :: r_interp(3, max_basisnum*max_esize**3), rfill(3,max_basisnum,max_ng_node), ravg(3), ratom(3,max_basisnum) logical :: lat_points(max_esize, max_esize, max_esize) @@ -623,7 +623,6 @@ module opt_group lat_points(1:size_ele(ie),1:size_ele(ie),1:size_ele(ie)) = .true. !Now calculate the number of elemets which are available for remeshing - call interpolate_atoms(type_ele(ie), size_ele(ie), lat_ele(ie), r_node(:,:,:,ie), type_interp, r_interp) nump_ele = size_ele(ie)**3 do o =1, size_ele(ie) do n = 1, size_ele(ie) @@ -644,6 +643,7 @@ module opt_group !Now start the remeshing loop for the element esize = size_ele(ie) - 2 + added_points=0 do while(esize > min_efillsize) if(nump_ele < min_efillsize**3) then exit @@ -667,6 +667,7 @@ module opt_group lat_points(m:m+esize-1, n:n+esize-1, o:o+esize-1) = .false. call add_element(0,type_ele(ie), esize, lat_ele(ie), sbox_ele(ie), rfill) new_ele_num = new_ele_num + 1 + added_points = added_points + esize**3 end if end do latloop @@ -676,20 +677,25 @@ module opt_group end if end do !Now add the leftover lattice points as atoms - do o = 1, size_ele(i) - do n = 1, size_ele(i) - do m = 1, size_ele(i) + do o = 1, size_ele(ie) + do n = 1, size_ele(ie) + do m = 1, size_ele(ie) if(lat_points(m,n,o)) then call get_interp_pos(m,n,o, ie, ratom(:,:)) do ibasis = 1, basisnum(lat_ele(ie)) - call apply_periodic(r_atom(:,ibasis)) + call apply_periodic(ratom(:,ibasis)) call add_atom(0, basis_type(ibasis,lat_ele(ie)), sbox_ele(ie), ratom(:,ibasis)) + added_points=added_points + 1 end do end if end do end do end do + if (added_points /= (size_ele(ie)**3)) then + + print *, "Element ", ie, " is refined incorrectly in refinefill" + end if end do !Once all atoms are added we delete all of the elements call delete_elements(group_ele_num, element_index)