|
|
@ -150,7 +150,7 @@ module opt_disl
|
|
|
|
log(r(ix)**2.0_dp + r(iy)**2.0_dp) &
|
|
|
|
log(r(ix)**2.0_dp + r(iy)**2.0_dp) &
|
|
|
|
+ (r(ix)**2.0_dp - r(iy)**2.0_dp)/(4.0_dp*(1.0_dp-poisson)&
|
|
|
|
+ (r(ix)**2.0_dp - r(iy)**2.0_dp)/(4.0_dp*(1.0_dp-poisson)&
|
|
|
|
*(r(ix)**2.0_dp+r(iy)**2.0_dp)))
|
|
|
|
*(r(ix)**2.0_dp+r(iy)**2.0_dp)))
|
|
|
|
disp(3) = bs/(2.0_dp*pi) * actan
|
|
|
|
disp(iz) = bs/(2.0_dp*pi) * actan
|
|
|
|
|
|
|
|
|
|
|
|
r_atom(:,i) = r_atom(:,i) + disp
|
|
|
|
r_atom(:,i) = r_atom(:,i) + disp
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -175,7 +175,7 @@ module opt_disl
|
|
|
|
log(r(ix)**2.0_dp + r(iy)**2.0_dp) &
|
|
|
|
log(r(ix)**2.0_dp + r(iy)**2.0_dp) &
|
|
|
|
+ (r(ix)**2.0_dp - r(iy)**2.0_dp)/(4.0_dp*(1.0_dp-poisson)&
|
|
|
|
+ (r(ix)**2.0_dp - r(iy)**2.0_dp)/(4.0_dp*(1.0_dp-poisson)&
|
|
|
|
*(r(ix)**2.0_dp+r(iy)**2.0_dp)))
|
|
|
|
*(r(ix)**2.0_dp+r(iy)**2.0_dp)))
|
|
|
|
disp(3) = bs/(2.0_dp*pi) * actan
|
|
|
|
disp(iz) = bs/(2.0_dp*pi) * actan
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r_node(:,ibasis,inod,i) = r_node(:,ibasis,inod,i) + disp
|
|
|
|
r_node(:,ibasis,inod,i) = r_node(:,ibasis,inod,i) + disp
|
|
|
@ -184,8 +184,6 @@ module opt_disl
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
!Now make sure all atoms are wrapped back into the simulation cell
|
|
|
|
|
|
|
|
call wrap_atoms
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end subroutine disl
|
|
|
|
end subroutine disl
|
|
|
|
|
|
|
|
|
|
|
@ -269,6 +267,7 @@ module opt_disl
|
|
|
|
call matrix_inverse(ss_ori, 3, ss_inv)
|
|
|
|
call matrix_inverse(ss_ori, 3, ss_inv)
|
|
|
|
|
|
|
|
|
|
|
|
!Apply the rotation
|
|
|
|
!Apply the rotation
|
|
|
|
|
|
|
|
print *, ss_inv
|
|
|
|
disp_transform = matmul(sub_box_ori(:,:,i), ss_inv)
|
|
|
|
disp_transform = matmul(sub_box_ori(:,:,i), ss_inv)
|
|
|
|
call matrix_inverse(disp_transform,3,inv_transform)
|
|
|
|
call matrix_inverse(disp_transform,3,inv_transform)
|
|
|
|
|
|
|
|
|
|
|
@ -329,8 +328,6 @@ module opt_disl
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
!Now make sure all atoms are wrapped back into the simulation cell
|
|
|
|
|
|
|
|
call wrap_atoms
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end subroutine dislgen
|
|
|
|
end subroutine dislgen
|
|
|
|
|
|
|
|
|
|
|
@ -544,8 +541,6 @@ module opt_disl
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
!Now make sure all atoms are wrapped back into the simulation cell
|
|
|
|
|
|
|
|
call wrap_atoms
|
|
|
|
|
|
|
|
end subroutine
|
|
|
|
end subroutine
|
|
|
|
|
|
|
|
|
|
|
|
!********************************************************
|
|
|
|
!********************************************************
|
|
|
|