8 #include "sll_working_precision.h"
9 #include "sll_memory.h"
25 sll_real64,
pointer :: control_variate_parameters(:) => null()
52 sll_real64,
optional,
intent( in ) :: xi(:)
53 sll_real64,
optional,
intent( in ) :: vi(:)
54 sll_real64,
optional,
intent( in ) :: time
66 sll_real64,
intent( in ) :: xi(:)
67 sll_real64,
intent( in ) :: vi(:)
68 sll_real64,
intent( in ) :: time
69 sll_real64,
intent( in ) :: weight_ff
70 sll_real64,
intent( in ) :: g0
71 sll_real64 :: weight_df
73 weight_df = weight_ff - self%control_variate(xi, vi, time)/g0
81 sll_real64,
target,
optional,
intent(in) :: parameters(:)
84 self%control_variate => control_function
86 if (
present(parameters)) self%control_variate_parameters => parameters
88 if (
present(distribution_params)) self%control_variate_distribution_params => distribution_params
98 self%control_variate_parameters => null()
99 self%control_variate_distribution_params => null()
1d real function, abstract interface for function defining the control variate
real(kind=f64) function update_df_weight(self, xi, vi, time, weight_ff, g0)
Update the delta f weights.
subroutine free_control_variate(self)
Destructor.
subroutine init_control_variate(self, control_function, parameters, distribution_params)
Initialization.
Parameters to define common initial distributions.
Module to select the kind parameter.
real(kind=f64) function, dimension(size(particle, 2)) control_variate(particle)
Abstract data type for parameters of initial distribution.