@ -22,6 +22,8 @@ module opt_group
! Main calling function for the group option
integer , intent ( inout ) :: arg_pos
print * , '-----------------------Option Group-------------------------'
group_ele_num = 0
group_atom_num = 0
remesh_size = 0
@ -117,6 +119,9 @@ module opt_group
select case ( trim ( adjustl ( shape ) ) )
case ( 'block' )
print * , "Group has block shape with boundaries: " , block_bd
! Allocate variables to arbitrary size
allocate ( element_index ( 1024 ) , atom_index ( 1024 ) )
! Check the type to see whether we need to find the elements within the group
@ -162,6 +167,8 @@ module opt_group
end do
end select
end select
print * , 'Group contains ' , group_ele_num , " elements and " , group_atom_num , " atoms."
end subroutine get_group
subroutine displace_group
@ -169,6 +176,8 @@ module opt_group
integer :: i , inod , ibasis
print * , "Elements/atoms in group displaced by " , disp_vec
! Displace atoms
do i = 1 , group_atom_num
r_atom ( : , atom_index ( i ) ) = r_atom ( : , atom_index ( i ) ) + disp_vec
@ -207,7 +216,7 @@ module opt_group
subroutine remesh_group
! This command is used to remesh the group to a desired element size
integer :: i , j , ie , type_interp ( max_basisnum * max_esize ** 3 ) , add_atom_num
integer :: i , j , ie , type_interp ( max_basisnum * max_esize ** 3 ) , add_atom_num , orig_atom_num
real ( kind = dp ) :: r_interp ( 3 , max_basisnum * max_esize ** 3 )
! Refining to atoms and remeshing to elements are different processes so check which code we need to run
@ -216,6 +225,7 @@ module opt_group
! Refining to atoms
case ( 2 )
if ( group_ele_num > 0 ) then
orig_atom_num = atom_num
! Estimate number of atoms we are adding , this doesn ' t have to be exact
add_atom_num = group_ele_num * basisnum ( lat_ele ( element_index ( 1 ) ) ) * size_ele ( element_index ( 1 ) ) ** 3
call grow_ele_arrays ( 0 , add_atom_num )
@ -236,6 +246,8 @@ module opt_group
! Once all atoms are added we delete all of the elements
call delete_elements ( group_ele_num , element_index )
print * , group_ele_num , " elements of group are refined to " , atom_num - orig_atom_num , " atoms."
end if
! Remeshing to elements , currently not available
case default