Script for running LUKE This script is automatically generated by irunluke_jd. by J. Decker (joan.decker@cea.fr) and Y. Peysson (yves.peysson@cea.fr)
0001 % Script for running LUKE 0002 % 0003 % This script is automatically generated by irunluke_jd. 0004 % by J. Decker (joan.decker@cea.fr) and Y. Peysson (yves.peysson@cea.fr) 0005 % 0006 clear all 0007 clear mex 0008 clear functions 0009 close all 0010 warning('off','all') 0011 pause(1) 0012 % 0013 % simulation 0014 % 0015 basestr = 'TS'; 0016 shotnum = '32299'; 0017 shotime = '100.1733'; 0018 % 0019 scenario = 'Npar0_tail';% for batch savename 0020 p_opt = -1;% Figure printing or saving option (-1) none (0) printer (1) printer & file (2) file 0021 % 0022 % remote computing parameters 0023 % 0024 remnum = 0;% remote profile number. Use 0 for local sequential calculations 0025 remtimout = 0;% timeout for remote calculations, in minutes. Use (0) to return later and check results by running this script again 0026 rempause = 1;% pause between job checks (in minutes) (only for remtimout > 0) 0027 remdebugmode = 0;% debug mode (0) off (1) on 0028 remclean = 2;% clean job files/folders : both on remote and local (2), only on remote (1) or not at all (0) 0029 % 0030 % distributed computing parameters 0031 % 0032 mdce_mode_coll_dke_jd = 0;% mdce mode for wave_solver_yp : (0) none (1) jobs (2) dcluke (3) parfor (-remnum) remote on profile remnum 0033 mdce_mode_eecoll_dke_yp = 0;% mdce mode for wave_solver_yp : (0) none (1) jobs (2) dcluke (3) parfor (-remnum) remote on profile remnum 0034 mdce_mode_rfdiff_dke_jd = 0;% mdce mode for rfdiff_dke_jd : (0) none (1) jobs (2) dcluke (3) parfor (-remnum) remote on profile remnum 0035 mdce_mode_wave_solver_yp = 0;% mdce mode for wave_solver_yp : (0) none (1) jobs (2) dcluke (3) parfor (-remnum) remote on profile remnum 0036 mdce_mode_main_C3PO_jd = 0;% mdce mode for main_C3PO_jd : (0) none (1) jobs (2) dcluke (3) parfor (-remnum) remote on profile remnum 0037 % 0038 % backup & save options 0039 % 0040 opt.save = 1;% (1): save LUKE_RESULTS or return error (0): return results or error 0041 opt.fields = NaN;% selected fields in returned lukestructs. Use NaN for all fields 0042 opt.backup = 0;% (1) save fluctuation time steps (0) do not save 0043 opt.waves = 0;% (1) save waves at each time step (0) do not save 0044 % 0045 % N//0 Fluctuation model 0046 % 0047 % Note : The tail spectrum can be described either in a static mode (if 0048 % dtn_fluct_correlation_npar0_lh = Inf) or in a fluctuating mode (if 0049 % dtn_fluct_correlation_npar0_lh < Inf). 0050 % 0051 dtn_fluct_correlation_npar0_lh = Inf;% statistical autocorrelation time (normalized to the electron collision time) 0052 tail_mode = 3;% mode for tail spectrum : (0) no tail model, (1) Gaussian, (2) Linear, (3) calc_tail_jd 0053 % 0054 fwhm = 0.4;% Gaussian model. If fwhm_npar0 is 0 the width is dnpar_antenna. (tail_mode = 1 only) 0055 % 0056 Nparmax_tail = 2.5;% npar0 extend from npar_antenna to Nparmax_tail. If Nparmax_tail is 0, it is calculated by the code in main_rayinit_launch_jd.m -> 6.5/sqrt(Te0) 0057 opt_tail_0 = 0;% Final power fraction of the tail @ Nparmax_tail. 0058 n_tail = 5;% number of lobes to describe the tail. If n_tail = 0, no tail up to Nparmax_tail (tail_mode = 3 only). 0059 P_tail = NaN;% Power fraction in the tail. If NaN, it is calculated from n_tail and opt_tail (tail_mode = 3 only). 0060 % 0061 dnpar0_tail = 1;% Adjust (1) or not (0) the initial dNpar0 such that intial and tail lobes have the same width (tail_mode = 3 only). 0062 % 0063 % Note : tn is adjusted for a direct comparison with the fluctuation case 0064 % o imaginary tn and dtn are defined with respect to fluctuation times : 0065 % - tn = 100i -> 100 fluctuation phase changes 0066 % - dtn = 1i -> one internal main_dke_yp iteration between two phase changes 0067 % o real tn and dtn are defined with respect to collision times 0068 % 0069 tn = NaN;%Total normalized integration time. As an imaginary number, dkeparam.tn prescribes the number of fluctuation iterations 0070 Nfluct = 1;%ratio of LUKE internal evolution time to fluctuation time (set to 1 to adjust LUKE time step to fluctuation time step) 0071 dtn = NaN;% LUKE internal time step. As an imaginary number, dkeparam.dtn prescribes the number of internal time steps 0072 % 0073 % *********************** Specify LUKE structures ***************************** 0074 % 0075 locid_simul = '';%Simulation ID 0076 path_simul = '';%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0077 % 0078 id_dkepath = '';%For all paths used by DKE solver 0079 path_dkepath = '';%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0080 % 0081 id_equil = [basestr,'_',shotnum,'_',shotime];%For plasma equilibrium 0082 path_equil = '';%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0083 % 0084 id_dkeparam = 'LH_RT';%For DKE code parameters 0085 path_dkeparam = '';%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0086 % 0087 id_dkedisplay = 'NO_DISPLAY';%For output code display 0088 path_dkedisplay = '';%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0089 % 0090 id_ohm = '';%For Ohmic electric contribution 0091 path_ohm = '';%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0092 % 0093 ids_wavestruct = {'C3PO_LH_C3_ne3'};%For RF waves contribution (put all the type of waves needed) 0094 paths_wavestruct = {''};%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0095 % 0096 id_transpfaste = 'ES_0_Dr0_0.2';%For fast electron radial transport 0097 path_transpfaste = '';%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0098 % 0099 id_ripple = '';%For fast electron magnetic ripple losses 0100 path_ripple = '';%if nothing is specified, the working directory is first used and then MatLab is looking in all the path 0101 % 0102 %************************************************************************************************************************************ 0103 % 0104 [dkepath,equil,dkeparam,dkedisplay,ohm,wavestructs,transpfaste,ripple] = load_structures_yp('dkepath',id_dkepath,path_dkepath,'equil',id_equil,path_equil,'dkeparam',id_dkeparam,path_dkeparam,'dkedisplay',id_dkedisplay,path_dkedisplay,'ohm',id_ohm,path_ohm,'wavestructs',ids_wavestruct,paths_wavestruct,'transpfaste',id_transpfaste,path_transpfaste,'ripple',id_ripple,path_ripple); 0105 % 0106 %************************************************************************************************************************************ 0107 % 0108 dkeparam.timevol = 1;%to calculate time evolution of moments 0109 dkeparam.opt_struct = 1;% (0) select only main fields from structures (not compatible with fluctuations); (1) select all fields; (2) also select ZXYD_rf 0110 dkeparam.tn = tn;% as an imaginary number, dkeparam.tn prescribes the number of fluctuation iterations 0111 dkeparam.dtn = dtn;% internal LUKE time step. As an imaginary number, dkeparam.dtn prescribes the number of internal time steps 0112 dkeparam.Nfluct = Nfluct;%ratio of LUKE internal evolution time to fluctuation time (set to 1 to adjust LUKE time step to fluctuation time step) 0113 % 0114 dkeparam.clustermode.coll_dke_jd.scheduler.mode = mdce_mode_coll_dke_jd;%MatLab distributed computing environment disabled (0), enabled with the dedicated toolbox (1), enabled with a private method (2) for the function coll_dke_jd.m (MDC toolbox must be installed for option 1) 0115 dkeparam.clustermode.eecoll_dke_yp.scheduler.mode = mdce_mode_eecoll_dke_yp;%MatLab distributed computing environment disabled (0), enabled with the dedicated toolbox (1), enabled with a private method (2) for the function coll_dke_jd.m (MDC toolbox must be installed for option 1) 0116 dkeparam.clustermode.wave_solver_yp.scheduler.mode = mdce_mode_wave_solver_yp;%MatLab distributed computing environment disabled (0), enabled with the dedicated toolbox (1), enabled with a private method (2) for the function coll_dke_jd.m (MDC toolbox must be installed for option 1) 0117 dkeparam.clustermode.rfdiff_dke_jd.scheduler.mode = mdce_mode_rfdiff_dke_jd;%MatLab distributed computing environment disabled (0), enabled with the dedicated toolbox (1), enabled with a private method (2) for the function coll_dke_jd.m (MDC toolbox must be installed for option 1) 0118 % 0119 % Perturbation of the launched npar for the LH wave only (simulate possible diffraction of the LH wave in the SOL by edge density fluctuations) 0120 % 0121 tail.dtn = dtn_fluct_correlation_npar0_lh;% Note : from Gaussian time correlation model - see calc_dtn_fluct_jd - dtn_fluct_npar0_lh = 2.14*dtn_fluct_correlation_npar0_lh (if dtn_fluct_npar0_lh is Inf, no fluctuations) 0122 tail.mode = tail_mode;% mode for tail spectrum : (0) Gaussian, (1) Linear, (2) calc_tail_jd 0123 % 0124 tail.bfwhm = fwhm;%Gaussian distribution for npar0 around npar_antenna given in the launch structure. If bfwhm is 0, the width is dnpar_antenna. 0125 % 0126 tail.bNparmax_tail = Nparmax_tail;%npar0 extend from npar_antenna to Nparmax_tail. If Nparmax_tail is NaN or empty, it is calculated by the code in main_rayinit_launch_jd.m -> 6.5/sqrt(Te0) 0127 tail.bn_tail = n_tail;%number of lobes to describe the tail. If n_tail = 0, no tail up to Nparmax_tail (no used if linear_tail is chosen) 0128 tail.bP_tail = P_tail;%Power fraction in the tail. If NaN, it is calculated from n_tail and opt_tail (no used if linear_tail is chosen) 0129 tail.bopt_tail = opt_tail_0 + dnpar0_tail*1i;%Final power fraction of the tail @ Nparmax_tail (+1i) Adjust initial dNpar0 such that initial and tail lobes have the same width 0130 % 0131 if ~isempty(locid_simul), 0132 locid_simul_tail = [make_tail_simulid_jd(tail),'_',locid_simul]; 0133 else 0134 locid_simul_tail = make_tail_simulid_jd(tail); 0135 end 0136 % 0137 for iw = 1:length(wavestructs), 0138 wavestructs{iw}.launch.tail = tail; 0139 wavestructs{iw}.C3POparam.clustermode.main_C3PO_jd.scheduler.mode = mdce_mode_main_C3PO_jd;%MatLab distributed computing environment disabled (0), enabled with the dedicated toolbox (1), enabled with a private method (2) for the function coll_dke_jd.m (MDC toolbox must be installed for option 1) 0140 end 0141 % 0142 lukestruct.simul.locid = locid_simul_tail; 0143 lukestruct.equil = equil; 0144 lukestruct.dkeparam = dkeparam; 0145 lukestruct.dkedisplay = dkedisplay; 0146 lukestruct.ohm = ohm; 0147 lukestruct.waves = ''; 0148 lukestruct.wavestructs = wavestructs; 0149 lukestruct.transpfaste = transpfaste; 0150 lukestruct.ripple = ripple; 0151 lukestruct.opt = opt; 0152 % 0153 dkepath.remnum = remnum; 0154 dkepath.remtimout = remtimout; 0155 dkepath.rempause = rempause; 0156 dkepath.debugmode = remdebugmode; 0157 dkepath.clean = remclean; 0158 % 0159 lukestructs = run_lukert({lukestruct},dkepath); 0160 % 0161 % ---------------------------------------------- Save batch results ---------------------------------------------- 0162 % 0163 % Note : opt.save = 0, results or jobs are saved in file LUKE_BATCH_... 0164 % 0165 % To process and save individual LUKE_RESULTS files, use : 0166 % >> completed_jobs = load_batch_jd('LUKE_BATCH_....mat') 0167 % 0168 % If not all jobs are completed, use again with : 0169 % >> completed_jobs = load_batch_jd('LUKE_BATCH_....mat',completed_jobs) 0170 % 0171 if opt.save == 0, 0172 save_batch_jd(lukestructs,dkepath,scenario) 0173 end 0174 % 0175 if remnum == 0 || remtimout > 0,% results are returned 0176 % 0177 % LUKE results 0178 % 0179 opt.save = 0; 0180 opt.nr_dep = 0; 0181 opt.spec = 0; 0182 opt.peak = 'y'; 0183 opt.wave = 'y'; 0184 opt.rho = 't'; 0185 opt.blist = []; 0186 opt.diaryname = ['res_',id_equil,'_',scenario]; 0187 % 0188 proc_luke_jd(lukestructs{1}.output,0,p_opt,0.1,NaN,'',opt); 0189 % 0190 % HXR results 0191 % 0192 hxr_file = ['HXR_',basestr,'_',shotnum]; 0193 exp_file = ['HXREXP_',basestr,'_',shotnum]; 0194 % 0195 dtexp = 0.2;%HXR averaging time 0196 texp = str2double(shotime) + [-dtexp/2,dtexp/2]; 0197 ic = 22:59;% horizontal camera is 22-59 0198 krange = [50,110];%energy range considered 0199 % 0200 opt.icrej_exp = [24,30,46,47,52,53];% chords to be rejected 0201 opt.icc = 41;%chord number for display 0202 % 0203 fproc_hxr(basestr,path_simul,lukestructs{1}.output.dke_out.simul.id,hxr_file,exp_file,texp,ic,krange,opt,1,p_opt) 0204 end 0205 %