Line data Source code
1 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3 : !!!! !!!!
4 : !!!! ParaMonte: Parallel Monte Carlo and Machine Learning Library. !!!!
5 : !!!! !!!!
6 : !!!! Copyright (C) 2012-present, The Computational Data Science Lab !!!!
7 : !!!! !!!!
8 : !!!! This file is part of the ParaMonte library. !!!!
9 : !!!! !!!!
10 : !!!! LICENSE !!!!
11 : !!!! !!!!
12 : !!!! https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md !!!!
13 : !!!! !!!!
14 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16 :
17 : !> \brief
18 : !> This module contains the **internal** classes and procedures for setting up the attributes of the ParaMonte library MCMC samplers.<br>
19 : !>
20 : !> \details
21 : !> For more information, see the description of the attributes within the bodies of their constructors in this module.<br>
22 : !> Alternatively, a description of these simulation specifications is always printed out the in `_report.txt` files of each ParaMonte MCMC simulation.
23 : !>
24 : !> \note
25 : !> The contents of this module are not meant to be used by the end users of the ParaMonte library.<br>
26 : !>
27 : !> \todo
28 : !> \phigh
29 : !> The simulations specifications for a globular proposal start domain must be added.<br>
30 : !> Currently, only a cubical domain is supported, which can be difficult to deal with when the density function domain is globular.<br>
31 : !> This can be fixed by adding additional specifications:<br>
32 : !> <ol>
33 : !> <li> `proposalStartDomainBallCenter`
34 : !> <li> `proposalStartDomainBallCorMat`
35 : !> <li> `proposalStartDomainBallCovMat`
36 : !> <li> `proposalStartDomainBallStdVec`
37 : !> </ol>
38 : !>
39 : !> \devnote
40 : !> The madness seen here with module-level generics is due to the lack of support for PDTs in \gfortran{13.1} and older versions.<br>
41 : !>
42 : !> \finmain
43 : !>
44 : !> \author
45 : !> \AmirShahmoradi, Monday 00:01 AM, January 1, 2018, Institute for Computational Engineering and Sciences, University of Texas Austin
46 :
47 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
48 :
49 : module pm_sampling_mcmc_RK5
50 : #if RK5_ENABLED
51 : use pm_kind, only: RKC => RK5
52 : #define pm_sampling_scio pm_sampling_scio_RK5
53 : #define pm_sampling_base pm_sampling_base_RK5
54 : #include "pm_sampling_mcmc.imp.F90"
55 : #undef pm_sampling_base
56 : #undef pm_sampling_scio
57 : #else
58 : use pm_kind, only: RKC => RK
59 : #endif
60 : end module
61 :
62 : module pm_sampling_mcmc_RK4
63 : #if RK4_ENABLED
64 : use pm_kind, only: RKC => RK4
65 : #define pm_sampling_scio pm_sampling_scio_RK4
66 : #define pm_sampling_base pm_sampling_base_RK4
67 : #include "pm_sampling_mcmc.imp.F90"
68 : #undef pm_sampling_base
69 : #undef pm_sampling_scio
70 : #else
71 : use pm_kind, only: RKC => RK
72 : #endif
73 0 : end module
74 :
75 : module pm_sampling_mcmc_RK3
76 : #if RK3_ENABLED
77 : use pm_kind, only: RKC => RK3
78 : #define pm_sampling_scio pm_sampling_scio_RK3
79 : #define pm_sampling_base pm_sampling_base_RK3
80 : #include "pm_sampling_mcmc.imp.F90"
81 : #undef pm_sampling_base
82 : #undef pm_sampling_scio
83 : #else
84 : use pm_kind, only: RKC => RK
85 : #endif
86 0 : end module
87 :
88 : module pm_sampling_mcmc_RK2
89 : #if RK2_ENABLED
90 : use pm_kind, only: RKC => RK2
91 : #define pm_sampling_scio pm_sampling_scio_RK2
92 : #define pm_sampling_base pm_sampling_base_RK2
93 : #include "pm_sampling_mcmc.imp.F90"
94 : #undef pm_sampling_base
95 : #undef pm_sampling_scio
96 : #else
97 : use pm_kind, only: RKC => RK
98 : #endif
99 12 : end module
100 :
101 : module pm_sampling_mcmc_RK1
102 : #if RK1_ENABLED
103 : use pm_kind, only: RKC => RK1
104 : #define pm_sampling_scio pm_sampling_scio_RK1
105 : #define pm_sampling_base pm_sampling_base_RK1
106 : #include "pm_sampling_mcmc.imp.F90"
107 : #undef pm_sampling_base
108 : #undef pm_sampling_scio
109 : #else
110 : use pm_kind, only: RKC => RK
111 : #endif
112 1 : end module
|