0001 function [status,result] = write_launchs_ITM(wave,numshot,numrun,time)
0002
0003
0004
0005
0006
0007
0008 if nargin < 3,error('Not enough input arguments in write_launchs_ITM.m');end
0009 if nargin == 3,
0010 time = [0];
0011 end
0012
0013 status = 0;
0014 result = '';
0015 [qe,me,mp,mn,e0,mu0,re,mc2,clum] = pc_dke_yp;
0016
0017 ntime = length(time);
0018
0019 try,
0020 equil = loadCPO('equilibrium',numshot,numrun);
0021
0022 import ualmemory.javainterface.*;
0023
0024 Rgeo = equil.eqgeometry.geom_axis.r;
0025 Zgeo = equil.eqgeometry.geom_axis.z;
0026
0027 if isinf(Rgeo),
0028 status = -1;
0029 result = 'WARNING: C3PO launchs structure incompatible with infinite major radius, i.e. cylindrical geometrical configuration.';
0030 return
0031 end
0032
0033 expIdx = UALAccess.create('euitm',numshot,numrun,numshot,0);
0034 launchCPO = CPO_create('launchs',ntime);
0035
0036 for it = 1:ntime,
0037
0038
0039
0040
0041
0042 launchCPO(it).datainfo.dataprovider = 'Yves Peysson & Joan Decker, CEA/DSM/IRFM';
0043 launchCPO(it).datainfo.putdate = date;
0044 launchCPO(it).datainfo.source = 'LUKE package';
0045 launchCPO(it).datainfo.comment = 'For validation use';
0046 launchCPO(it).datainfo.isref = 0;
0047 launchCPO(it).datainfo.whatref.user = 'C3PO code';
0048 launchCPO(it).datainfo.whatref.machine = '';
0049 launchCPO(it).datainfo.whatref.shot = numshot;
0050 launchCPO(it).datainfo.whatref.run = numrun;
0051
0052
0053 launchCPO(it).name = wave.rayinit.launch.id;
0054 launchCPO(it).type = wave.rayinit.launch.type;
0055 launchCPO(it).frequency = wave.rayinit.launch.omega_rf/2/pi;
0056
0057 launchCPO(it).mode = wave.waveparam.mmode;
0058
0059 if strcmp(launch.type,'EC'),
0060
0061 r = sqrt((wave.rayinit.launch.yR_L - equil.eqgeometry.geom_axis.r)^2 +(wave.rayinit.launch.yZ_L - equil.eqgeometry.geom_axis.z)^2);
0062 if wave.rayinit.launch.yR_L == equil.eqgeometry.geom_axis.r,
0063 if wave.rayinit.launch.yZ_L - equil.eqgeometry.geom_axis.z > 0
0064 theta = pi/2;
0065 else
0066 theta = -pi/2;
0067 end
0068
0069 theta = atan((wave.rayinit.launch.yZ_L - equil.eqgeometry.geom_axis.z)/(wave.rayinit.launch.yR_L - equil.eqgeometry.geom_axis.r)) + pi - pi*((wave.rayinit.launch.yR_L - equil.eqgeometry.geom_axis.r) > 0).*sign(wave.rayinit.launch.yZ_L - equil.eqgeometry.geom_axis.z);
0070 end
0071
0072 launchCPO(it).position.r = wave.rayinit.launch.yR_L;
0073 launchCPO(it).position.z = wave.rayinit.launch.yZ_L;
0074 launchCPO(it).position.phi = -wave.rayinit.launch.yphi_L;
0075 launchCPO(it).spectrum.nn_phi = 1;
0076 launchCPO(it).spectrum.nn_theta = 1;
0077 launchCPO(it).spectrum.n_phi = sin(wave.rayinit.launch.ybeta_L)*sin(wave.rayinit.launch.yalpha_L)*wave.rayinit.launch.omega_rf*wave.rayinit.launch.yR_L/clum;
0078 launchCPO(it).spectrum.n_theta = (cos(theta)*cos(wave.rayinit.launch.ybeta_L) - sin(wave.rayinit.launch.ybeta_L)*cos(wave.rayinit.launch.yalpha_L)*sin(theta))*wave.rayinit.launch.omega_rf*r/clum;
0079 launchCPO(it).spectrum.power = wave.rayinit.launch.yP_L;
0080 if isfield(launch,'w0'),
0081 launchCPO(it).beam.spot.waist = wave.rayinit.launch.w0;
0082 else
0083 launchCPO(it).beam.spot.waist = '';
0084 end
0085 launchCPO(it).beam.spot.angle = '';
0086 launchCPO(it).beam.phaseellipse.invcurvrad = '';
0087 launchCPO(it).beam.phaseellipse.angle = '';
0088 elseif strcmp(launch.type,'LH')
0089 launchCPO(it).position.r = '';
0090 launchCPO(it).position.z = wave.rayinit.launch.rZ0;
0091 launchCPO(it).position.phi = '';
0092 launchCPO(it).spectrum.nn_phi = wave.rayinit.launch.phi0;;
0093 launchCPO(it).spectrum.nn_theta = '';
0094 launchCPO(it).spectrum.n_phi = '';
0095 launchCPO(it).spectrum.n_theta = '';
0096 launchCPO(it).spectrum.power = '';
0097 launchCPO(it).beam.spot.waist = '';
0098 launchCPO(it).beam.spot.angle = '';
0099 launchCPO(it).beam.phaseellipse.invcurvrad = '';
0100 launchCPO(it).beam.phaseellipse.angle = '';
0101 else
0102 error('Error of wave type');
0103 end
0104
0105
0106
0107 launchCPO(it).codeparam.codename ='C3PO';
0108 launchCPO(it).codeparam.codeversion = [LUKEversion_jd,' - MATLAB ',version];
0109 launchCPO(it).codeparam.parameters = '';
0110 launchCPO(it).codeparam.output_diag = '';
0111 launchCPO(it).codeparam.output_flag = 0;
0112
0113
0114
0115 launchCPO(it).time = time(it);
0116 end
0117
0118 CPO_put(expIdx,launchCPO);
0119 closeBD(expIdx,'euitm',numshot,numrun);
0120 catch
0121 status = -1;
0122 result = 'WARNING: C3PO launchs unsuccessfully writen in the ITM-MDS+ database.';
0123 end
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133