diff --git a/cpp/full_code/ornstein_uhlenbeck_process.cpp b/cpp/full_code/ornstein_uhlenbeck_process.cpp index 849231de5bd09d08cf8697b733ab748e8be06ae7..42cdfdcb868b6969271bc2dfc377f13ff02bc29f 100644 --- a/cpp/full_code/ornstein_uhlenbeck_process.cpp +++ b/cpp/full_code/ornstein_uhlenbeck_process.cpp @@ -152,6 +152,81 @@ void ornstein_uhlenbeck_process<rnumber,be>::initialize_B() }); } +template <class rnumber, field_backend be> +void ornstein_uhlenbeck_process<rnumber,be>::add_to_field_replace( + field<rnumber, be, THREE> *src) +{ + assert(src->real_space_representation==false); + this->kk->CLOOP_K2( + [&](ptrdiff_t cindex, + ptrdiff_t xindex, + ptrdiff_t yindex, + ptrdiff_t zindex, + double k2){ + + if (k2 <= this->ou_kmax_squ && k2 >= this->ou_kmin_squ) + { + src->cval(cindex,0,0) = this->ou_field->cval(cindex,0,0); + src->cval(cindex,1,0) = this->ou_field->cval(cindex,1,0); + src->cval(cindex,2,0) = this->ou_field->cval(cindex,2,0); + + src->cval(cindex,0,1) = this->ou_field->cval(cindex,0,1); + src->cval(cindex,1,1) = this->ou_field->cval(cindex,1,1); + src->cval(cindex,2,1) = this->ou_field->cval(cindex,2,1); + } + // else { + // assert(src->cval(cindex,0,0) == this->ou_field->cval(cindex,0,0)); + // } + + } + + ); +} + +template <class rnumber, field_backend be> +void ornstein_uhlenbeck_process<rnumber,be>::add_to_field_sharp( + field<rnumber, be, THREE> *src) +{ + assert(src->real_space_representation==false); + this->kk->CLOOP_K2( + [&](ptrdiff_t cindex, + ptrdiff_t xindex, + ptrdiff_t yindex, + ptrdiff_t zindex, + double k2){ + + if (k2 <= this->ou_kmax_squ && k2 >= this->ou_kmin_squ) + { + + } + + } + + ); +} + +template <class rnumber, field_backend be> +void ornstein_uhlenbeck_process<rnumber,be>::add_to_field_gaussian( + field<rnumber, be, THREE> *src, double param) +{ + assert(src->real_space_representation==false); + this->kk->CLOOP_K2( + [&](ptrdiff_t cindex, + ptrdiff_t xindex, + ptrdiff_t yindex, + ptrdiff_t zindex, + double k2){ + + if (k2 <= this->ou_kmax_squ && k2 >= this->ou_kmin_squ) + { + + } + + } + + ); +} + template class ornstein_uhlenbeck_process<float,FFTW>; template class ornstein_uhlenbeck_process<double,FFTW>; diff --git a/cpp/full_code/ornstein_uhlenbeck_process.hpp b/cpp/full_code/ornstein_uhlenbeck_process.hpp index 07c7af594bf7e1445917c57b7e144ad555ffffdd..676ec527b3598639c5b9408af29d3eb14f55b51a 100644 --- a/cpp/full_code/ornstein_uhlenbeck_process.hpp +++ b/cpp/full_code/ornstein_uhlenbeck_process.hpp @@ -50,9 +50,15 @@ class ornstein_uhlenbeck_process{ { return this->ou_energy_amplitude * pow(ksqu,1./3.); } - // double sigma(double k_abs); void initialize_B(void); - // void fill_number_of_modes(double dk, double kmax); + + void add_to_field_gaussian( + field<rnumber,be,THREE> *src, double param); + void add_to_field_sharp( + field<rnumber,be,THREE> *src); + void add_to_field_replace( + field<rnumber,be,THREE> *src); + };