remove references to -DLAMMPS_SMALLSMALL and trigger error when used
This commit is contained in:
@ -431,8 +431,8 @@ else()
|
|||||||
target_link_libraries(lammps PUBLIC mpi_stubs)
|
target_link_libraries(lammps PUBLIC mpi_stubs)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
|
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
|
||||||
set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall)
|
set(LAMMPS_SIZES_VALUES smallbig bigbig)
|
||||||
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
|
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
|
||||||
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
|
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
|
||||||
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
|
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
|
||||||
|
|||||||
@ -260,8 +260,8 @@ endif()
|
|||||||
|
|
||||||
################
|
################
|
||||||
# integer size selection
|
# integer size selection
|
||||||
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
|
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
|
||||||
set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall)
|
set(LAMMPS_SIZES_VALUES smallbig bigbig)
|
||||||
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
|
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
|
||||||
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
|
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
|
||||||
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
|
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
|
||||||
|
|||||||
@ -255,11 +255,10 @@ Traditional make
|
|||||||
|
|
||||||
Before building LAMMPS, you must build the GPU library in ``lib/gpu``\ .
|
Before building LAMMPS, you must build the GPU library in ``lib/gpu``\ .
|
||||||
You can do this manually if you prefer; follow the instructions in
|
You can do this manually if you prefer; follow the instructions in
|
||||||
``lib/gpu/README``. Note that the GPU library uses MPI calls, so you must
|
``lib/gpu/README``. Note that the GPU library uses MPI calls, so you
|
||||||
use the same MPI library (or the STUBS library) settings as the main
|
must use the same MPI library (or the STUBS library) settings as the
|
||||||
LAMMPS code. This also applies to the ``-DLAMMPS_BIGBIG``\ ,
|
main LAMMPS code. This also applies to the ``-DLAMMPS_BIGBIG`` or
|
||||||
``-DLAMMPS_SMALLBIG``\ , or ``-DLAMMPS_SMALLSMALL`` settings in whichever
|
``-DLAMMPS_SMALLBIG`` settings in whichever Makefile you use.
|
||||||
Makefile you use.
|
|
||||||
|
|
||||||
You can also build the library in one step from the ``lammps/src`` dir,
|
You can also build the library in one step from the ``lammps/src`` dir,
|
||||||
using a command like these, which simply invokes the ``lib/gpu/Install.py``
|
using a command like these, which simply invokes the ``lib/gpu/Install.py``
|
||||||
|
|||||||
@ -315,7 +315,7 @@ large counters can become before "rolling over". The default setting of
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
-D LAMMPS_SIZES=value # smallbig (default) or bigbig or smallsmall
|
-D LAMMPS_SIZES=value # smallbig (default) or bigbig
|
||||||
|
|
||||||
If the variable is not set explicitly, "smallbig" is used.
|
If the variable is not set explicitly, "smallbig" is used.
|
||||||
|
|
||||||
@ -326,7 +326,7 @@ large counters can become before "rolling over". The default setting of
|
|||||||
|
|
||||||
.. code-block:: make
|
.. code-block:: make
|
||||||
|
|
||||||
LMP_INC = -DLAMMPS_SMALLBIG # or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL
|
LMP_INC = -DLAMMPS_SMALLBIG # or -DLAMMPS_BIGBIG
|
||||||
|
|
||||||
The default setting is ``-DLAMMPS_SMALLBIG`` if nothing is specified
|
The default setting is ``-DLAMMPS_SMALLBIG`` if nothing is specified
|
||||||
|
|
||||||
@ -335,34 +335,27 @@ LAMMPS system size restrictions
|
|||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
:widths: 18 27 28 27
|
:widths: 27 36 37
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
* -
|
* -
|
||||||
- smallbig
|
- smallbig
|
||||||
- bigbig
|
- bigbig
|
||||||
- smallsmall
|
|
||||||
* - Total atom count
|
* - Total atom count
|
||||||
- :math:`2^{63}` atoms (= :math:`9.223 \cdot 10^{18}`)
|
- :math:`2^{63}` atoms (= :math:`9.223 \cdot 10^{18}`)
|
||||||
- :math:`2^{63}` atoms (= :math:`9.223 \cdot 10^{18}`)
|
- :math:`2^{63}` atoms (= :math:`9.223 \cdot 10^{18}`)
|
||||||
- :math:`2^{31}` atoms (= :math:`2.147 \cdot 10^9`)
|
|
||||||
* - Total timesteps
|
* - Total timesteps
|
||||||
- :math:`2^{63}` steps (= :math:`9.223 \cdot 10^{18}`)
|
- :math:`2^{63}` steps (= :math:`9.223 \cdot 10^{18}`)
|
||||||
- :math:`2^{63}` steps (= :math:`9.223 \cdot 10^{18}`)
|
- :math:`2^{63}` steps (= :math:`9.223 \cdot 10^{18}`)
|
||||||
- :math:`2^{31}` steps (= :math:`2.147 \cdot 10^9`)
|
|
||||||
* - Atom ID values
|
* - Atom ID values
|
||||||
- :math:`1 \le i \le 2^{31} (= 2.147 \cdot 10^9)`
|
- :math:`1 \le i \le 2^{31} (= 2.147 \cdot 10^9)`
|
||||||
- :math:`1 \le i \le 2^{63} (= 9.223 \cdot 10^{18})`
|
- :math:`1 \le i \le 2^{63} (= 9.223 \cdot 10^{18})`
|
||||||
- :math:`1 \le i \le 2^{31} (= 2.147 \cdot 10^9)`
|
|
||||||
* - Image flag values
|
* - Image flag values
|
||||||
- :math:`-512 \le i \le 511`
|
- :math:`-512 \le i \le 511`
|
||||||
- :math:`- 1\,048\,576 \le i \le 1\,048\,575`
|
- :math:`- 1\,048\,576 \le i \le 1\,048\,575`
|
||||||
- :math:`-512 \le i \le 511`
|
|
||||||
|
|
||||||
The "bigbig" setting increases the size of image flags and atom IDs over
|
The "bigbig" setting increases the size of image flags and atom IDs over
|
||||||
"smallbig" and the "smallsmall" setting is only needed if your machine
|
the default "smallbig" setting.
|
||||||
does not support 64-bit integers or incurs performance penalties when
|
|
||||||
using them.
|
|
||||||
|
|
||||||
These are limits for the core of the LAMMPS code, specific features or
|
These are limits for the core of the LAMMPS code, specific features or
|
||||||
some styles may impose additional limits. The :ref:`ATC
|
some styles may impose additional limits. The :ref:`ATC
|
||||||
|
|||||||
@ -6233,8 +6233,9 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
|
|||||||
Atom IDs must be positive integers.
|
Atom IDs must be positive integers.
|
||||||
|
|
||||||
*One or more atom IDs is too big*
|
*One or more atom IDs is too big*
|
||||||
The limit on atom IDs is set by the SMALLBIG, BIGBIG, SMALLSMALL
|
The limit on atom IDs is set by the SMALLBIG, BIGBIG
|
||||||
setting in your LAMMPS build. See the :doc:`Build settings <Build_settings>` page for more info.
|
setting in your LAMMPS build. See the
|
||||||
|
:doc:`Build settings <Build_settings>` page for more info.
|
||||||
|
|
||||||
*One or more atom IDs is zero*
|
*One or more atom IDs is zero*
|
||||||
Either all atoms IDs must be zero or none of them.
|
Either all atoms IDs must be zero or none of them.
|
||||||
|
|||||||
@ -2773,8 +2773,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
|||||||
END SUBROUTINE external_callback
|
END SUBROUTINE external_callback
|
||||||
END INTERFACE
|
END INTERFACE
|
||||||
|
|
||||||
where ``c_bigint`` is ``c_int`` if ``-DLAMMPS_SMALLSMALL`` was used and
|
where ``c_bigint`` is ``c_int64_t`` and ``c_tagint`` is ``c_int64_t`` if
|
||||||
``c_int64_t`` otherwise; and ``c_tagint`` is ``c_int64_t`` if
|
|
||||||
``-DLAMMPS_BIGBIG`` was used and ``c_int`` otherwise.
|
``-DLAMMPS_BIGBIG`` was used and ``c_int`` otherwise.
|
||||||
|
|
||||||
The argument *caller* to :f:subr:`set_fix_external_callback` is unlimited
|
The argument *caller* to :f:subr:`set_fix_external_callback` is unlimited
|
||||||
|
|||||||
@ -19,9 +19,9 @@ there are now a few requirements for including new changes or extensions.
|
|||||||
be added.
|
be added.
|
||||||
- New features should also be implemented and documented not just
|
- New features should also be implemented and documented not just
|
||||||
for the C interface, but also the Python and Fortran interfaces.
|
for the C interface, but also the Python and Fortran interfaces.
|
||||||
- All additions should work and be compatible with ``-DLAMMPS_BIGBIG``,
|
- All additions should work and be compatible with
|
||||||
``-DLAMMPS_SMALLBIG``, ``-DLAMMPS_SMALLSMALL`` as well as when
|
``-DLAMMPS_BIGBIG``, ``-DLAMMPS_SMALLBIG`` as well as when compiling
|
||||||
compiling with and without MPI support.
|
with and without MPI support.
|
||||||
- The ``library.h`` file should be kept compatible to C code at
|
- The ``library.h`` file should be kept compatible to C code at
|
||||||
a level similar to C89. Its interfaces may not reference any
|
a level similar to C89. Its interfaces may not reference any
|
||||||
custom data types (e.g. ``bigint``, ``tagint``, and so on) that
|
custom data types (e.g. ``bigint``, ``tagint``, and so on) that
|
||||||
|
|||||||
@ -334,14 +334,6 @@ MODULE LIBLAMMPS
|
|||||||
|
|
||||||
! Interface templates for fix external callbacks
|
! Interface templates for fix external callbacks
|
||||||
ABSTRACT INTERFACE
|
ABSTRACT INTERFACE
|
||||||
SUBROUTINE external_callback_smallsmall(caller, timestep, ids, x, fexternal)
|
|
||||||
IMPORT :: c_int, c_double
|
|
||||||
CLASS(*), INTENT(INOUT) :: caller
|
|
||||||
INTEGER(c_int), INTENT(IN) :: timestep
|
|
||||||
INTEGER(c_int), DIMENSION(:), INTENT(IN) :: ids
|
|
||||||
REAL(c_double), DIMENSION(:,:), INTENT(IN) :: x
|
|
||||||
REAL(c_double), DIMENSION(:,:), INTENT(OUT) :: fexternal
|
|
||||||
END SUBROUTINE external_callback_smallsmall
|
|
||||||
SUBROUTINE external_callback_smallbig(caller, timestep, ids, x, fexternal)
|
SUBROUTINE external_callback_smallbig(caller, timestep, ids, x, fexternal)
|
||||||
IMPORT :: c_int, c_double, c_int64_t
|
IMPORT :: c_int, c_double, c_int64_t
|
||||||
CLASS(*), INTENT(INOUT) :: caller
|
CLASS(*), INTENT(INOUT) :: caller
|
||||||
@ -363,8 +355,6 @@ MODULE LIBLAMMPS
|
|||||||
! Derived type for fix external callback data
|
! Derived type for fix external callback data
|
||||||
TYPE fix_external_data
|
TYPE fix_external_data
|
||||||
CHARACTER(LEN=:), ALLOCATABLE :: id
|
CHARACTER(LEN=:), ALLOCATABLE :: id
|
||||||
PROCEDURE(external_callback_smallsmall), NOPASS, POINTER :: &
|
|
||||||
callback_smallsmall => NULL()
|
|
||||||
PROCEDURE(external_callback_smallbig), NOPASS, POINTER :: &
|
PROCEDURE(external_callback_smallbig), NOPASS, POINTER :: &
|
||||||
callback_smallbig => NULL()
|
callback_smallbig => NULL()
|
||||||
PROCEDURE(external_callback_bigbig), NOPASS, POINTER :: &
|
PROCEDURE(external_callback_bigbig), NOPASS, POINTER :: &
|
||||||
@ -2262,7 +2252,7 @@ CONTAINS
|
|||||||
CALL lammps_free(Cname)
|
CALL lammps_free(Cname)
|
||||||
END SUBROUTINE lmp_scatter_atoms_subset_double
|
END SUBROUTINE lmp_scatter_atoms_subset_double
|
||||||
|
|
||||||
! equivalent function to lammps_gather_bonds (LAMMPS_SMALLSMALL or SMALLBIG)
|
! equivalent function to lammps_gather_bonds (LAMMPS_SMALLBIG)
|
||||||
SUBROUTINE lmp_gather_bonds_small(self, data)
|
SUBROUTINE lmp_gather_bonds_small(self, data)
|
||||||
CLASS(lammps), INTENT(IN) :: self
|
CLASS(lammps), INTENT(IN) :: self
|
||||||
INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data
|
INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data
|
||||||
@ -2304,7 +2294,7 @@ CONTAINS
|
|||||||
CALL lammps_gather_bonds(self%handle, Cdata)
|
CALL lammps_gather_bonds(self%handle, Cdata)
|
||||||
END SUBROUTINE lmp_gather_bonds_big
|
END SUBROUTINE lmp_gather_bonds_big
|
||||||
|
|
||||||
! equivalent function to lammps_gather_angles (LAMMPS_SMALLSMALL or SMALLBIG)
|
! equivalent function to lammps_gather_angles (LAMMPS_SMALLBIG)
|
||||||
SUBROUTINE lmp_gather_angles_small(self, data)
|
SUBROUTINE lmp_gather_angles_small(self, data)
|
||||||
CLASS(lammps), INTENT(IN) :: self
|
CLASS(lammps), INTENT(IN) :: self
|
||||||
INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data
|
INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data
|
||||||
@ -2346,7 +2336,7 @@ CONTAINS
|
|||||||
CALL lammps_gather_angles(self%handle, Cdata)
|
CALL lammps_gather_angles(self%handle, Cdata)
|
||||||
END SUBROUTINE lmp_gather_angles_big
|
END SUBROUTINE lmp_gather_angles_big
|
||||||
|
|
||||||
! equivalent function to lammps_gather_dihedrals (LAMMPS_SMALLSMALL or SMALLBIG)
|
! equivalent function to lammps_gather_dihedrals (LAMMPS_SMALLBIG)
|
||||||
SUBROUTINE lmp_gather_dihedrals_small(self, data)
|
SUBROUTINE lmp_gather_dihedrals_small(self, data)
|
||||||
CLASS(lammps), INTENT(IN) :: self
|
CLASS(lammps), INTENT(IN) :: self
|
||||||
INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data
|
INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data
|
||||||
@ -2388,7 +2378,7 @@ CONTAINS
|
|||||||
CALL lammps_gather_dihedrals(self%handle, Cdata)
|
CALL lammps_gather_dihedrals(self%handle, Cdata)
|
||||||
END SUBROUTINE lmp_gather_dihedrals_big
|
END SUBROUTINE lmp_gather_dihedrals_big
|
||||||
|
|
||||||
! equivalent function to lammps_gather_impropers (LAMMPS_SMALLSMALL or SMALLBIG)
|
! equivalent function to lammps_gather_impropers (LAMMPS_SMALLBIG)
|
||||||
SUBROUTINE lmp_gather_impropers_small(self, data)
|
SUBROUTINE lmp_gather_impropers_small(self, data)
|
||||||
CLASS(lammps), INTENT(IN) :: self
|
CLASS(lammps), INTENT(IN) :: self
|
||||||
INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data
|
INTEGER(c_int), DIMENSION(:), ALLOCATABLE, TARGET, INTENT(OUT) :: data
|
||||||
@ -2763,7 +2753,7 @@ CONTAINS
|
|||||||
IF (tagint_size /= 4_c_int .AND. (PRESENT(id) .OR. PRESENT(image))) THEN
|
IF (tagint_size /= 4_c_int .AND. (PRESENT(id) .OR. PRESENT(image))) THEN
|
||||||
CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, &
|
CALL lmp_error(self, LMP_ERROR_ALL + LMP_ERROR_WORLD, &
|
||||||
'Unable to create_atoms; your id/image array types are incompatible&
|
'Unable to create_atoms; your id/image array types are incompatible&
|
||||||
& with LAMMPS_SMALLBIG and LAMMPS_SMALLSMALL [Fortran/create_atoms]')
|
& with LAMMPS_SMALLBIG [Fortran/create_atoms]')
|
||||||
END IF
|
END IF
|
||||||
n = SIZE(type, KIND=c_int)
|
n = SIZE(type, KIND=c_int)
|
||||||
IF (PRESENT(bexpand)) THEN
|
IF (PRESENT(bexpand)) THEN
|
||||||
@ -3360,7 +3350,7 @@ CONTAINS
|
|||||||
construct_fix_external_data%id = ' '
|
construct_fix_external_data%id = ' '
|
||||||
END FUNCTION construct_fix_external_data
|
END FUNCTION construct_fix_external_data
|
||||||
|
|
||||||
! equivalent function to lammps_set_fix_external_callback for -DSMALLSMALL
|
! equivalent function to lammps_set_fix_external_callback
|
||||||
! note that "caller" is wrapped into a fix_external_data derived type along
|
! note that "caller" is wrapped into a fix_external_data derived type along
|
||||||
! with the fix id and the Fortran calling function.
|
! with the fix id and the Fortran calling function.
|
||||||
SUBROUTINE lmp_set_fix_external_callback(self, id, callback, caller)
|
SUBROUTINE lmp_set_fix_external_callback(self, id, callback, caller)
|
||||||
@ -3394,11 +3384,7 @@ CONTAINS
|
|||||||
ext_data(this_fix)%id = id
|
ext_data(this_fix)%id = id
|
||||||
ext_data(this_fix)%lammps_instance => self
|
ext_data(this_fix)%lammps_instance => self
|
||||||
|
|
||||||
IF (SIZE_TAGINT == 4_c_int .AND. SIZE_BIGINT == 4_c_int) THEN
|
IF (SIZE_TAGINT == 8_c_int .AND. SIZE_BIGINT == 8_c_int) THEN
|
||||||
! -DSMALLSMALL
|
|
||||||
c_callback = C_FUNLOC(callback_wrapper_smallsmall)
|
|
||||||
CALL set_fix_external_callback_smallsmall(this_fix, callback)
|
|
||||||
ELSE IF (SIZE_TAGINT == 8_c_int .AND. SIZE_BIGINT == 8_c_int) THEN
|
|
||||||
! -DBIGBIG
|
! -DBIGBIG
|
||||||
c_callback = C_FUNLOC(callback_wrapper_bigbig)
|
c_callback = C_FUNLOC(callback_wrapper_bigbig)
|
||||||
CALL set_fix_external_callback_bigbig(this_fix, callback)
|
CALL set_fix_external_callback_bigbig(this_fix, callback)
|
||||||
@ -3420,12 +3406,6 @@ CONTAINS
|
|||||||
END SUBROUTINE lmp_set_fix_external_callback
|
END SUBROUTINE lmp_set_fix_external_callback
|
||||||
|
|
||||||
! Wrappers to assign callback pointers with explicit interfaces
|
! Wrappers to assign callback pointers with explicit interfaces
|
||||||
SUBROUTINE set_fix_external_callback_smallsmall(id, callback)
|
|
||||||
INTEGER, INTENT(IN) :: id
|
|
||||||
PROCEDURE(external_callback_smallsmall) :: callback
|
|
||||||
|
|
||||||
ext_data(id)%callback_smallsmall => callback
|
|
||||||
END SUBROUTINE set_fix_external_callback_smallsmall
|
|
||||||
|
|
||||||
SUBROUTINE set_fix_external_callback_smallbig(id, callback)
|
SUBROUTINE set_fix_external_callback_smallbig(id, callback)
|
||||||
INTEGER, INTENT(IN) :: id
|
INTEGER, INTENT(IN) :: id
|
||||||
@ -3450,9 +3430,7 @@ CONTAINS
|
|||||||
DO i = 1, SIZE(ext_data) - 1
|
DO i = 1, SIZE(ext_data) - 1
|
||||||
c_id = f2c_string(ext_data(i)%id)
|
c_id = f2c_string(ext_data(i)%id)
|
||||||
c_caller = C_LOC(ext_data(i))
|
c_caller = C_LOC(ext_data(i))
|
||||||
IF (SIZE_TAGINT == 4_c_int .AND. SIZE_BIGINT == 4_c_int) THEN
|
IF (SIZE_TAGINT == 8_c_int .AND. SIZE_BIGINT == 8_c_int) THEN
|
||||||
c_callback = C_FUNLOC(callback_wrapper_smallsmall)
|
|
||||||
ELSE IF (SIZE_TAGINT == 8_c_int .AND. SIZE_BIGINT == 8_c_int) THEN
|
|
||||||
c_callback = C_FUNLOC(callback_wrapper_bigbig)
|
c_callback = C_FUNLOC(callback_wrapper_bigbig)
|
||||||
ELSE
|
ELSE
|
||||||
c_callback = C_FUNLOC(callback_wrapper_smallbig)
|
c_callback = C_FUNLOC(callback_wrapper_smallbig)
|
||||||
@ -3464,34 +3442,6 @@ CONTAINS
|
|||||||
END SUBROUTINE rebind_external_callback_data
|
END SUBROUTINE rebind_external_callback_data
|
||||||
|
|
||||||
! companions to lmp_set_fix_external_callback to change interface
|
! companions to lmp_set_fix_external_callback to change interface
|
||||||
SUBROUTINE callback_wrapper_smallsmall(caller, timestep, nlocal, ids, x, &
|
|
||||||
fexternal) BIND(C)
|
|
||||||
TYPE(c_ptr), INTENT(IN), VALUE :: caller
|
|
||||||
INTEGER(c_int), INTENT(IN), VALUE :: timestep
|
|
||||||
INTEGER(c_int), INTENT(IN), VALUE :: nlocal
|
|
||||||
TYPE(c_ptr), INTENT(IN), VALUE :: ids, x, fexternal
|
|
||||||
TYPE(c_ptr), DIMENSION(:), POINTER :: x0, f0
|
|
||||||
INTEGER(c_int), DIMENSION(:), POINTER :: f_ids => NULL()
|
|
||||||
REAL(c_double), DIMENSION(:,:), POINTER :: f_x => NULL(), &
|
|
||||||
f_fexternal => NULL()
|
|
||||||
TYPE(fix_external_data), POINTER :: f_caller => NULL()
|
|
||||||
|
|
||||||
CALL C_F_POINTER(ids, f_ids, [nlocal])
|
|
||||||
CALL C_F_POINTER(x, x0, [nlocal])
|
|
||||||
CALL C_F_POINTER(x0(1), f_x, [3, nlocal])
|
|
||||||
CALL C_F_POINTER(fexternal, f0, [nlocal])
|
|
||||||
CALL C_F_POINTER(f0(1), f_fexternal, [3, nlocal])
|
|
||||||
IF (C_ASSOCIATED(caller)) THEN
|
|
||||||
CALL C_F_POINTER(caller, f_caller)
|
|
||||||
CALL f_caller%callback_smallsmall(f_caller%caller, timestep, f_ids, &
|
|
||||||
f_x, f_fexternal)
|
|
||||||
ELSE
|
|
||||||
CALL lmp_error(f_caller%lammps_instance, &
|
|
||||||
LMP_ERROR_ALL + LMP_ERROR_WORLD, &
|
|
||||||
'Got null pointer from "caller"; this should never happen;&
|
|
||||||
& please report a bug')
|
|
||||||
END IF
|
|
||||||
END SUBROUTINE callback_wrapper_smallsmall
|
|
||||||
|
|
||||||
SUBROUTINE callback_wrapper_smallbig(caller, timestep, nlocal, ids, x, &
|
SUBROUTINE callback_wrapper_smallbig(caller, timestep, nlocal, ids, x, &
|
||||||
fexternal) BIND(C)
|
fexternal) BIND(C)
|
||||||
|
|||||||
@ -304,8 +304,6 @@ void Info::command(int narg, char **arg)
|
|||||||
fputs("-DLAMMPS_BIGBIG\n",out);
|
fputs("-DLAMMPS_BIGBIG\n",out);
|
||||||
#elif defined(LAMMPS_SMALLBIG)
|
#elif defined(LAMMPS_SMALLBIG)
|
||||||
fputs("-DLAMMPS_SMALLBIG\n",out);
|
fputs("-DLAMMPS_SMALLBIG\n",out);
|
||||||
#else // defined(LAMMPS_SMALLSMALL)
|
|
||||||
fputs("-DLAMMPS_SMALLSMALL\n",out);
|
|
||||||
#endif
|
#endif
|
||||||
if (has_gzip_support()) utils::print(out,"\n{}\n",platform::compress_info());
|
if (has_gzip_support()) utils::print(out,"\n{}\n",platform::compress_info());
|
||||||
|
|
||||||
|
|||||||
@ -688,11 +688,6 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) :
|
|||||||
sizeof(tagint) != 8 || sizeof(bigint) != 8)
|
sizeof(tagint) != 8 || sizeof(bigint) != 8)
|
||||||
error->all(FLERR,"Small to big integers are not sized correctly");
|
error->all(FLERR,"Small to big integers are not sized correctly");
|
||||||
#endif
|
#endif
|
||||||
#ifdef LAMMPS_SMALLSMALL
|
|
||||||
if (sizeof(smallint) != 4 || sizeof(imageint) != 4 ||
|
|
||||||
sizeof(tagint) != 4 || sizeof(bigint) != 4)
|
|
||||||
error->all(FLERR,"Small to big integers are not sized correctly");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// create Kokkos class if KOKKOS installed, unless explicitly switched off
|
// create Kokkos class if KOKKOS installed, unless explicitly switched off
|
||||||
// instantiation creates dummy Kokkos class if KOKKOS is not installed
|
// instantiation creates dummy Kokkos class if KOKKOS is not installed
|
||||||
@ -1481,8 +1476,6 @@ void LAMMPS::print_config(FILE *fp)
|
|||||||
fputs("-DLAMMPS_BIGBIG\n",fp);
|
fputs("-DLAMMPS_BIGBIG\n",fp);
|
||||||
#elif defined(LAMMPS_SMALLBIG)
|
#elif defined(LAMMPS_SMALLBIG)
|
||||||
fputs("-DLAMMPS_SMALLBIG\n",fp);
|
fputs("-DLAMMPS_SMALLBIG\n",fp);
|
||||||
#else // defined(LAMMPS_SMALLSMALL)
|
|
||||||
fputs("-DLAMMPS_SMALLSMALL\n",fp);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
utils::print(fp,"sizeof(smallint): {}-bit\n"
|
utils::print(fp,"sizeof(smallint): {}-bit\n"
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
/* We follow the behavior of regular LAMMPS compilation and assume
|
/* We follow the behavior of regular LAMMPS compilation and assume
|
||||||
* -DLAMMPS_SMALLBIG when no define is set. */
|
* -DLAMMPS_SMALLBIG when no define is set. */
|
||||||
|
|
||||||
#if !defined(LAMMPS_BIGBIG) && !defined(LAMMPS_SMALLBIG) && !defined(LAMMPS_SMALLSMALL)
|
#if !defined(LAMMPS_BIGBIG) && !defined(LAMMPS_SMALLBIG)
|
||||||
#define LAMMPS_SMALLBIG
|
#define LAMMPS_SMALLBIG
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -80,10 +80,16 @@ static constexpr uint32_t MEMCPYMASK = (static_cast<uint32_t>(1) << 31) - 1U;
|
|||||||
|
|
||||||
// default to 32-bit smallint and other ints, 64-bit bigint
|
// default to 32-bit smallint and other ints, 64-bit bigint
|
||||||
|
|
||||||
#if !defined(LAMMPS_SMALLSMALL) && !defined(LAMMPS_BIGBIG) && !defined(LAMMPS_SMALLBIG)
|
#if !defined(LAMMPS_BIGBIG) && !defined(LAMMPS_SMALLBIG)
|
||||||
#define LAMMPS_SMALLBIG
|
#define LAMMPS_SMALLBIG
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// we no longer support LAMMPS_SMALLSMALL
|
||||||
|
|
||||||
|
#if defined(LAMMPS_SMALLSMALL)
|
||||||
|
#error LAMMPS no longer supports -DLAMMPS_SMALLSMALL
|
||||||
|
#endif
|
||||||
|
|
||||||
// allow user override of LONGLONG to LONG, necessary for some machines/MPI
|
// allow user override of LONGLONG to LONG, necessary for some machines/MPI
|
||||||
|
|
||||||
#ifdef LAMMPS_LONGLONG_TO_LONG
|
#ifdef LAMMPS_LONGLONG_TO_LONG
|
||||||
@ -162,40 +168,6 @@ typedef int64_t bigint;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// for machines that do not support 64-bit ints
|
|
||||||
// 32-bit smallint/imageint/tagint/bigint
|
|
||||||
|
|
||||||
#ifdef LAMMPS_SMALLSMALL
|
|
||||||
|
|
||||||
typedef int smallint;
|
|
||||||
typedef int imageint;
|
|
||||||
typedef int tagint;
|
|
||||||
typedef int bigint;
|
|
||||||
|
|
||||||
#define MAXSMALLINT INT_MAX
|
|
||||||
#define MAXTAGINT INT_MAX
|
|
||||||
#define MAXBIGINT INT_MAX
|
|
||||||
#define MAXDOUBLEINT INT_MAX
|
|
||||||
|
|
||||||
#define MPI_LMP_TAGINT MPI_INT
|
|
||||||
#define MPI_LMP_IMAGEINT MPI_INT
|
|
||||||
#define MPI_LMP_BIGINT MPI_INT
|
|
||||||
|
|
||||||
#define TAGINT_FORMAT "%d"
|
|
||||||
#define BIGINT_FORMAT "%d"
|
|
||||||
|
|
||||||
#define LAMMPS_TAGINT LAMMPS_INT
|
|
||||||
#define LAMMPS_TAGINT_2D LAMMPS_INT_2D
|
|
||||||
#define LAMMPS_BIGINT LAMMPS_INT
|
|
||||||
#define LAMMPS_BIGINT_2D LAMMPS_INT_2D
|
|
||||||
|
|
||||||
#define IMGMASK 1023
|
|
||||||
#define IMGMAX 512
|
|
||||||
#define IMGBITS 10
|
|
||||||
#define IMG2BITS 20
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Data structure for packing 32-bit and 64-bit integers
|
/** Data structure for packing 32-bit and 64-bit integers
|
||||||
* into double (communication) buffers
|
* into double (communication) buffers
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user