37 use,
intrinsic ::
iso_c_binding,
only:
c_char,
c_funptr,
c_null_char, c_f_procpointer
81 character(:,SKG) ,
allocatable :: description
82 character(:,SKG) ,
allocatable :: domain
83 character(:,SKG) ,
allocatable :: domainAxisName(:)
84 real(
RKH) ,
allocatable :: domainBallAvg(:)
85 real(
RKH) ,
allocatable :: domainBallCor(:,:)
86 real(
RKH) ,
allocatable :: domainBallCov(:,:)
87 real(
RKH) ,
allocatable :: domainBallStd(:)
88 real(
RKH) ,
allocatable :: domainCubeLimitLower(:)
89 real(
RKH) ,
allocatable :: domainCubeLimitUpper(:)
90 integer(
IK) ,
allocatable :: domainErrCount
91 integer(
IK) ,
allocatable :: domainErrCountMax
92 character(:,SKG) ,
allocatable :: inputFile
/ / /
156 character(:,SKG) ,
allocatable :: outputChainFileFormat
157 integer(
IK) ,
allocatable :: outputColumnWidth
158 character(:,SKG) ,
allocatable :: outputFileName
159 character(:,SKG) ,
allocatable :: outputStatus
160 integer(
IK) ,
allocatable :: outputPrecision
161 integer(
IK) ,
allocatable :: outputReportPeriod
162 character(:,SKG) ,
allocatable :: outputRestartFileFormat
163 integer(
IK) ,
allocatable :: outputSampleSize
164 character(:,SKG) ,
allocatable :: outputSeparator
165 character(:,SKG) ,
allocatable :: outputSplashMode
166 character(:,SKG) ,
allocatable :: parallelism
167 logical(
LK) ,
allocatable :: parallelismMpiFinalizeEnabled
168 integer(
IK) ,
allocatable :: parallelismNumThread
169 integer(
IK) ,
allocatable :: randomSeed
170 character(:,SKG) ,
allocatable :: sysInfoFilePath
171 real(
RKH) ,
allocatable :: targetAcceptanceRate(:)
210 integer(
IK) ,
allocatable :: outputChainSize
211 integer(
IK) ,
allocatable :: outputSampleRefinementCount
212 character(:,SKG) ,
allocatable :: outputSampleRefinementMethod
213 character(:,SKG) ,
allocatable :: proposal
214 real(
RKH) ,
allocatable :: proposalCor(:,:)
215 real(
RKH) ,
allocatable :: proposalCov(:,:)
216 character(:,SKG) ,
allocatable :: proposalScale
217 real(
RKH) ,
allocatable :: proposalStart(:)
218 real(
RKH) ,
allocatable :: proposalStartDomainCubeLimitLower(:)
219 real(
RKH) ,
allocatable :: proposalStartDomainCubeLimitUpper(:)
220 logical(
LK) ,
allocatable :: proposalStartRandomized
221 real(
RKH) ,
allocatable :: proposalStd(:)
251 real(
RKH) ,
allocatable :: proposalAdaptationBurnin
252 integer(
IK) ,
allocatable :: proposalAdaptationCount
253 integer(
IK) ,
allocatable :: proposalAdaptationCountGreedy
254 integer(
IK) ,
allocatable :: proposalAdaptationPeriod
255 integer(
IK) ,
allocatable :: proposalDelayedRejectionCount
256 real(
RKH) ,
allocatable :: proposalDelayedRejectionScale(:)
316 integer(
IK) ,
allocatable :: domainPartitionAdaptationCount
317 integer(
IK) ,
allocatable :: domainPartitionAdaptationPeriod
318 logical(
LK) ,
allocatable :: domainPartitionBiasCorrectionEnabled
319 integer(
IK) ,
allocatable :: domainPartitionCountMax
320 real(
RKH) ,
allocatable :: domainPartitionFactorExpansion
321 real(
RKH) ,
allocatable :: domainPartitionFactorShrinkage
322 integer(
IK) ,
allocatable :: domainPartitionKmeansClusterCountMax
323 integer(
IK) ,
allocatable :: domainPartitionKmeansClusterSizeMin
324 logical(
LK) ,
allocatable :: domainPartitionKmeansNormalizationEnabled
325 integer(
IK) ,
allocatable :: domainPartitionKmeansNumFailMax
326 integer(
IK) ,
allocatable :: domainPartitionKmeansNumRecursionMax
327 integer(
IK) ,
allocatable :: domainPartitionKmeansNumTry
328 integer(
IK) ,
allocatable :: domainPartitionKvolumeNumRecursionMax
329 real(
RKH) ,
allocatable :: domainPartitionKvolumeWeightExponent
330 character(:,SKG) ,
allocatable :: domainPartitionMethod
331 character(:,SKG) ,
allocatable :: domainPartitionObject
332 logical(
LK) ,
allocatable :: domainPartitionOptimizationScaleEnabled
333 logical(
LK) ,
allocatable :: domainPartitionOptimizationShapeEnabled
334 logical(
LK) ,
allocatable :: domainPartitionOptimizationShapeScaleEnabled
335 real(
RKH) ,
allocatable :: domainPartitionScaleFactor
336 character(:,SKG) ,
allocatable :: domainSampler
337 integer(
IK) ,
allocatable :: liveSampleSize
338 real(
RKH) ,
allocatable :: tolerance
349#if OMP_ENABLED && (MATLAB_ENABLED || PYTHON_ENABLED || R_ENABLED)
354 function getLogFunc_proc_RK5(logFuncState, avgTimePerFunCall, avgCommPerFunCall)
result(mold)
355#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
356 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK5
359 real(RKG),
intent(inout),
contiguous :: logFuncState(
0:,:)
360 real(
RKD),
intent(inout) :: avgTimePerFunCall, avgCommPerFunCall
366 function getLogFunc_proc_RK4(logFuncState, avgTimePerFunCall, avgCommPerFunCall)
result(mold)
367#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
368 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK4
371 real(RKG),
intent(inout),
contiguous :: logFuncState(
0:,:)
372 real(
RKD),
intent(inout) :: avgTimePerFunCall, avgCommPerFunCall
378 function getLogFunc_proc_RK3(logFuncState, avgTimePerFunCall, avgCommPerFunCall)
result(mold)
379#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
380 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK3
383 real(RKG),
intent(inout),
contiguous :: logFuncState(
0:,:)
384 real(
RKD),
intent(inout) :: avgTimePerFunCall, avgCommPerFunCall
390 function getLogFunc_proc_RK2(logFuncState, avgTimePerFunCall, avgCommPerFunCall)
result(mold)
391#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
392 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK2
395 real(RKG),
intent(inout),
contiguous :: logFuncState(
0:,:)
396 real(
RKD),
intent(inout) :: avgTimePerFunCall, avgCommPerFunCall
402 function getLogFunc_proc_RK1(logFuncState, avgTimePerFunCall, avgCommPerFunCall)
result(mold)
403#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
404 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK1
407 real(RKG),
intent(inout),
contiguous :: logFuncState(
0:,:)
408 real(
RKD),
intent(inout) :: avgTimePerFunCall, avgCommPerFunCall
420 function getLogFunc_proc_RK5(state)
result(logFunc)
421#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
422 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK5
425 real(RKG),
intent(in),
contiguous :: state(:)
431 function getLogFunc_proc_RK4(state)
result(logFunc)
432#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
433 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK4
436 real(RKG),
intent(in),
contiguous :: state(:)
442 function getLogFunc_proc_RK3(state)
result(logFunc)
443#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
444 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK3
447 real(RKG),
intent(in),
contiguous :: state(:)
453 function getLogFunc_proc_RK2(state)
result(logFunc)
454#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
455 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK2
458 real(RKG),
intent(in),
contiguous :: state(:)
464 function getLogFunc_proc_RK1(state)
result(logFunc)
465#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
466 !DEC$ ATTRIBUTES DLLEXPORT :: getLogFunc_proc_RK1
469 real(RKG),
intent(in),
contiguous :: state(:)
679 impure module function getErrParaDRAM_RK5(sampler, getLogFunc, ndim)
result(err)
680#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
681 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDRAM_RK5
684 procedure(getLogFunc_proc_RK5) :: getLogFunc
685 type(paradram_type),
intent(in) :: sampler
686 integer(IK),
intent(in) :: ndim
687 type(err_type) :: err
692 impure module function getErrParaDRAM_RK4(sampler, getLogFunc, ndim)
result(err)
693#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
694 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDRAM_RK4
697 procedure(getLogFunc_proc_RK4) :: getLogFunc
698 type(paradram_type),
intent(in) :: sampler
699 integer(IK),
intent(in) :: ndim
700 type(err_type) :: err
705 impure module function getErrParaDRAM_RK3(sampler, getLogFunc, ndim)
result(err)
706#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
707 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDRAM_RK3
710 procedure(getLogFunc_proc_RK3) :: getLogFunc
711 type(paradram_type),
intent(in) :: sampler
712 integer(IK),
intent(in) :: ndim
713 type(err_type) :: err
718 impure module function getErrParaDRAM_RK2(sampler, getLogFunc, ndim)
result(err)
719#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
720 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDRAM_RK2
723 procedure(getLogFunc_proc_RK2) :: getLogFunc
724 type(paradram_type),
intent(in) :: sampler
725 integer(IK),
intent(in) :: ndim
726 type(err_type) :: err
731 impure module function getErrParaDRAM_RK1(sampler, getLogFunc, ndim)
result(err)
732#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
733 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDRAM_RK1
736 procedure(getLogFunc_proc_RK1) :: getLogFunc
737 type(paradram_type),
intent(in) :: sampler
738 integer(IK),
intent(in) :: ndim
739 type(err_type) :: err
746 impure module function getErrParaDISE_RK5(sampler, getLogFunc, ndim)
result(err)
747#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
748 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDISE_RK5
751 procedure(getLogFunc_proc_RK5) :: getLogFunc
752 type(paradise_type),
intent(in) :: sampler
753 integer(IK),
intent(in) :: ndim
754 type(err_type) :: err
759 impure module function getErrParaDISE_RK4(sampler, getLogFunc, ndim)
result(err)
760#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
761 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDISE_RK4
764 procedure(getLogFunc_proc_RK4) :: getLogFunc
765 type(paradise_type),
intent(in) :: sampler
766 integer(IK),
intent(in) :: ndim
767 type(err_type) :: err
772 impure module function getErrParaDISE_RK3(sampler, getLogFunc, ndim)
result(err)
773#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
774 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDISE_RK3
777 procedure(getLogFunc_proc_RK3) :: getLogFunc
778 type(paradise_type),
intent(in) :: sampler
779 integer(IK),
intent(in) :: ndim
780 type(err_type) :: err
785 impure module function getErrParaDISE_RK2(sampler, getLogFunc, ndim)
result(err)
786#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
787 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDISE_RK2
790 procedure(getLogFunc_proc_RK2) :: getLogFunc
791 type(paradise_type),
intent(in) :: sampler
792 integer(IK),
intent(in) :: ndim
793 type(err_type) :: err
798 impure module function getErrParaDISE_RK1(sampler, getLogFunc, ndim)
result(err)
799#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
800 !DEC$ ATTRIBUTES DLLEXPORT :: getErrParaDISE_RK1
803 procedure(getLogFunc_proc_RK1) :: getLogFunc
804 type(paradise_type),
intent(in) :: sampler
805 integer(IK),
intent(in) :: ndim
806 type(err_type) :: err
991 function runParaDRAML(getLogFunc, ndim, input)
result(stat) bind(C, name = "runParaDRAML")
992#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
995 use,
intrinsic ::
iso_c_binding,
only: SK
=> c_char, IK
=> c_int32_t,
c_long_double
996 integer,
parameter :: RKG
= merge(
c_long_double, RKH,
any(
c_long_double == RKALL))
997 character(
1, SK),
intent(in),
optional :: input(
*)
998 type(c_funptr),
intent(in),
value :: getLogFunc
999 integer(IK),
intent(in),
value :: ndim
1001#define runParaDRAM_ENABLED 1
1002#include "pm_sampling@routines.inc.F90"
1003#undef runParaDRAM_ENABLED
1006 function runParaDRAMD(getLogFunc, ndim, input)
result(stat) bind(C, name = "runParaDRAMD")
1007#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1010 use,
intrinsic ::
iso_c_binding,
only: SK
=> c_char, IK
=> c_int32_t,
c_double
1011 integer,
parameter :: RKG
= merge(
c_double, RKD,
any(
c_double == RKALL))
1012 character(
1, SK),
intent(in),
optional :: input(
*)
1013 type(c_funptr),
intent(in),
value :: getLogFunc
1014 integer(IK),
intent(in),
value :: ndim
1016#define runParaDRAM_ENABLED 1
1017#include "pm_sampling@routines.inc.F90"
1018#undef runParaDRAM_ENABLED
1021 function runParaDRAMF(getLogFunc, ndim, input)
result(stat) bind(C, name = "runParaDRAMF")
1022#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1026 use,
intrinsic ::
iso_c_binding,
only:
SK => c_char,
IK => c_int32_t,
c_float
1027 integer,
parameter :: RKG
= merge(
c_float,
RKL,
any(
c_float == RKALL))
1028 character(
1,
SK),
intent(in),
optional :: input(
*)
1029 type(c_funptr),
intent(in),
value :: getLogFunc
1030 integer(
IK),
intent(in),
value :: ndim
1032#define runParaDRAM_ENABLED 1
1033#include "pm_sampling@routines.inc.F90"
1034#undef runParaDRAM_ENABLED
Generate and return .true. if the procedure fails to fully accomplish the task of Monte Carlo samplin...
Generate and return a scalar string resulting from the concatenation of the individual elements (sing...
This module contains classes and procedures for reporting and handling errors.
character(*, SK), parameter MODULE_NAME
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
integer, dimension(*), parameter RKALL
The integer vector containing all defined real kinds within the ParaMonte library.
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
integer, parameter RKL
The scalar integer constant of intrinsic default kind, representing the lowest-precision real kind ty...
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
integer, parameter RKD
The double precision real kind in Fortran mode. On most platforms, this is an 64-bit real kind.
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
integer, parameter RKH
The scalar integer constant of intrinsic default kind, representing the highest-precision real kind t...
This module contains procedures and generic interfaces for the ParaMonte library sampler routines.
integer(IK) function runParaDRAML(getLogFunc, ndim, input)
integer(IK) function runParaDRAMF(getLogFunc, ndim, input)
integer(IK) function runParaDRAMD(getLogFunc, ndim, input)
This module contains classes and procedures for various string manipulations and inquiries.
This module contains classes and procedures for manipulating system file/folder paths.
integer(IK), parameter MAX_LEN_FILE_PATH
The scalar integer constant of default kind IK, representing the maximum system-allowed path length (...
This is the derived type for generating objects to gracefully and verbosely handle runtime unexpected...
This is a derived type for constructing objects containing the optional simulation properties of the ...
This is a derived type for constructing objects containing the optional simulation properties of the ...
This is a derived type for constructing objects containing the optional simulation properties of the ...
This is a derived type for constructing objects containing the optional simulation properties of the ...
This is a derived type for constructing objects containing the optional simulation properties of the ...