chi3D manual
chi3D - is a powerful nonlinear ultrashort pulse interaction and propagation toolbox
The class chi3D includes:
- pulse treating in (3+1) dimensions (x,y,t)+z or (2+1)D (x,t)+z if Ny is set to 1- dispersion, diffraction, walk-off, non-collinear propagation in isotropic or birefringent materials within a XY,XZ or YZ-plane
- all second order nonlinearities and interactions of ultrashort/broadband laser pulses, e.g. SHG,SFG,DFG(OPCPA),OPG
- selfphase modulation, self-focusing, self-steepening
- useful tools like telescopes, compression, non-collinear propagation, pulse-font tilting
Syntax examples:
Use the chi2D user interface (3D button) to generate a chi3D Matlab script based on the parameters as set in the current chi2D session
%create an instance of chi3D. Without further inputs the new object of chi3D is predefined as an example to compute a simple second harmonic %generation of pulse1 in obj.beamProp
obj=chi3D;
%start the computation using the run method of the class for the predefined %example:
[Eftfxfy_o,Eftfxfy_e]=obj.run({'pulse1'});
%use {pulse1,'PropertyName',propertyvalue} To change one or more properties of obj, e.g. pulse energy or propagation direction of pulse 1 within the run-%method:
[Eftfxfy_o,Eftfxfy_e]=obj.run({'pulse1','EorI',0.5e-6,'alpha_x',-0.1},{'pulse2','alpha_x',+0.1});
%create an instance of chi3D and change the predefined properties
obj=chi3D('PropertyName',propertyvalue);
obj=chi3D('PropertyName',propertyvalue,'PropertyName2',propertyvalue2);
%the properties of obj can also be changed later:
obj('PropertyName',propertyvalue);
%makes a deep copy of obj:
obj2=obj.copy();
%makes a deep copy of obj with changed properties:
obj2=obj('PropertyName',propertyvalue);
%read out property values:
propertyValue=obj.PropertySpace.PropertyName;
Properties
A simulation object, e.g. SHG, prop_inWindow, etc., is fully defined in six property spaces:
simProp
|
contains all physical and computational definitions
|
beamProp
|
contains all pulse and field definitions
|
detectors
|
defines observers to calculate properties like energy, peak power, etc. under restrictions, e.g. spectral range, polarization, etc.
|
constVars
|
constant scalar variables automatically calculated
|
constVect
|
constant one or two dimensional vectors automatically calculated
|
simResults
|
contains the measured pulse properties as defined in detectors
|
Detectors
%delete detectors
obj.detectors = rmfield(obj.detectors,'detectorName');
obj.detectors = rmfield(obj.detectors,fieldnames(obj.detectors)); %delete all
%define or set new detectors
obj.detectors.detectorName.detectorProperty=detectorValue;
Class methods
overview
changeWindowSize
|
adapts Eftfxfy for a new set of sampling parameters Nx/dx Ny/dy Nt/dt
|
clearResults
|
deletes the content in obj.simResults
|
copy
|
returns a deep copy
|
freeMemRequ
|
returns estimate of required free memory space (e.g. on GPU) based on the set simulation parameters of the chi3D object
|
fresnelReflex
|
returns the Fresnel reflex at a surface for a certain angle, polarization, crystal cut and wavelength
|
fwhm
|
returns the full width half maximum of a function y=f(x)
|
galileiTelescope
|
returns a new field Eftfxfy applying Galilei telescope to the input field Efxfyft
|
getAmplitude
|
returns a normalized Gaussian, super-Gaussian or Hermite polynomial distribution
|
getFields
|
returns a 2 or 3 dimensional ordinary /extraordinary electrical field distributions as defined in obj.beamProp and/or additional input fields
|
getResults
|
updates and returns the measured properties in obj.simResults with respect to the definitions in obj.detectors
|
getSpectrum
|
returns spectrum and phase of Eftfxfy
|
getSpectrumN
|
returns spectrum and phase of Eftfxfy with zero padding to extend the time vactor to N elements
|
importImageData
|
imports two dimensional image data from file formated as ASCII, xls, bmp, jpg (only grey scale), etc.
|
index
|
returns the refractive index calculated from Sellmeier equations as defined in Materials folder
|
interpBeamProfile
|
interpolates a loaded two dimensional input field to the x,y-dimensions and the sampling of a given chi3D object. The method includes an automatic offset subtraction assuming the background to be the maximum value in a 10 pixel broad margin around the input image. All values smaller zero are set to zero
|
interpPhase
|
interpolates a loaded one dimensional input phase to the ft-dimensions and the sampling of a given chi3D object
|
interp_n2
|
interpolates a loaded one dimensional input chromatic n2 to the ft-dimensions and the sampling of a given chi3D object
|
interpSpectrum
|
interpolates a loaded one dimensional input spectrum to the ft-dimensions and the sampling of a given chi3D object. The method includes the conversion of the spectral power density from equidistant wavelength to equidistant frequency axis
|
mac
|
returns Mac address used for license check
|
minNspace
|
computes the minimum number of sampling points in space Nx or Ny
|
minNtime
|
computes the minimum number of sampling points in time Nt
|
pm
|
show phase matching plot lambda vs. alpha of the current crystal parameters as defined in obj.simProp
|
recenter
|
shifts the pulse in x, y and/or t back to zero
|
relayTelescope
|
returns a new field Eftfxfy by applying Relay telescope with to the input field Efxfyft
|
removeDetectors
|
deleltes on or more detectors in obj.detectors
|
run
|
computes the propagation of pulse and field defined in obj.beamProp through the defined medium, taking into account the effects as defined in obj.simProp
|
showProgress
|
shows progress bar(s) in loops
|
spectralFilter
|
filter which sets all matrix elements in the spectral field beyond the defined temporal and spatial frequency windows to zero
|
shiftFrequencyWindow
|
with shiftFrequencyWindow=0 the spectral window is defined from the smallest sampled frequency (1/tWindow) until largest sampled frequency (1/dt), setting shiftFrequencyWindow to a new smallest frequency to shift the frequency window used in the simulation
|
Syntax examples for class methods
chi3D/changeWindowSize
changeWindowSize - adapts Eftfxfy for a new set of sampling parameters Nx/dx Ny/dy Nt/dt. This can be used to change the span of the frequency window. The minium frequency as set in obj.simProp.shiftFreWindow will be not changed by this function (use shiftFrquencyWindow).
%Syntax:
[new_E_ftfxfy_o,new_E_ftfxfy_e,New_tWindow,New_xWindow,New_yWindow]=obj.changeWindowSize(Eftfyfx_o,Eftfyfx_e,'PropertyName',propertyvalue)
%Variables:
Eftfyfx_o
|
ordinary spectral field with old sampling parameters as def. in obj
|
Eftfyfx_e
|
extraord spectral field with old sampling parameters as def. in obj
|
obj
|
object of chi3D
|
new_...
|
new fields and sampling parameters, the window size is calculated so that the new dt,dy,dx is a multiple of the initial
|
%Properties:
Nt
|
[obj.simProp.Nt (default), interger] - target Nt
|
Nx
|
[obj.simProp.Nt (default), interger] - target Nx
|
Ny
|
[obj.simProp.Nt (default), interger] - target Ny
|
tWindow
|
[obj.simProp.tWindow (default), number] - target tWindow
|
xWindow
|
[obj.simProp.xWindow (default), number] - target xWindow
|
yWindow
|
[obj.simProp.yWindow (default), number] - target yWindow
|
chi3D/shiftFrequencyWindow
shiftFrequencyWindow - shifts the temporal frequency window (fmin - fmax) to a new minimum frequency fmin without changing the span (use changeWindowSize)
%Syntax:
[new_E_ftfxfy_o,new_E_ftfxfy_e,New_shiftFreqWindow]= shiftFrequencyWindow (obj,Eftfyfx_o,Eftfyfx_e,target_shiftFreqWindow)
%Variables:
Eftfyfx_o
|
ordinary spectral field with old sampling parameters as def. in obj
|
Eftfyfx_e
|
extraord spectral field with old sampling parameters as def. in obj
|
new_...
|
new fmin of the temporal frequency window
|
chi3D/clearResults
clearResults - delete the content in obj.simResults
Syntax:
obj.clearResults
chi3D/copy
copy - deep copy of input obj
Syntax:
obj2=obj.copy;
chi3D/freeMemRequ
freeMemRequ
|
returns the estimated free memory required for the simulation based on obj.simProp.Nx Ny Nt
|
Syntax:
obj.freeMemRequ;
chi3D/fresnelReflex
fresnelReflex
|
calculates the Fresnel reflex at a surface for a certain angle, polarization, crystal cut and wavelength
|
Syntax:
[Rp,Rs] = obj.fresnelReflex(alpha,index)
obj
|
object of chi3D
|
alpha
|
incident angle (rad)
|
index
|
refractive index
|
Rp
|
reflectivity parallel to the surface of incidents
|
Rs
|
reflectivity perpendicular to the surface of incidents
|
yWindow
|
[obj.simProp.yWindow (default), number] - target yWindow
|
chi3D/fwhm
fwhm
|
returns the full width half maximum of a function y=f(x)
|
Syntax:
fwhm = obj.fwhm(x,y)
chi3D/galileiTelescope
galileiTelescope
|
returns a new field Eftfxfy by applying Galilei telescope with to the input field Efxfyft
|
Syntax:
[new_E_ftfxfy] = obj.galileiTelescope(Eftfyfx,'PropertyName',propertyvalue)
Eftfyfx
|
spectral input field with the sampling parameters as def. in obj
|
obj
|
object of chi3D
|
Properties:
magnification
|
[1 (default)] - defines the radius cuv. R1=2*length/(1-magnification)) and R2=-magnification*R1 separated by a geometrical distance of R1/2+R2/2;
|
material
|
['Air' (default)] - medium between lenses/mirrors
|
Nz
|
[1 (default)] - number of steps in medium between lenses/mirrors (important for SPM calculation)
|
length
|
[1 (default)] - total length of the telescope (m)
|
SPMOn
|
[0 (default)] - if set to 1 SPM is taken into account
|
selfFocusingOn
|
[0 (default)] - if set to 1 self-focusing is taken into account
|
n2
|
[0 (default)] - third order nonlinear coefficient (m/W)
|
centerRadCurv
|
[1 (default)] - automatically centers the mirrors/lenses with respect to the input beam
|
plotIntegratedProfiles
|
[0 (default)] plots the integrated pulse profiles in space-time and spectral domain
|
showResultEach
|
[0 (default)] – updates the measured pulse properties in obj.simResults as defined in obj.detectors each step N. If set to 0 only the first and the last step is considered.
|
chi3D/getAmplitude
getAmplitude
|
returns a normalized Gaussian, super-Gaussian or Hermite polynomial distribution
|
%Syntax:
obj.getAmplitude(sigma,N)
obj.getAmplitude(sigma,N,'PropertyName',propertyvalue))
obj
|
instance of chi3D
|
sigma
|
normalized width (2th momentum) of the intensity distribution
|
N
|
length of the generated vector
|
%Properties:
gauss
|
[is default property, has no propertyValue] - exp( -(2) .*(x./sigma).^2;
|
supergauss
|
['10' (default) | int] - exp( -(2) .* (x./sigma).^(2*round(power/2)));
|
TEMox
|
['1' (default) | int] - number of zeros of the Hermite polynomial Hn(k+1,1:k+1)=2*[Hn(k,1:k) 0]-2*(k-1)*[0 0 Hn(k-1,1:k-1)]; ;
|
chi3D/getFields
getFields
|
returns a 2 or 3 dimensional ordinary / extraordinary electrical field distributions as defined in obj.beamProp and/or additional input fields
|
%Syntax:
[Eftfxfy_o,Eftfxfy_e] = obj.getFields({pulse|field})
[Eftfxfy_o,Eftfxfy_e] = obj.getFields({'pulse1'},{'pulse2'})
[Eftfxfy_o,Eftfxfy_e] = obj.getFields({'pulse1','PropertyName',propertyvalue})
[Eftfxfy_o,Eftfxfy_e] = obj.getFields({'pulse1','BeamProfile',I_xy})
[Eftfxfy_o,Eftfxfy_e] = obj.getFields({'pulse1','Spectrum',I_ft})
[Eftfxfy_o,Eftfxfy_e] = obj.getFields({'pulse1','Spectrum',I_ft,'Phase',Phi_ft})
[Eftfxfy_o,Eftfxfy_e] = obj.getFields({'field1','Eftfxfy',Eftfxfy})
[Eftfxfy_o,Eftfxfy_e] = obj.getFields({'field1','Eftfxfy',Eftfx}) %for obj.simProp.Ny=1
obj
|
instance of chi3D
|
pulse|field
|
ordinary / extraordinary start fields as defined in obj.beamProp
|
BeamProfile
|
defines a real arbitrary 2D beam intensity profile of a start pulse, Ixy must have the same sampling as defined in obj.simProp
|
Spectrum
|
defines a real arbitrary 1D spectrum of a start pulse, I_ft must have the same sampling as defined in obj.simProp
|
Phase
|
defines a real arbitrary 1D phase of a start pulse, Phi_ft must have the same sampling as defined in obj.simProp
|
Eftfxfy
|
defines a complex arbitrary 2D or 3D spectral field, Eftfxfy Eftfx must have the same sampling as defined in obj.simProp
|
%Properties:
all - see help chi3D - Properties
chi3D/getResults
getFields
|
updates the measured properties in obj.simResults with respect to the definitions in obj.detectors
|
%Syntax:
results = obj.getResults(Eftfxfy_o,0);
results = obj.getResults(Eftfxfy_o,Eftfxfy_e);
results = obj.getResults(Eftfxfy_o,Eftfxfy_e,'PropertyName',propertyvalue});
obj
|
instance of chi3D
|
Eftfxfy_o
|
ordinary spectral complex electrical field sampled as def. obj.simProp
|
Eftfxfy_e
|
extra ordinary spectral complex electrical field sampled as def. in obj.simProp
|
%Properties:
see help chi3D - Properties
chi3D/getSpectrum
getSpectrum - returns spectrum and phase, group delay and group delay dispersion of Eftfxfy
%Syntax:
[I_freq,I_lam]=obj.getSpectrum(Eftfxfy) ,
[I_freq,I_lam,Phase,GD,GDD]=obj.getSpectrum(Eftfxfy) ,
[I_freq,I_lam,Phase,GD,GDD]=obj.getSpectrum(Eftfxfy,'PropertyName',propertyvalue),
obj
|
object of chi3D
|
Eftfxfy
|
complex spectral field
|
I_freq
|
normalized spectral intensity distribution for equidistant frequency axis (nm)
|
I_lam
|
normalized spectral intensity distribution for equidistant wavelength axis
|
Phase
|
spectral phase (only works for a specified angle of detection)
|
GD |
relative group delay (only works for a specified angle of detection)
Note, the GD is not given in absolute numbers. It represents the relative timing of spectral components in respect to the spectral center of gravity for a specific angle of propagation (alpha).
|
GDD |
group delay dispersion (only works for a specified angle of detection) |
%Properties:
alpha
|
[‘integrated’ (default) | string or [number,number]] – integrated over all directions or angle of detection [angle_x,angle_y]
|
detector
|
detector - [0 (default) | 0 [bool] or detector name [string]] – use predefined detector for spectral restrictions or directly the ftlim, fxlim, fylim, logscale properties
|
ftlim
|
[[0,inf] (default) | [number,number]] – optical freq. limit
|
fxlim
|
[[-inf,inf] (default) | [number,number]] – spatial freq. limits
|
fylim
|
[[-inf,inf] (default) | [number,number]] – spatial freq. limits
|
chi3D/getSpectrumN
getSpectrumN - returns lambda, spectrum vs lambda and phase, group delay and group delay dispersion of ifft(fft(Eft[@alpha],N) for a certain angle alpha with zero padding
%Syntax:
[lambda,I_lam,Phase]=obj.getSpectrumN(Eftfxfy,N,alpha) ,
[lambda,I_lam,Phase,GD,GDD]=obj.getSpectrumN(Eftfxfy,Nnew,alpha,'PropertyName',propertyvalue),
obj
|
object of chi3D
|
Eftfxfy
|
complex spectral field
|
I_freq
|
normalized spectral intensity distribution for equidistant frequency axis (nm)
|
I_lam
|
normalized spectral intensity distribution for equidistant wavelength axis
|
Phase
|
spectral phase (only works for a specified angle of detection)
|
GD |
relative group delay (only works for a specified angle of detection)
Note, the GD is not given in absolute numbers. It represents the relative timing of spectral components in respect to the spectral center of gravity for a specific angle of propagation (alpha).
|
GDD |
group delay dispersion (only works for a specified angle of detection) |
%Properties:
alpha
|
[‘integrated’ (default) | string or [number,number]] – integrated over all directions or angle of detection [angle_x,angle_y]
|
detector
|
detector - [0 (default) | 0 [bool] or detector name [string]] – use predefined detector for spectral restrictions or directly the ftlim, fxlim, fylim, logscale properties
|
ftlim
|
[[0,inf] (default) | [number,number]] – optical freq. limit
|
fxlim
|
[[-inf,inf] (default) | [number,number]] – spatial freq. limits
|
N
|
zero padding; N = N_spectrum +N_zeros
|
fylim
|
[[-inf,inf] (default) | [number,number]] – spatial freq. limits
|
chi3D/importImageData
importImageData -reads two dimensional data from file formated as ASCII, xls, bmp, jpg (only grey scale), etc.
%Syntax:
dataMatrix = obj.importImageData(FilePath);
dataMatrix
|
2D double matrix containing image data
|
%Properties:
FilePath
|
eg. '/data/beamProfile.png'
|
chi3D/index
index - returns the refractive index calculated from Sellmeier equations as defined in Materials folder
%Syntax:
n = obj.index(lambda,'PropertyName',propertyvalue))
obj
|
instance of chi3D
|
lambda
|
vector of wavelength (m) to be calc.
|
%Properties:
Material
|
['BBO' (default) | string] - in Materials;
|
Theta
|
['0' (default) | number] - angle between optical axis and the k-vetor;
|
Phi
|
['0' (default) | number] - angle between x-axis and the projection of the k-vetor on the xy-plane;
|
Ph0
|
['0' (default) | number] - angle of the E-field vector ;
|
Phi
|
['0' (default) | number] - angle of the k-vetor towards the plane of propagation
|
Temperature
|
['20' (default) | number] - crystal temperature in Celcius, Sellmeier coeff. in Materials folder must be temp. dependent
|
chi3D/interpBeamProfile
interpBeamProfile
|
interpolates a loaded two dimensional input field to the x,y-dimensions and the sampling of a given chi3D object. The method includes an automatic offset subtraction assuming the background to be the maximum value in a 10 pixel broad margin around the input image. All values smaller zero are set to zero.
|
%Syntax:
I_xy=obj.interpBeamProfile(cameraImage,pixelSize)
obj
|
instance of chi3D
|
I_xy
|
can be directly used as input field for simulation, e.g. [Eftfxfy_o,Eftfxfy_e] = obj.run({'pulse1','BeamProfile',I_xy});
|
%Properties:
cameraImage
|
output from obj.importImageData()
|
pixelSize
|
size of the matrix elements in meters
|
chi3D/interp_n2
interp_n2 |
linearly interpolates a loaded one dimensional input chromatic nonlinear refractive index to the ft-dimensions and the sampling of a given chi3D object.
|
%Syntax:
simInput_n2_ft=obj.interp_n2(lambda,n2);
obj
|
instance of chi3D
|
simInput_n2_ft
|
vetor of n2 values -> obj.simProp.n2 = simInput_n2_ft
|
%Properties:
lambda
|
wavelength in nm or m
|
n2
|
nonlinear refractive index vector
|
chi3D/interpSpectrum
interpSpectrum |
interpolates a loaded one dimensional input spectrum to the ft-dimensions and the sampling of a given chi3D object. The method includes the conversion of the spectral power density from equidistant wavelength to equidistant frequency axis.
|
%Syntax:
I_ft=obj.interpSpectrum(lambda,spectrum);
obj
|
instance of chi3D
|
I_ft
|
spectrum to be used with -> [Eftfxfy_o,Eftfxfy_e] = obj.run({'pulse1','Spectrum',I_ft});
|
%Properties:
lambda
|
wavelength in nm or m
|
spectrum |
normalized spectrum
|
chi3D/minNspace
minNspace |
computes the minimum number of sampling points in space Nx or Ny
|
%Syntax:
N = obj.minNspace(lambdaMax,alphaMax,spaceMin,n);
%Properties:
lambdaMin
|
smallest wavelength to be sampled
|
alphaMax |
largest angle to be covered
|
spaceMin |
minimum spatial window Nx or Ny as given by the largest beam size, noncollinear propagation or the walk-off
|
n |
refractiv index
|
chi3D/minNtime
minNtime |
computes the minimum number of sampling points in time Nt
|
%Syntax:
N = obj.minNtime(lambdaMin,lambdaMax,timeWindow);
%Properties:
lambdaMin
|
smallest wavelength to be sampled
|
lambdaMax |
largest wavelength to be covered - determined be obj.simProp.shiftFrequencyWindow
|
timeWindow |
minimum time window as given by the larges pulse length or group delay
|
chi3D/pm
pm
|
shows phase matching plot (sinc(1/2* dk.*crystalLength)) in respect to lambda and alpha of the current crystal parameters as defined in obj.simProp
|
%Syntax:
pm(obj);
[PMo,PMe,PMoe]=obj.pm('PropertyName',propertyvalue)
obj
|
instance of chi3D
|
alpha
|
angle (rad) towards the main propagation direction z of the simulation (as defined by theta and phi in obj.simProp or 'PropertyName',propertyvalue)
|
PMo,PMe,PMoe
|
ordinary, extraordinary and Type2 phase matching data as displayed in the phase matching figure - sinc(1/2*dk.*crystalLength)
|
%Properties:
pumpWavelength
|
[obj.beamProp.centerWavelength_pulse1 (default) | number] center wavelength (m) of pump pulse in case of DFG or one narrowband SFG-driving pulse;
|
propagationLength
|
[obj.simProp.propagationLength (default) | number] – geometrical crystal length (m)
|
pumpAngle
|
[obj.beamProp.alpha_x_pulse1 (default) | between 0 and pi/2] - angle between the k-vector of the pump pulse and the main propagation direction z of the simulation (theta and phi toward optical crystal axis)
|
theta
|
['0' (default) | between 0 and pi/2] - angle between optical axis of the crystal and main propagation direction z of the simulation
|
phi
|
[obj.simProp.phi (default) | between 0 and pi/2] - angle between optical x-axis to the projection of the k-vector on the xy-plane of the index ellipsoid of the crystal
|
pumpPolarization
|
[obj.beamProp.polarization_pulse1 (default) | 0 and pi/2] - angle between electrical field vector and plane of propagation as spanned by the k-vector of the pump pulse and the optical axis (z) of the crystal
|
chi3D/recenter
recenter |
shifts the pulse in x, y and/or t back to center in time and space
|
%Syntax:
E_ftfxfy = recenter(obj,E_ftfxfy,'x')
E_ftfxfy = recenter(obj,E_ftfxfy,'y')
E_ftfxfy = recenter(obj,E_ftfxfy,'t')
E_ftfxfy = recenter(obj,E_ftfxfy,'xy')
E_ftfxfy = recenter(obj,E_ftfxfy,'xt')
E_ftfxfy = recenter(obj,E_ftfxfy,'yt')
E_ftfxfy = recenter(obj,E_ftfxfy,'txy')
chi3D/relayTelescope
relayTelescope
|
returns a new field Eftfxfy by applying Relay telescope to the input field Efxfyft
|
%Syntax:
[new_E_ftfxfy] = obj.relayTelescope(Eftfyfx,'PropertyName',propertyvalue)
Eftfyfx
|
spectral input field with the sampling parameters as def. in obj
|
obj
|
object of chi3D
|
%Properties:
magnification
|
[1 (default)] - defines the radius cuv. R1=length/(1+magnification) and R2=length-R1 separated by a geometrical distance of R1/2+R2/2;
|
material
|
['Air' (default)] - medium between lenses/mirrors
|
Nz
|
[1 (default)] - number of steps in medium between lenses/mirrors (important for SPM calculation)
|
length
|
[8 (default)] - total length of the telescope (m)
|
SPMOn
|
[0 (default)] - if set to 1 SPM is taken into account
|
selfFocusingOn
|
[0 (default)] - if set to 1 self-focusing is taken into account
|
n2
|
[0 (default)] - third order nonlinear coefficient (m/W)
|
centerRadCurv
|
[1 (default)] - automatically centers the mirrors/lenses with respect to the input beam
|
plotIntegratedProfiles
|
[0 (default)] plots the integrated pulse profiles in space-time and spectral domain
|
showResultEach
|
[0 (default)] – updates the measured pulse properties in obj.simResults as defined in obj.detectors each step N. If set to 0 only the first and the last step is considered.
|
chi3D/removeDetectors
removeDetectors
|
deletes one or more detectors in obj.detectors
|
%Syntax:
obj = obj.removeDetectors('detector name 1');
obj = obj.removeDetectors({'detector name 1','detector name 2'});
obj = obj.removeDetectors('all')
chi3D/run
run
|
computes the propagation of pulses and field defined in obj.beamProp through the defined medium, taking into account the effects as defined in obj.simProp
|
%Syntax:
[Eftfxfy_o,Eftfxfy_e] = obj.run({pulse|field}) ;
[Eftfxfy_o,Eftfxfy_e] = obj.run({'pulse1'},{'pulse2'}) ;
[Eftfxfy_o,Eftfxfy_e] = obj.run({'pulse1','PropertyName',propertyvalue});
[Eftfxfy_o,Eftfxfy_e] = obj.run({'pulse1','BeamProfile',I_xy});
[Eftfxfy_o,Eftfxfy_e] = obj.run({'pulse1','Spectrum',I_ft});
[Eftfxfy_o,Eftfxfy_e] = obj.run({'pulse1','Spectrum',I_ft,'Phase',Phi_ft});
[Eftfxfy_o,Eftfxfy_e] = obj.run({'field1','Eftfxfy',Eftfxfy});
[Eftfxfy_o,Eftfxfy_e] = obj.run({'field1','Eftfxfy',Eftfx}); %in case of obj.simProp.Ny=1
obj
|
instance of chi3D
|
pulse|field
|
ordinary / extraordinary start fields as defined in obj.beamProp
|
BeamProfile
|
defines a real arbitrary 2D beam intensity profile of a start pulse, Ixy must have the same sampling as defined in obj.simProp
|
Spectrum
|
defines a real arbitrary 1D spectrum of a start pulse, I_ft must have the same sampling as defined in obj.simProp
|
Phase
|
defines a real arbitrary 1D phase of a start pulse, Phi_ft must have the same sampling as defined in obj.simProp
|
Eftfxfy
|
defines a complex arbitrary 2D or 3D spectral field of a start field, Eftfxfy or Eftfx must have the same sampling as defined in obj.simProp
|
%Properties:
all - see help chi3D - Properties
chi3D/showProgress
showProgress
|
show progress bar(s), e.g. in loops
|
%Syntax:
obj.showProgress(currentStep,totalNumOfSteps);
obj.showProgress(currentStep,totalNumOfSteps,id);
obj.showProgress(currentStep,totalNumOfSteps,'PropertyName',propertyvalue);
obj
|
object of chi3D
|
currentStep
|
number between 0 and totalNumOfSteps
|
id
|
integer assigning one bar in a multi progress bar
|
%Properties:
name
|
['' (default) | string]
|
chi3D/spectralFilter
spectralFilter
|
filter which sets all matrix elements in the spectral field beyond the defined temporal and spatial frequency windows to zero
|
%Syntax:
E_ftfxfy_new = spectralFilter(obj,E_ftfxfy,'PropertyName',propertyvalue);
E_ftfxfy_new = spectralFilter(obj,E_ftfxfy,'ftlim',[ft_min ft_max]);
E_ftfxfy_new = spectralFilter(obj,E_ftfxfy,'ftlim',[ft_min ft_max],'fxlim',[fx_min fx_max],'fylim',[fy_min fy_max]);
obj
|
object of chi3D
|
E_ftfxfy
|
spectral complex electrical output field as returned form the run method
|
ft fx fy
|
spectral ranges
|
%Properties:
ftlim
|
[ (default) | [0 inf]] - transmitted temporal frequency window
|
fxlim
|
[ (default) | [-inf inf]] - transmitted spatial x frequency window
|
fylim
|
[ (default) | [-inf inf]] - transmitted spatial y frequency window
|
Tino Lang