Merge pull request #19 from aselimov/ft--random-position-selector
Ft random position selector
This commit is contained in:
commit
636ae9421b
19
README.md
19
README.md
@ -226,3 +226,22 @@ This command remeshes the atoms/elements within the group to the new element siz
|
|||||||
```
|
```
|
||||||
|
|
||||||
If this option is passed then all files are automatically overwritten without asking the user.
|
If this option is passed then all files are automatically overwritten without asking the user.
|
||||||
|
|
||||||
|
## Position Specification
|
||||||
|
|
||||||
|
Specifying positions in cacmb can be done through a variety of ways. Examples of each format is shown below.
|
||||||
|
|
||||||
|
`val` - Where `val` is a number, then that value in Angstroms is used as the position. As an example, `11.1` would be read in as a position of 11.1 $\AA$.
|
||||||
|
|
||||||
|
`-inf` - This specifies the lower box boundary in the specific dimension. The vector `-inf -inf -inf` specifies the bottom corner of the simulation cell which also acts as the simulation cell origin. The vector `-inf 10 3` instead puts only the x position at the simulation cell origin.
|
||||||
|
|
||||||
|
`inf` - Similar to `-inf` but references the upper boundary of the box in that dimension
|
||||||
|
|
||||||
|
`inf-val` - Using a minus sign reduces the position from the **upper boundary** by `val`. `inf-10` would be at a distance of $10 \AA$ from the upper boundary in that dimension.
|
||||||
|
|
||||||
|
`inf+val` - This increases the position from the **lower boundary**. `inf+10` would be a position $10\AA$ from the lower boundary within the cell.
|
||||||
|
|
||||||
|
`inf*val` - This gives you a fractional position in the simulation cell. As an example `inf*0.5` gives you the center point of the simulation cell.
|
||||||
|
|
||||||
|
`rand` - Returns a random position that lies within the simulation cell.
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@ program main
|
|||||||
!Call initialization functions
|
!Call initialization functions
|
||||||
call lattice_init
|
call lattice_init
|
||||||
call box_init
|
call box_init
|
||||||
|
call random_seed
|
||||||
force_overwrite=.false.
|
force_overwrite=.false.
|
||||||
|
|
||||||
end_mode_arg = 0
|
end_mode_arg = 0
|
||||||
|
@ -178,6 +178,7 @@ module subroutines
|
|||||||
real(kind=dp), intent(out) :: pos !The output parsed position value
|
real(kind=dp), intent(out) :: pos !The output parsed position value
|
||||||
|
|
||||||
integer :: iospara
|
integer :: iospara
|
||||||
|
real(kind=dp) :: rand
|
||||||
|
|
||||||
iospara = 0
|
iospara = 0
|
||||||
if(trim(adjustl(pos_string)) == 'inf') then
|
if(trim(adjustl(pos_string)) == 'inf') then
|
||||||
@ -208,6 +209,10 @@ module subroutines
|
|||||||
read(pos_string(1:index(pos_string,'*')-1), *, iostat=iospara) pos
|
read(pos_string(1:index(pos_string,'*')-1), *, iostat=iospara) pos
|
||||||
end if
|
end if
|
||||||
pos = (box_bd(2*i)-box_bd(2*i-1))*pos + box_bd(2*i-1)
|
pos = (box_bd(2*i)-box_bd(2*i-1))*pos + box_bd(2*i-1)
|
||||||
|
|
||||||
|
else if (trim(adjustl(pos_string)) == 'rand') then
|
||||||
|
call random_number(rand)
|
||||||
|
pos = (box_bd(2*i)-box_bd(2*i-1))*rand + box_bd(2*i-1)
|
||||||
else
|
else
|
||||||
read(pos_string, *, iostat=iospara) pos
|
read(pos_string, *, iostat=iospara) pos
|
||||||
end if
|
end if
|
||||||
|
Loading…
x
Reference in New Issue
Block a user