Branch data Line data Source code
1 : : !!****m* ABINIT/m_lwf_dummy_mover
2 : : !! NAME
3 : : !! m_lwf_dummy_mover
4 : : !!
5 : : !! FUNCTION
6 : : !! This module contains the lwf Markov chain Monte Carlo functions for lwf mover .
7 : : !!
8 : : !!
9 : : !! Datatypes:
10 : : !!
11 : : !! * lwf_dummy_mover_t : This mover does not move lwf, instead, it allow the lwf
12 : : !! to be moved by the potential. It is used to monitor the move of lwf when the lattice mover
13 : : !! is actually used.
14 : : !!
15 : : !! Subroutines:
16 : : !! TODO: add this when F2003 doc style is determined.
17 : : !!
18 : : !!
19 : : !! COPYRIGHT
20 : : !! Copyright (C) 2001-2026 ABINIT group (hexu)
21 : : !! This file is distributed under the terms of the
22 : : !! GNU General Public License, see ~abinit/COPYING
23 : : !! or http://www.gnu.org/copyleft/gpl.txt .
24 : : !! For the initials of contributors, see ~abinit/doc/developers/contributors.txt .
25 : : !!
26 : : !! SOURCE
27 : :
28 : : #if defined HAVE_CONFIG_H
29 : : #include "config.h"
30 : : #endif
31 : : #include "abi_common.h"
32 : : module m_lwf_dummy_mover
33 : : use defs_basis
34 : : use m_abicore
35 : : use m_errors
36 : : use m_abstract_potential, only: abstract_potential_t
37 : : use m_random_xoroshiro128plus, only: rng_t
38 : : use m_hashtable_strval, only: hash_table_t
39 : : use m_multibinit_dataset, only: multibinit_dtset_type
40 : : use m_lwf_mover, only: lwf_mover_t
41 : : use m_multibinit_cell, only: mbcell_t, mbsupercell_t
42 : : implicit none
43 : : !!***
44 : : private
45 : : !----------------------------------------------------------------------
46 : : !> @brief An dummy mover for lwf
47 : : !----------------------------------------------------------------------
48 : : type,public, extends(lwf_mover_t) :: lwf_dummy_mover_t
49 : : contains
50 : : procedure :: run_one_step
51 : : end type lwf_dummy_mover_t
52 : : contains
53 : :
54 : :
55 : : !-------------------------------------------------------------------!
56 : : !> @brief: Run_one_step
57 : : !> effpot: the potential (which do the calculation of E and dE/dvar)
58 : : !> param[in]: effpot
59 : : !> param[in]: (optional) displacement
60 : : !> param[in]: (optional) strain
61 : : !> param[in]: (optional) spin
62 : : !> param[in]: (optional) lwf
63 : : ! NOTE: No need to pass the variable already saved in the mover.
64 : : ! e.g. For spin mover, do NOT pass the spin to it.
65 : : ! The other variables are only required if there is coupling with
66 : : ! the mover variable.
67 : : !-------------------------------------------------------------------!
68 : 0 : subroutine run_one_step(self, effpot, displacement, strain, spin, lwf, energy_table)
69 : : class(lwf_dummy_mover_t), intent(inout) :: self
70 : : real(dp), optional, intent(inout) :: displacement(:,:), strain(:,:), spin(:,:), lwf(:)
71 : : type(hash_table_t), optional, intent(inout) :: energy_table
72 : : class(abstract_potential_t), intent(inout) :: effpot
73 : 0 : ABI_UNUSED_A(self)
74 : 0 : ABI_UNUSED_A(effpot)
75 : 0 : ABI_UNUSED_A(displacement)
76 : 0 : ABI_UNUSED_A(strain)
77 : 0 : ABI_UNUSED_A(spin)
78 : 0 : ABI_UNUSED_A(lwf)
79 : 0 : ABI_UNUSED_A(energy_table)
80 : 0 : end subroutine run_one_step
81 [ # # # # : 0 : end module m_lwf_dummy_mover
# # # # #
# # # # #
# # # # #
# # # ]
|