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
|