diff --git a/README.md b/README.md index 5d45ef3..821ccc5 100644 --- a/README.md +++ b/README.md @@ -225,4 +225,23 @@ This command remeshes the atoms/elements within the group to the new element siz -ow ``` -If this option is passed then all files are automatically overwritten without asking the user. \ No newline at end of file +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. + diff --git a/src/main.f90 b/src/main.f90 index 31f5f58..f64b50b 100644 --- a/src/main.f90 +++ b/src/main.f90 @@ -37,6 +37,7 @@ program main !Call initialization functions call lattice_init call box_init + call random_seed force_overwrite=.false. end_mode_arg = 0 @@ -98,4 +99,4 @@ program main end if call write_out -end program main \ No newline at end of file +end program main diff --git a/src/subroutines.f90 b/src/subroutines.f90 index 9fd159c..f7a22ad 100644 --- a/src/subroutines.f90 +++ b/src/subroutines.f90 @@ -178,6 +178,7 @@ module subroutines real(kind=dp), intent(out) :: pos !The output parsed position value integer :: iospara + real(kind=dp) :: rand iospara = 0 if(trim(adjustl(pos_string)) == 'inf') then @@ -208,6 +209,10 @@ module subroutines read(pos_string(1:index(pos_string,'*')-1), *, iostat=iospara) pos end if 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 read(pos_string, *, iostat=iospara) pos end if