Get code working with gfortran

development
Alex Selimov 4 years ago
parent 3e140df1a9
commit 51079148cc

@ -1,6 +1,7 @@
FC=ifort FC=gfortran
FFLAGS=-mcmodel=large -g -O0 -stand f08 -fpe0 -traceback -check bounds,uninit -warn all -implicitnone -no-wrap-margin -heap-arrays #FFLAGS=-mcmodel=large -g -O0 -stand f08 -fpe0 -traceback -check bounds,uninit -warn all -implicitnone -no-wrap-margin -heap-arrays
#FFLAGS=-mcmodel=large -Ofast -no-wrap-margin -heap-arrays #FFLAGS=-mcmodel=large -Ofast -no-wrap-margin -heap-arrays
FFLAGS=-mcmodel=large -O3 -g
MODES=mode_create.o mode_merge.o mode_convert.o MODES=mode_create.o mode_merge.o mode_convert.o
OPTIONS=opt_disl.o opt_group.o opt_orient.o opt_delete.o opt_deform.o opt_redef_box.o OPTIONS=opt_disl.o opt_group.o opt_orient.o opt_delete.o opt_deform.o opt_redef_box.o
OBJECTS=main.o elements.o io.o subroutines.o functions.o atoms.o call_mode.o box.o $(MODES) $(OPTIONS) call_option.o sorts.o OBJECTS=main.o elements.o io.o subroutines.o functions.o atoms.o call_mode.o box.o $(MODES) $(OPTIONS) call_option.o sorts.o

@ -198,64 +198,74 @@ module elements
!The default size we grow the !The default size we grow the
buffer_size = 1024 buffer_size = 1024
!Figure out the size of the atom and element arrays
ele_size = size(size_ele) !First check to make sure if it is allocated
atom_size = size(type_atom) if (allocated(size_ele)) then
!Figure out the size of the atom and element arrays
!Check if we need to grow the ele_size, if so grow all the variables ele_size = size(size_ele)
if ( n+ele_num > size(size_ele)) then
!Check if we need to grow the ele_size, if so grow all the variables
allocate(temp_int(n+ele_num+buffer_size)) if ( n+ele_num > size(size_ele)) then
temp_int(1:ele_size) = lat_ele
temp_int(ele_size+1:) = 0 allocate(temp_int(n+ele_num+buffer_size))
call move_alloc(temp_int, lat_ele) temp_int(1:ele_size) = lat_ele
temp_int(ele_size+1:) = 0
allocate(temp_int(n+ele_num+buffer_size)) call move_alloc(temp_int, lat_ele)
temp_int(1:ele_size) = tag_ele
temp_int(ele_size+1:) = 0 allocate(temp_int(n+ele_num+buffer_size))
call move_alloc(temp_int, tag_ele) temp_int(1:ele_size) = tag_ele
temp_int(ele_size+1:) = 0
allocate(temp_int(n+ele_num+buffer_size)) call move_alloc(temp_int, tag_ele)
temp_int(1:ele_size) = size_ele
temp_int(ele_size+1:) = 0 allocate(temp_int(n+ele_num+buffer_size))
call move_alloc(temp_int, size_ele) temp_int(1:ele_size) = size_ele
temp_int(ele_size+1:) = 0
allocate(temp_int(n+ele_num+buffer_size)) call move_alloc(temp_int, size_ele)
temp_int(1:ele_size) = lat_ele
temp_int(ele_size+1:) = 0 allocate(temp_int(n+ele_num+buffer_size))
call move_alloc(temp_int, sbox_ele) temp_int(1:ele_size) = lat_ele
temp_int(ele_size+1:) = 0
allocate(char_temp(n+ele_num+buffer_size)) call move_alloc(temp_int, sbox_ele)
char_temp(1:ele_size) = type_ele
call move_alloc(char_temp, type_ele) allocate(char_temp(n+ele_num+buffer_size))
char_temp(1:ele_size) = type_ele
allocate(temp_ele_real(3, max_basisnum, max_ng_node, n+ele_num+buffer_size)) call move_alloc(char_temp, type_ele)
temp_ele_real(:,:,:,1:ele_size) = r_node
temp_ele_real(:,:,:,ele_size+1:) = 0.0_dp allocate(temp_ele_real(3, max_basisnum, max_ng_node, n+ele_num+buffer_size))
call move_alloc(temp_ele_real, r_node) temp_ele_real(:,:,:,1:ele_size) = r_node
temp_ele_real(:,:,:,ele_size+1:) = 0.0_dp
call move_alloc(temp_ele_real, r_node)
end if
else
call alloc_ele_arrays(n,0)
end if end if
!Now grow atom arrays if needed !Now grow atom arrays if needed
if (m+atom_num > atom_size) then if (allocated(type_atom)) then
allocate(temp_int(m+atom_num+buffer_size)) atom_size = size(type_atom)
temp_int(1:atom_size) = type_atom if (m+atom_num > atom_size) then
temp_int(atom_size+1:) = 0 allocate(temp_int(m+atom_num+buffer_size))
call move_alloc(temp_int, type_atom) temp_int(1:atom_size) = type_atom
temp_int(atom_size+1:) = 0
allocate(temp_int(m+atom_num+buffer_size)) call move_alloc(temp_int, type_atom)
temp_int(1:atom_size) = tag_atom
temp_int(atom_size+1:) = 0 allocate(temp_int(m+atom_num+buffer_size))
call move_alloc(temp_int, tag_atom) temp_int(1:atom_size) = tag_atom
temp_int(atom_size+1:) = 0
allocate(temp_int(m+atom_num+buffer_size)) call move_alloc(temp_int, tag_atom)
temp_int(1:atom_size) = sbox_atom
temp_int(atom_size+1:) = 0 allocate(temp_int(m+atom_num+buffer_size))
call move_alloc(temp_int, sbox_atom) temp_int(1:atom_size) = sbox_atom
temp_int(atom_size+1:) = 0
allocate(temp_real(3,m+atom_num+buffer_size)) call move_alloc(temp_int, sbox_atom)
temp_real(:,1:atom_size) = r_atom
temp_real(:, atom_size+1:) = 0.0_dp allocate(temp_real(3,m+atom_num+buffer_size))
call move_alloc(temp_real, r_atom) temp_real(:,1:atom_size) = r_atom
temp_real(:, atom_size+1:) = 0.0_dp
call move_alloc(temp_real, r_atom)
end if
else
call alloc_ele_arrays(0,m)
end if end if
end subroutine end subroutine
@ -669,17 +679,17 @@ module elements
esize = size_ele(ie) esize = size_ele(ie)
select case(iface) select case(iface)
case(1) case(1)
pos = (/ real(esize-1,dp)/2.0_dp, real(esize-1,dp)/2.0_dp, -10.0_dp**-2.0_dp /) pos = (/ real(esize-1,dp)/2.0_dp, real(esize-1,dp)/2.0_dp, -10.0_dp**(-2.0_dp) /)
case(2) case(2)
pos = (/ real(esize-1,dp)/2.0_dp, -10.0_dp**-2.0_dp, real(esize-1,dp)/2.0_dp /) pos = (/ real(esize-1,dp)/2.0_dp, -10.0_dp**(-2.0_dp), real(esize-1,dp)/2.0_dp /)
case(3) case(3)
pos = (/ (esize-1)+10.0_dp**-2.0_dp, real(esize-1,dp)/2.0_dp, real(esize-1,dp)/2.0_dp /) pos = (/ (esize-1)+10.0_dp**(-2.0_dp), real(esize-1,dp)/2.0_dp, real(esize-1,dp)/2.0_dp /)
case(4) case(4)
pos = (/ real(esize-1,dp)/2.0_dp, (esize-1)+10.0_dp**-2.0_dp, real(esize-1,dp)/2.0_dp /) pos = (/ real(esize-1,dp)/2.0_dp, (esize-1)+10.0_dp**(-2.0_dp), real(esize-1,dp)/2.0_dp /)
case(5) case(5)
pos = (/ -10.0_dp**-2.0_dp, real(esize-1,dp)/2.0_dp, real(esize-1,dp)/2.0_dp /) pos = (/ -10.0_dp**(-2.0_dp), real(esize-1,dp)/2.0_dp, real(esize-1,dp)/2.0_dp /)
case(6) case(6)
pos = (/ real(esize-1,dp)/2.0_dp, real(esize-1,dp)/2.0_dp, (esize-1)+10.0_dp**-2.0_dp /) pos = (/ real(esize-1,dp)/2.0_dp, real(esize-1,dp)/2.0_dp, (esize-1)+10.0_dp**(-2.0_dp) /)
end select end select
!Now transform it to real space and adjust it to the position of the element in the first node. !Now transform it to real space and adjust it to the position of the element in the first node.

@ -135,7 +135,7 @@ module mode_create
case('bcc') case('bcc')
call build_with_rhomb(box_lat_vert, bcc_mat) call build_with_rhomb(box_lat_vert, bcc_mat)
case default case default
print *, "Element type ", trim(adjustl(element_type)), " not accepted in mode create, please specify a supported ", & print *, "Element type ", trim(adjustl(element_type)), " not accepted in mode create, please specify a supported ",&
"element type" "element type"
stop 3 stop 3
end select end select

@ -300,7 +300,7 @@ module opt_group
case('elements','element') case('elements','element')
if (group_ele_num > 0) then if (group_ele_num > 0) then
print *, "Elements specifier used more than once in group id command with type both, either use type ", & print *, "Elements specifier used more than once in group id command with type both, either use type ",&
"elements or include atoms identifier" "elements or include atoms identifier"
stop 3 stop 3
@ -824,7 +824,8 @@ module opt_group
!Add the element, for the sbox we just set it to the same sbox that we get the orientation !Add the element, for the sbox we just set it to the same sbox that we get the orientation
!from. In this case it is from the sbox of the first atom in the group. !from. In this case it is from the sbox of the first atom in the group.
new_ele = new_ele+1 new_ele = new_ele+1
call add_element(0,remesh_ele_type, working_esize, ilat, sbox_atom(atom_index(1)),r_new_node) call add_element(0,remesh_ele_type, working_esize, ilat, &
sbox_atom(atom_index(1)),r_new_node)
end if end if
end if end if

Loading…
Cancel
Save