Skip to content

2E. Reactive surface

PabloMartin91 edited this page Jan 31, 2021 · 22 revisions

--(***) All the commands listed here are not considered if system exportation from a previous simulation is done


KIMERA automatically creates an initial reactive surface from the whole system which greatly increases the simulation performance. In order to define it, KIMERA considers the PBC, the atoms defined as insoluble, and the atoms defined as bulk atoms. Nevertheless, the initial surface may not be well defined. Impurities, dislocations, or other features that decrease the homogeneity of the atomic structure produce initial reactive sites that should not initially exist since they are not in contact with the solvent (the interior of a dislocation, for example). Therefore, similar commands to previous ones explained in the Topography and modifiers sections are available to modify it:

REMOVE_AB_PLANE_FROM_SURFACE                    (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_a   (int)length_b
ADD_AB_PLANE_TO_SURFACE                         (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_a   (int)length_b 

REMOVE_AC_PLANE_FROM_SURFACE                    (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_a   (int)length_c
ADD_AC_PLANE_TO_SURFACE                         (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_a   (int)length_c

REMOVE_BC_PLANE_FROM_SURFACE                    (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_b   (int)length_c
ADD_BC_PLANE_TO_SURFACE                         (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_b   (int)length_c

REMOVE_CUBE_FROM_SURFACE                        (double)x    (double)y    (double)z    (double)side
ADD_CUBE_TO_SURFACE                             (double)x    (double)y    (double)z    (double)side

REMOVE_XY_DISLOCATION_FROM_SURFACE              (double)x    (double)y   (double)radius     
                                                (optional line) FROM_Z_TO_Z          (double)bot_z       (double)top_z
                                                (optional line) ANGLE_XZ_ANGLE_YZ    (double)angle_xz    (double)angle_yz

ADD_XY_DISLOCATION_TO_SURFACE                   (double)x    (double)y   (double)radius     
                                                (optional line) FROM_Z_TO_Z          (double)bot_z       (double)top_z
                                                (optional line) ANGLE_XZ_ANGLE_YZ    (double)angle_xz    (double)angle_yz

REMOVE_XZ_DISLOCATION_FROM_SURFACE              (double)x    (double)z   (double)radius     
                                                (optional line) FROM_Y_TO_Y          (double)bot_y       (double)top_y
                                                (optional line) ANGLE_XY_ANGLE_ZY    (double)angle_xz    (double)angle_yz

ADD_XZ_DISLOCATION_TO_SURFACE                   (double)x    (double)z   (double)radius     
                                                (optional line) FROM_Y_TO_Y          (double)bot_y       (double)top_y
                                                (optional line) ANGLE_XY_ANGLE_ZY    (double)angle_xz    (double)angle_yz

REMOVE_YZ_DISLOCATION_FROM_SURFACE              (double)y    (double)z   (double)radius     
                                                (optional line) FROM_X_TO_X          (double)bot_x       (double)top_x
                                                (optional line) ANGLE_YX_ANGLE_ZX    (double)angle_yx    (double)angle_zx

ADD_YZ_DISLOCATION_TO_SURFACE                   (double)y    (double)z   (double)radius     
                                                (optional line) FROM_X_TO_X          (double)bot_x       (double)top_x
                                                (optional line) ANGLE_YX_ANGLE_ZX    (double)angle_yx    (double)angle_zx

REMOVE_PLANE_FROM_SURFACE                       (double)A    (double)B    (double)C    (double)D   (double)distance
ADD_PLANE_TO_SURFACE                            (double)A    (double)B    (double)C    (double)D   (double)distance

REMOVE_SPHERE_FROM_SURFACE                      (double)x    (double)y    (double)z    (double)radius 
ADD_SPHERE_TO_SURFACE                           (double)x    (double)y    (double)z    (double)radius 

REMOVE_ELLIPSOID_FROM_SURFACE                   (double)x    (double)y    (double)z    (double)radiusx     (double)radiusy    (double)radiusz
ADD_ELLIPSOID_TO_SURFACE                        (double)x    (double)y    (double)z    (double)radiusx     (double)radiusy    (double)radiusz

REMOVE_GENERAL_ELLIPSOID_TO_SURFACE             (double)A    (double)B    (double)C    (double)D    (double)E   (double)F   (double)G   (double)H   (double)J   (double)K
ADD_GENERAL_ELLIPSOID_TO_SURFACE                (double)A    (double)B    (double)C    (double)D    (double)E   (double)F   (double)G   (double)H   (double)J   (double)K

Note that:

  • The parameters of these last commands ADD_GENERAL_ELLIPSOID_TO_SURFACE and REMOVE_GENERAL_ELLIPSOID_FROM_SURFACE indicate the coeficients of the ellipsoid general equation Ax2+By2+Cz2+Dxy+Exz+Fyz+Gx+Hy+Jz+K<1.

  • The parameters of the ADD_PLANE_TO_SURFACE and REMOVE_PLANE_FROM_SURFACE commands indicate the coeficients of the plane general equation Ax+By+Cz+D=0.

  • The pos_cell goes from 0 to DIMENSION_A-1, DIMENSION_B-1 and DIMENSION_C-1 respectively (see 2A. Simulation box section)


Selective modification of the reactive surface

All the previous commands can be used selectively targeting atoms or particles of certain type. They are identical to the previous ones, but they have the TO_TYPE surname and an additional input parameter with the target type:

REMOVE_AB_PLANE_FROM_SURFACE_TO_TYPE            (text)atom_type  (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_a   (int)length_b
ADD_AB_PLANE_TO_SURFACE_TO_TYPE                 (text)atom_type  (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_a   (int)length_b

REMOVE_AC_PLANE_FROM_SURFACE_TO_TYPE            (text)atom_type  (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_a   (int)length_c
ADD_AC_PLANE_TO_SURFACE_TO_TYPE                 (text)atom_type  (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_a   (int)length_c

REMOVE_BC_PLANE_FROM_SURFACE_TO_TYPE            (text)atom_type  (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_b   (int)length_c
ADD_BC_PLANE_TO_SURFACE_TO_TYPE                 (text)atom_type  (int)pos_cell_a   (int)pos_cell_b   (int)pos_cell_c   (int)length_b   (int)length_c

REMOVE_CUBE_FROM_SURFACE_TO_TYPE                (text)atom_type  (double)x    (double)y    (double)z    (double)side
ADD_CUBE_TO_SURFACE_TO_TYPE                     (text)atom_type  (double)x    (double)y    (double)z    (double)side

REMOVE_XY_DISLOCATION_FROM_SURFACE_TO_TYPE      (text)atom_type  (double)x    (double)y   (double)radius     
                                                (optional line) FROM_Z_TO_Z          (double)bot_z       (double)top_z
                                                (optional line) ANGLE_XZ_ANGLE_YZ    (double)angle_xz    (double)angle_yz

ADD_XY_DISLOCATION_TO_SURFACE_TO_TYPE           (text)atom_type  (double)x    (double)y   (double)radius     
                                                (optional line) FROM_Z_TO_Z          (double)bot_z       (double)top_z
                                                (optional line) ANGLE_XZ_ANGLE_YZ    (double)angle_xz    (double)angle_yz

REMOVE_XZ_DISLOCATION_FROM_SURFACE_TO_TYPE      (text)atom_type  (double)x    (double)z   (double)radius     
                                                (optional line) FROM_Y_TO_Y          (double)bot_y       (double)top_y
                                                (optional line) ANGLE_XY_ANGLE_ZY    (double)angle_xz    (double)angle_yz

ADD_XZ_DISLOCATION_TO_SURFACE_TO_TYPE           (text)atom_type   (double)x    (double)z   (double)radius     
                                                (optional line) FROM_Y_TO_Y          (double)bot_y       (double)top_y
                                                (optional line) ANGLE_XY_ANGLE_ZY    (double)angle_xz    (double)angle_yz

REMOVE_YZ_DISLOCATION_FROM_SURFACE_TO_TYPE      (text)atom_type  (double)y    (double)z   (double)radius     
                                                (optional line) FROM_X_TO_X          (double)bot_x       (double)top_x
                                                (optional line) ANGLE_YX_ANGLE_ZX    (double)angle_yx    (double)angle_zx

ADD_YZ_DISLOCATION_TO_SURFACE_TO_TYPE           (text)atom_type  (double)y    (double)z   (double)radius     
                                                (optional line) FROM_X_TO_X          (double)bot_x       (double)top_x
                                                (optional line) ANGLE_YX_ANGLE_ZX    (double)angle_yx    (double)angle_zx

REMOVE_PLANE_FROM_SURFACE_TO_TYPE               (text)atom_type  (double)A    (double)B    (double)C    (double)D   (double)distance
ADD_PLANE_TO_SURFACE_TO_TYPE                    (text)atom_type  (double)A    (double)B    (double)C    (double)D   (double)distance

REMOVE_SPHERE_FROM_SURFACE_TO_TYPE              (text)atom_type  (double)x    (double)y    (double)z    (double)radius 
ADD_SPHERE_TO_SURFACE_TO_TYPE                   (text)atom_type  (double)x    (double)y    (double)z    (double)radius 

REMOVE_ELLIPSOID_FROM_SURFACE_TO_TYPE           (text)atom_type  (double)x    (double)y    (double)z    (double)radiusx     (double)radiusy    (double)radiusz
ADD_ELLIPSOID_TO_SURFACE_TO_TYPE                (text)atom_type  (double)x    (double)y    (double)z    (double)radiusx     (double)radiusy    (double)radiusz

REMOVE_GENERAL_ELLIPSOID_TO_SURFACE_TO_TYPE     (text)atom_type  (double)A    (double)B    (double)C    (double)D    (double)E   (double)F   (double)G   (double)H   (double)J   (double)K
ADD_GENERAL_ELLIPSOID_TO_SURFACE_TO_TYPE        (text)atom_type  (double)A    (double)B    (double)C    (double)D    (double)E   (double)F   (double)G   (double)H   (double)J   (double)K

At this point we can perform our simulation to study the mineral dissolution. In the next step we will see the neccesary commands to indicate KIMERA the output files we need.