diff --git a/matlab_functions/+multem_input/parameters.m b/matlab_functions/+multem_input/parameters.m index f21fd5cc..121f4cac 100644 --- a/matlab_functions/+multem_input/parameters.m +++ b/matlab_functions/+multem_input/parameters.m @@ -239,10 +239,15 @@ output_area_iy_e(1,1) double = 0.0; % y-final in pixel end methods - function out_mt = ilc_incident_wave(obj) + function out_mt = ilc_incident_wave(obj, space) + % Optional parameter space: + % 1: real space (default), 2: reciprocal space + if nargin < 2 + space = 1; + end prms = obj.toStruct; clear ilc_incident_wave; - out_mt = ilc_incident_wave(prms.system_conf, prms); + out_mt = ilc_incident_wave(prms.system_conf, prms, space); end function out_mt = ilc_multem(obj) prms = obj.toStruct; diff --git a/mex_files_multem/ilc_incident_wave.cu b/mex_files_multem/ilc_incident_wave.cu index 828908a3..de5fb094 100644 --- a/mex_files_multem/ilc_incident_wave.cu +++ b/mex_files_multem/ilc_incident_wave.cu @@ -141,7 +141,7 @@ void set_struct_incident_wave(TOutput_Multislice &output_multislice, mxArray *&m } template -void run_incident_wave(mt::System_Configuration &system_conf, const mxArray *mx_input_multislice, mxArray *&mx_output_multislice) +void run_incident_wave(mt::System_Configuration &system_conf, const mxArray *mx_input_multislice, mxArray *&mx_output_multislice, enum mt::eSpace space) { mt::Input_Multislice input_multislice; read_input_multislice(mx_input_multislice, input_multislice); @@ -157,7 +157,7 @@ void run_incident_wave(mt::System_Configuration &system_conf, const mxArray *mx_ mt::Output_Multislice output_multislice; output_multislice.set_input_data(&input_multislice); - incident_wave(mt::eS_Real, output_multislice); + incident_wave(space, output_multislice); stream.synchronize(); @@ -172,21 +172,27 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { auto system_conf = mt::read_system_conf(prhs[0]); int idx_0 = (system_conf.active)?1:0; + auto space = mt::eS_Real; + + if (nrhs > idx_0+1) + { + space = (mt::eSpace)(int)mxGetScalar(prhs[idx_0+1]); + } if(system_conf.is_float_host()) { - run_incident_wave(system_conf, prhs[idx_0], plhs[0]); + run_incident_wave(system_conf, prhs[idx_0], plhs[0], space); } else if(system_conf.is_double_host()) { - run_incident_wave(system_conf, prhs[idx_0], plhs[0]); + run_incident_wave(system_conf, prhs[idx_0], plhs[0], space); } else if(system_conf.is_float_device()) { - run_incident_wave(system_conf, prhs[idx_0], plhs[0]); + run_incident_wave(system_conf, prhs[idx_0], plhs[0], space); } else if(system_conf.is_double_device()) { - run_incident_wave(system_conf, prhs[idx_0], plhs[0]); + run_incident_wave(system_conf, prhs[idx_0], plhs[0], space); } } \ No newline at end of file