manual

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

manual

tinolang
Administrator
This post was updated on .

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

obj

           object of chi3D

 

chi3D/copy

copy - deep copy of input obj

 

Syntax:

obj2=obj.copy;

 

obj

object of chi3D

 

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);

 

obj         

instance of chi3D

 

%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);

 

obj         

instance of chi3D

 

%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')

 

obj         

instance of chi3D

 

 

 

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')

 

obj

 object of chi3D

 

 

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