tproffen / DiffuseCode

Suite of programs to simulate disordered and nanomaterials
Other
55 stars 22 forks source link

set mole missing from mmc #20

Closed stevenjgomez closed 1 year ago

stevenjgomez commented 1 year ago

I am trying to activate molecule mode in the mmc sublevel.

It seems that "set mole" was a command previously available in the mc sublevel, but in the mmc sublevel these commands seem to be in the source code but do not work when run.

stevenjgomez commented 1 year ago

For example, for a given molecule stored in a .stru file as follows:

title mymolecule
spcgr P1
cell       9.45610,      9.45610,     27.41240,     90.00000,     90.00000,    120.00000
atoms x,            y,            z,            Biso,    Property,  MoleNo,  MoleAt, Occ
molecule
SC    0.00000000,   0.00000000,   0.00000000,   0.5, 1,      0,       0,      1.000000
SN    0.00000000,   0.00000000,   0.10000000,   0.5, 1,      0,       0,      1.000000
SN    0.00000000,   0.00000000,  -0.10000000,   0.5, 1,      0,       0,      1.000000
molecule end

Running the following commands leads to an error. Setting the molecule mode at the chem sublevel works fine, but the command specified in Sec. 8.4 of the DISCUS manual called set mole in the mmc sublevel returns the error.

suite> discus
 discus>
 discus> read
 discus/read> stru mymolecule.stru
 P1                  1
 Lattice constants :
    a          b          c         alpha      beta       gamma      volume
    9.45610    9.45610   27.41240   90.00000   90.00000  120.00000    2122.76

 Metric Tensor     :
      89.41783    -44.70891      0.00000
     -44.70891     89.41783      0.00000
       0.00000      0.00000    751.43967

 Reciprocal Lattice constants :
    a*         b*         c*        alpha*     beta*      gamma*     volume
    0.12211    0.12211    0.03648   90.00000   90.00000   60.00000   0.471084E-03

 Reciprocal metric tensor     :
       0.01491      0.00746     -0.00000
       0.00746      0.01491     -0.00000
      -0.00000     -0.00000      0.00133

 discus>
 discus> chem
 discus/chem> mode mol
 New operation mode : molecules ...
 discus/chem> show
    Neighbour determination mode   : quick = T
    Periodic boundaries (x,y,z)    : F F F
    Current operation mode         : molecules
    Sample volume for homo-check   : complete crystal
    Allowed bond length range      :  1.500 A to  7.500 A
    # points for histogramms       :    601

    Neighbour definitions          :

        #  Mode  Neighbour (or vec.)  fsig  wsig   rmin[A] rmax[A] ang sym
       -------------------------------------------------------------------

    Defined correlation vectors    :

       ** none defined **

    Defined correlation angles     :

       ** none defined **

    Defined correlation environments:

       ** none defined **

    Defined correlation ranges:

       ** none defined **

    Defined displacement direc.    :

       ** none defined **

    Defined correlation connectiv. :

       ** none defined **
 discus/chem> exit
 discus>
 discus> mmc
 discus/mmc> set mole
 ***COMM*** Missing or wrong parameters for command       ***  -6 ***
 ***MAC *** Error in macro line:    12 Level   1          ***
 ***MAC *** /mnt/c/Users/steve/OneDrive/Documents/UCSB/Projects/ScV6Sn6/DISCUS/ScV6Sn6/mwe.mac
 ***COMM*** Sub menu returned with error                  *** -10 ***
 ***COMM***  Error occured in mmc menu                    *** -10 ***
 ***COMM*** Program section returned with error           ***  -9 ***

 suite >
stevenjgomez commented 1 year ago

SOLVED

The command listed in the DISCUS manual Section 8.2 is not up to date, and should be updated.

Within the mmc sublevel, the command set style, mole is the correct command. It is found in the mmc.f90 source code on line 1048:

!------ --- 'set style' : setting of style atom/molecules               
!                                                                       
      ELSEIF(cpara(1)(1:2) == 'ST') THEN 
         if(cpara(2)(1:4) == 'atom') then
            mmc_style   = MMC_IS_ATOM
            mo_sel_atom = .true.
         elseif(cpara(2)(1:4) == 'mole') then
            mmc_style   = MMC_IS_MOLE
            mo_sel_atom = .false.
         endif
!             

An example:

 suite> discus
 discus>
 discus> read
 discus/read> stru mymolecule.stru
 P1                  1
 Lattice constants :
    a          b          c         alpha      beta       gamma      volume
    9.45610    9.45610   27.41240   90.00000   90.00000  120.00000    2122.76

 Metric Tensor     :
      89.41783    -44.70891      0.00000
     -44.70891     89.41783      0.00000
       0.00000      0.00000    751.43967

 Reciprocal Lattice constants :
    a*         b*         c*        alpha*     beta*      gamma*     volume
    0.12211    0.12211    0.03648   90.00000   90.00000   60.00000   0.471084E-03

 Reciprocal metric tensor     :
       0.01491      0.00746     -0.00000
       0.00746      0.01491     -0.00000
      -0.00000     -0.00000      0.00133

 discus>
 discus> chem
 discus/chem> mode mol
 New operation mode : molecules ...
 discus/chem> show
    Neighbour determination mode   : quick = T
    Periodic boundaries (x,y,z)    : F F F
    Current operation mode         : molecules
    Sample volume for homo-check   : complete crystal
    Allowed bond length range      :  1.500 A to  7.500 A
    # points for histogramms       :    601

    Neighbour definitions          :

        #  Mode  Neighbour (or vec.)  fsig  wsig   rmin[A] rmax[A] ang sym
       -------------------------------------------------------------------

    Defined correlation vectors    :

       ** none defined **

    Defined correlation angles     :

       ** none defined **

    Defined correlation environments:

       ** none defined **

    Defined correlation ranges:

       ** none defined **

    Defined displacement direc.    :

       ** none defined **

    Defined correlation connectiv. :

       ** none defined **
 discus/chem> exit
 discus>
 discus> mmc
 discus/mmc> set style, mole
 discus/mmc> show
   Operation mode for MC        : molecules
   Max. number of MC cycles     :      100
   Feedback/update intervall    :       10
   Maximum no. non_valid cycles :     1000
   Temperature [kT]             :   1.0000
   MMC will stop at convergence
      Max rel. difference       :   0.0000 at last cycle
      Max change rel. difference:   0.0000 observed over    3 feedbacks
      Av. change rel. difference:   0.0000 averaged over    3 feedbacks

 Operation modes for MMC; molecules selected
   Mode                  Probability  two-atom correlation
   -------------------------------------------------------
   switch chemistry      0.00000      all
   switch displacement   0.00000      all
   shift atom            0.00000      all
   inverse displacement  0.00000      all
   rotate molecule       0.00000      all
   switch neighbors      0.00000      all

 Correlation definitions        :

    Neighbour definitions          :

        #  Mode  Neighbour (or vec.)  fsig  wsig   rmin[A] rmax[A] ang sym
       -------------------------------------------------------------------

    Defined correlation vectors    :

       ** none defined **

    Defined correlation angles     :

       ** none defined **

    Defined correlation environments:

       ** none defined **

    Defined correlation ranges:

       ** none defined **

    Defined displacement direc.    :

       ** none defined **

    Defined correlation connectiv. :

       ** none defined **
 discus/mmc> exit
 discus>
 discus> exit