diff --git a/src/io.f90 b/src/io.f90 index a81f67c..6519862 100644 --- a/src/io.f90 +++ b/src/io.f90 @@ -509,7 +509,7 @@ module io character(len=100), intent(in) :: file integer :: interp_max, i, j, inod, ibasis, ip, unique_index(50), unique_size(50), unique_type(50), unique_num, & etype - real(kind=dp) :: box_vec(3), masses(10) + real(kind=dp) :: box_vec(3) 1 format('time' / i16, f23.15) 2 format('number of elements' / i16) @@ -548,9 +548,6 @@ module io write(11,3) node_num write(11,19) max_ng_node, max_basisnum write(11,5) atom_num - do i = 1, atom_types - call atommass(type_to_name(i),masses(i)) - end do write(11,*) "masses: " write(11, *) (masses(i), i = 1, atom_types) write(11,7) box_bc(1:1), box_bc(2:2), box_bc(3:3) @@ -631,7 +628,7 @@ module io write(11,*) box_bd(:) !Write the number of atom types in the current model and all of their names - write(11,*) atom_types, (type_to_name(i)//' ', i=1, atom_types) + write(11,*) atom_types, (masses(i), i=1, atom_types) !Write the number of lattice_types, basisnum and number of nodes for each lattice type write(11,*) lattice_types, (basisnum(i), i = 1, lattice_types), (ng_node(i), i = 1, lattice_types) !Now for every lattice type write the basis atom types @@ -754,9 +751,8 @@ module io new_type_to_type(10), new_lattice_types, new_lattice_map(10), btype_map(10,10), bnum_map(10), & node_map(10) character(len=100) :: etype - real(kind=dp) :: r(3), newdisplace(3), lapa_map(10) + real(kind=dp) :: r(3), newdisplace(3), lapa_map(10), new_masses(10) real(kind=dp), allocatable :: r_innode(:,:,:) - character(len = 2) :: new_type_to_name(10) !First open the file open(unit=11, file=trim(adjustl(file)), action='read',position='rewind') @@ -777,11 +773,11 @@ module io call grow_box(temp_box_bd) !Read in the number of atom types and all their names - read(11, *) new_atom_types, (new_type_to_name(i), i = 1, new_atom_types) + read(11, *) new_atom_types, (new_masses(i), i = 1, new_atom_types) !Now fit these into the global list of atom types, after this new_type_to_type is the actual global !type of the atoms within this file do i = 1, new_atom_types - call add_atom_type(new_type_to_name(i), new_type_to_type(i), all_new) + call add_atom_type(new_masses(i), new_type_to_type(i), all_new) end do !Read the number of lattice types, basisnum, and number of nodes for each lattice type read(11,*) new_lattice_types, (bnum_map(i), i = 1, new_lattice_types),(node_map(i), i =1, new_lattice_types) @@ -893,8 +889,7 @@ module io !Read define atom_types by mass print *, j do i = 1, j - call realatomspecies(atomic_masses(i), atomic_element) - call add_atom_type(atomic_element, atom_type_map(i), all_new) + call add_atom_type(atomic_masses(i), atom_type_map(i), all_new) print *, i, atom_type_map(i) end do @@ -1029,8 +1024,7 @@ module io !Read define atom_types by mass do i = 1, j - call realatomspecies(atomic_masses(i), atomic_element) - call add_atom_type(atomic_element, atom_type_map(i), all_new) + call add_atom_type(atomic_masses(i), atom_type_map(i), all_new) end do if(in_atoms > 0 ) then @@ -1152,8 +1146,7 @@ module io !Read atomic masses do i = 1, type_in read(11,*) j, mass - call realatomspecies(mass, atom_species) - call add_atom_type(atom_species, type_map(i), all_new) + call add_atom_type(mass, type_map(i), all_new) end do !Read useless info @@ -1226,8 +1219,7 @@ module io !Read atomic masses do i = 1, type_in read(11,*) j, mass, textholder - call realatomspecies(mass, atom_species) - call add_atom_type(atom_species, type_map(i), all_new) + call add_atom_type(mass, type_map(i), all_new) end do !Read useless info @@ -1311,6 +1303,7 @@ module io integer :: i, j,arglen, arg_pos, ntypes character(len=100) :: textholder + real(kind=dp) :: mass arg_pos = apos + 1 call get_command_argument(arg_pos, textholder, arglen) @@ -1320,7 +1313,8 @@ module io do i=1,ntypes arg_pos = arg_pos + 1 call get_command_argument(arg_pos, textholder, arglen) - call add_atom_type(textholder, j) + call atommass(textholder, mass) + call add_atom_type(mass, j) end do return diff --git a/src/mode_create.f90 b/src/mode_create.f90 index 34e1bf0..1f21393 100644 --- a/src/mode_create.f90 +++ b/src/mode_create.f90 @@ -186,6 +186,7 @@ module mode_create character(len=100) :: orient_string character(len=2) :: btype logical :: isortho, isrighthanded, bool + real(kind=dp) :: mass !Pull out all required positional arguments @@ -265,7 +266,8 @@ module mode_create do i = 1, max_basisnum call get_command_argument(arg_pos, btype) arg_pos = arg_pos+1 - call add_atom_type(btype, basis_type(i,1)) + call atommass(btype, mass) + call add_atom_type(mass, basis_type(i,1)) do j = 1, 3 call get_command_argument(arg_pos, textholder) read(textholder, *) basis_pos(j,i) @@ -334,7 +336,8 @@ module mode_create if (basisnum(1) == 0) then max_basisnum = 1 basisnum(1) = 1 - call add_atom_type(name, basis_type(1,1)) !If basis command not defined then we use name as the atom_name + call atommass(name, mass) + call add_atom_type(mass, basis_type(1,1)) !If basis command not defined then we use name as the atom_name basis_pos(:,1) = 0.0_dp end if @@ -371,6 +374,8 @@ module mode_create numlatpoints = numlatpoints*(bd_in_lat(2*i)-bd_in_lat(2*i-1)) end do + if(numlatpoints < 0) stop "number of lattice points is negative, this can occur if the model is too big" + !Allocate the correct lat variable select case(esize) !Atomistics