|
|
|
@ -27,7 +27,7 @@ module elements
|
|
|
|
|
integer :: atom_types = 0
|
|
|
|
|
|
|
|
|
|
!Variables for creating elements based on primitive cells
|
|
|
|
|
real(kind=dp) :: cubic_cell(3,8), fcc_cell(3,8), fcc_mat(3,3), fcc_inv(3,3)
|
|
|
|
|
real(kind=dp) :: cubic_cell(3,8), fcc_cell(3,8), fcc_mat(3,3), fcc_inv(3,3), bcc_cell(3,8), bcc_mat(3,3), bcc_inv(3,3)
|
|
|
|
|
integer :: cubic_faces(4,6)
|
|
|
|
|
|
|
|
|
|
!Below are lattice type arrays which provide information on the general form of the elements.
|
|
|
|
@ -86,7 +86,26 @@ module elements
|
|
|
|
|
0.0_dp, 0.5_dp, 0.5_dp, &
|
|
|
|
|
0.5_dp, 0.0_dp, 0.5_dp /), &
|
|
|
|
|
shape(fcc_mat))
|
|
|
|
|
|
|
|
|
|
!Initialize the bcc primitive cell
|
|
|
|
|
bcc_cell = reshape((/ 0.0_dp, 0.0_dp, 0.0_dp, &
|
|
|
|
|
0.5_dp, -0.5_dp, 0.5_dp, &
|
|
|
|
|
1.0_dp, 0.0_dp, 1.0_dp, &
|
|
|
|
|
0.5_dp, 0.5_dp, 0.5_dp, &
|
|
|
|
|
0.5_dp, 0.5_dp, -0.5_dp, &
|
|
|
|
|
0.0_dp, 0.0_dp, 1.0_dp, &
|
|
|
|
|
0.5_dp, 0.5_dp, 1.5_dp /), &
|
|
|
|
|
shape(bcc_cell))
|
|
|
|
|
|
|
|
|
|
bcc_mat = reshape((/ 0.5_dp, 0.5_dp, -0.5_dp, &
|
|
|
|
|
-0.5_dp, 0.5_dp, 0.5_dp, &
|
|
|
|
|
0.5_dp, 0.5_dp, 0.5_dp /), &
|
|
|
|
|
shape(bcc_mat))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
call matrix_inverse(fcc_mat,3,fcc_inv)
|
|
|
|
|
call matrix_inverse(bcc_mat,3,bcc_inv)
|
|
|
|
|
|
|
|
|
|
max_basisnum = 0
|
|
|
|
|
basisnum(:) = 0
|
|
|
|
@ -300,6 +319,8 @@ module elements
|
|
|
|
|
select case(trim(adjustl(element_types(i))))
|
|
|
|
|
case('fcc')
|
|
|
|
|
ng_node(i) = 8
|
|
|
|
|
case('bcc')
|
|
|
|
|
ng_node(i) = 8
|
|
|
|
|
end select
|
|
|
|
|
|
|
|
|
|
if(ng_node(i) > max_ng_node) max_ng_node = ng_node(i)
|
|
|
|
@ -345,7 +366,7 @@ module elements
|
|
|
|
|
end select
|
|
|
|
|
|
|
|
|
|
select case(trim(adjustl(type)))
|
|
|
|
|
case('fcc')
|
|
|
|
|
case('fcc','bcc')
|
|
|
|
|
allocate(a_shape(8))
|
|
|
|
|
!Now loop over all the possible sites
|
|
|
|
|
do it = 1, esize
|
|
|
|
|