Programming Reference for VirtualLab Fusion  2025.1
Loading...
Searching...
No Matches
CFieldDerivative1DReal Class Reference

This class is subject to change. Programs using this class may require changes with a new version of VirtualLab.
Class derived from ComplexField, designed especially for one dimensional, real valued data. More...

Inheritance diagram for CFieldDerivative1DReal:
ComplexFieldDerivative1D ComplexField

Public Member Functions

 CFieldDerivative1DReal ()
 Creates a CFieldDerivative1DReal with 1 sampling point. The default precision is used.
 
 CFieldDerivative1DReal (CFieldDerivative1DReal cfd)
 Copy constructor.
 
 CFieldDerivative1DReal (ComplexField cf)
 Constructor that uses an object of type ComplexField.
 
 CFieldDerivative1DReal (int samplingPoints)
 Creates a CFieldDerivative1DReal with the given number of sampling points. As CFieldDerivative1DReal objects are only used for coordinates, where a) the difference between double and float is crucial (see e.g. TT 4358) and b) only small amounts of data are expected. PrecisionMode.Double is used as default.
 
 CFieldDerivative1DReal (int samplingPoints, double value)
 Creates a CFieldDerivative1DReal with given number of sampling points using specified precision. The field will be filled with a given constant value.
 
 CFieldDerivative1DReal (int samplingPoints, PrecisionMode precision)
 Creates a CFieldDerivative1DReal with given number of sampling points using specified precision.
 
 CFieldDerivative1DReal (int samplingPoints, PrecisionMode precision, double c)
 Creates a CFieldDerivative1DReal with given number of sampling points using specified precision. The field will be filled with a given constant value.
 
override object Clone ()
 Clones this CFieldDerivative1DReal.
 
double GetCenterOfRightInterval (long x)
 Gets the linearly interpolated center between value x and value x+1.
 
long GetNearestNeighborIndex (double value, out long otherIndex)
 Gets the index of the nearest neighbor to a given value.
 
long GetNearestSmallerIndex (double value)
 Searches for the nearest smaller index (to a given value) via interval bisection.
 
long GetNearestSmallerIndex (double value, long startIndex, long endIndex)
 Searches for the nearest smaller index (to a given value) via interval bisection.
 
- Public Member Functions inherited from ComplexFieldDerivative1D
override object Clone ()
 Clones this ComplexFieldDerivative1D.
 
 ComplexFieldDerivative1D ()
 Creates a ComplexFieldDerivative1D with 1 sampling point. The default precision is used and the internal data presentation is complex.
 
 ComplexFieldDerivative1D (ComplexField cf)
 Constructor that gets an object of type ComplexField.
 
 ComplexFieldDerivative1D (ComplexFieldDerivative1D cfd)
 Copy constructor.
 
 ComplexFieldDerivative1D (int samplingPoints)
 Creates a ComplexFieldDerivative1D with given number of sampling points. The default precision is used and the internal data representation is complex.
 
 ComplexFieldDerivative1D (int samplingPoints, bool isComplex, Complex c)
 Creates a ComplexFieldDerivative1D with given number of sampling points using specified precision. The internal data representation can be complex or real. The field will be filled with a given constant value. In case of a real valued complex field only the real part of constant value is stored.
 
 ComplexFieldDerivative1D (int samplingPoints, bool isComplex, PrecisionMode precision, Complex c)
 Creates a ComplexFieldDerivative1D with given number of sampling points using specified precision. The internal data representation can be complex or real. The field will be filled with a given constant value. In case of a real valued complex field only the real part of constant value is stored.
 
 ComplexFieldDerivative1D (int samplingPoints, bool isComplex, PrecisionMode precision=PrecisionMode.Double)
 Creates a ComplexFieldDerivative1D with given number of sampling points using specified precision. The internal data representation can be complex or real.
 
void ConvertTo1DDoubleArray (out double[] doubleArrayReal, out double[] doubleArrayImaginary)
 Public support method to convert the complex field into two double arrays. (real and imaginary part will be output separately)
 
override void EmbedExtract ()
 Embeds the current ComplexFieldDerivative1D into double side-length field of zero sampling points and places the original in the middle of the new field.
 
override ComplexField EmbedExtract (Rectangle rectangle)
 Extract a region of the current ComplexFieldDerivative1D including the left corner but excluding the right corner.
 
override void EmbedExtract (Vector newSize)
 Embeds the current ComplexFieldDerivative1D into field of passed size of zero sampling points and places the original in the middle of the new field. By decreasing size, field can be extracted.
 
- Public Member Functions inherited from ComplexField
void AddConjugate ()
 Adds conjugated ComplexField to current one.
 
void AddEqual (Complex c)
 Adds a Complex to current ComplexField. See important note on ComplexField.
 
void AddEqual (ComplexField field)
 Adds a ComplexField to current one. Both field must have same number of sampling points. See important note on ComplexField.
 
void ClipAmplitude (double clippingLevel)
 Sets all amplitude value greater than clippingLevel to clippingLevel.
 
 ComplexField ()
 Creates a ComplexField with 1x1 sampling points. The default precision is used and the internal data presentation is complex.
 
 ComplexField (ComplexField field)
 Copy constructor.
 
 ComplexField (Vector samplingPoints)
 Creates a ComplexField with given number of sampling points. The default precision is used and the internal data presentation is complex.
 
 ComplexField (Vector samplingPoints, bool createComplexField, Func< int, int, double > function, ParallelizationType parallelizationType=ParallelizationType.Always)
 Constructs a ComplexField object with given number of sampling points using a real-valued function which will be evaluated to fill in the complex amplitudes. The parameters x and y of the real function are measured in pixel coordinates whose origin is the upper left corner of the field.
 
 ComplexField (Vector samplingPoints, bool isComplex, PrecisionMode precision, Complex c)
 Creates a ComplexField with given number of sampling points using specified precision. The internal data representation can be complex or real. Field is filled with constant value. In case of a real valued complex field only the real part of constant value is stored.
 
 ComplexField (Vector samplingPoints, bool isComplex, PrecisionMode precision=PrecisionMode.Double, bool initializeValues=true)
 Creates a ComplexField with given number of sampling points using specified precision. The internal data representation can be complex or real.
 
 ComplexField (Vector samplingPoints, Complex c, bool isComplex=true)
 Creates a ComplexField with given number of sampling points using specified precision. The internal data representation can be complex or real. Field is filled with constant value. In case of a real valued complex field only the real part of constant value is stored.
 
 ComplexField (Vector samplingPoints, Func< int, int, Complex > function, ParallelizationType parallelizationType=ParallelizationType.Always)
 Constructs a ComplexField object with given number of sampling points using a complex-valued function which will be evaluated to fill in the complex amplitudes. The parameters x and y of the real function are measured in pixel coordinates whose origin is the upper left corner of the field.
 
void Conjugate ()
 Conjugates current ComplexField.
 
void ConvertTo2DDoubleArray (out double[,] doubleArrayReal, out double[,] doubleArrayImaginary)
 Public support method to convert the complex field into two double arrays. (real and imaginary part will be output separately) Remark: This function was implemented to realize compatibility to Python.
 
void DivEqual (Complex c)
 Divides the present ComplexField by complex number. See important note on ComplexField.
 
void DivEqual (ComplexField field)
 Divides the present ComplexField by passed one. Both field must have same number of sampling points. See important note on ComplexField.
 
void EmbedCorner (Vector newSize)
 Embeds the current ComplexField into double side-length field of zero sampling points and places the original in bottom left corner of the new field. If the ComplexField is one-dimensional, only longer side of field is doubled.
 
override bool Equals (Object obj)
 Checks whether two complex fields represent the same values.
 
ComplexField Extract (Vector size, VectorL position, bool elliptical=false)
 Extracts the given region at given position out of the current field. Points exceeding boundaries of current field will be ignored.
 
ComplexField ExtractColumn (int colIndex)
 Extracts a column out of the current field. Points exceeding boundaries of current field will be set to zero.
 
ComplexField ExtractRow (int rowIndex)
 Extracts a row out of the current field. Points exceeding boundaries of current field will be set to zero.
 
void Fill (Complex c)
 Fills whole current ComplexField with the specified complex value.
 
void Fill (Complex c, Rectangle marker, bool inside, bool elliptical=false)
 Fills whole ComplexField inside marker with the specified complex value. If inside is set to false, field outside marker will be filled.
 
void GetAmplitude ()
 Returns ComplexField with zero phase and a magnitude equal to that of current ComplexField.
 
void GetImaginaryPart ()
 Extracts the imaginary part of current ComplexField. The real part is set to zero.
 
void GetIntensity ()
 Extracts the intensity of ComplexField and shifts to the real part of current ComplexField. The imaginary part is set to zero.
 
void GetPhase ()
 Returns ComplexField with unit magnitude and a phase equal to that of current ComplexField.
 
void GetRealPart ()
 Extracts the real part of current ComplexField. The imaginary part is set to zero.
 
void HorizontalMirror ()
 Performs a horizontal mirroring of current ComplexField. [SamplingPoints.X - x - 1, y] = [x, y].
 
void Insert (ComplexField field, VectorL position, bool elliptical=false)
 Inserts the given ComplexField into current field at given position. Points exceeding boundaries of current field will be ignored.
 
void InsertColumn (int colIndex)
 Inserts or appends empty column.
 
void InsertRow (int rowIndex)
 Inserts or appends empty row.
 
void LiftPositive ()
 Lifts real part of current ComplexField to positive numbers. Function detects the minimum real number. If this number is smaller than zero it adds the absolute value of the minimum. If the minimum real number is larger than zero the present object is returned without changes.
 
double[] LinearFit (VectorD samplDist)
 Linear regression on a real valued Complex Field (phase derivative of a CA in x resp. y) Excluded points are assumed to be marked by float.Epsilon.
 
void ModifyComplexPart (ComplexPart complexPart, bool makeRealValuedIfSuitable=false, double thresholdForPhaseArtifacts=0, double amplitudeMaximum=0)
 Extract, shifts or swaps complex parts of the complex field.
 
void ModifyPixels (Func< Complex, Complex > modificationMethod)
 Modifies all pixels in parallel. Can be used if the new pixel value depends only on the old pixel value (and maybe some fixed parameters).
 
void ModifyPixels (Func< Complex, int, int, Complex > modificationMethod)
 Modifies all pixels in parallel. Can be used if the new pixel value depends on the old pixel value and the current position in pixel coordinates (and maybe some fixed parameters).
 
void MultEqual (Complex c)
 Multiplies a Complex number to current ComplexField. See important note on ComplexField.
 
void MultEqual (ComplexField field)
 Multiplies a ComplexField with current one. Both field must have same number of sampling points. See important note on ComplexField.
 
void MultEqual (IRegion1D2D region, SamplingParameters samplingParameters)
 Multiplies a IRegion1D2D with this ComplexField.
 
void Normalize (System.Drawing.Rectangle? rectangle=null)
 Normalizes ComplexField so that maximal amplitude inside rectangle is one.
 
void PowerEqual (Complex c)
 Raises every element of current ComplexField to the power of passed complex number. See important note on ComplexField.
 
double RadiusError (double constPart, double radius, double k, VectorD dist, bool computeInX)
 compute the fit measure of the spherical phase dependent on radius in partial phase derivative
 
void Replicate (Vector newSize, VectorL shift)
 Replicates current ComplexField periodically. Needs new size.
 
void Replicate_Periodic (Vector newSize)
 Replicates current ComplexField periodically, old field is at (0,0). Needs new size.
 
void Rotate180 ()
 Rotates this ComplexField through 180° about the field center.
 
void Shift (Vector shift, bool assumePeriodicField=false)
 Shifts current ComplexField by a specified distance. Size is not modified, so sampling points can get lost.
 
void ShiftColumnFromOnePositionToAnother (int oldColIndex, int newColIndex)
 Shifts a single column from one pixel index to another.
 
void ShiftRowFromOnePositionToAnother (int oldRowIndex, int newRowIndex)
 Shifts a single row from one pixel index to another.
 
void SortColumns (int[] newColIndices)
 Method which brings all columns into a new, given order. Since this is not optimized, it shall not be used if a) the field is to be mirrored or b) only a single column is to be shifted.
 
void SortRows (int[] newRowIndices)
 Method which brings all rows into a new, given order. Since this is not optimized, it shall not be used if a) the field is to be mirrored or b) only a single row is to be shifted.
 
void SubEqual (Complex c)
 Subtracts a Complex from current ComplexField. See important note on ComplexField.
 
void SubEqual (ComplexField field)
 Subtracts a ComplexField from current one. Both field must have same number of sampling points. See important note on ComplexField.
 
void Transpose ()
 Transposes current ComplexField. This means [x, y] = [y, x].
 
void VerticalMirror ()
 Performs a vertical mirroring of current ComplexField. [x, SamplingPoints.Y - y - 1] = [x, y].
 

Properties

override bool IsComplex [get, set]
 Overrides a property in base class ComplexField. This will return always FALSE for objects of type CFieldDerivative1DReal.
 
new double this[long x] [get, set]
 Indexer to access values of a CFieldDerivative1DReal. Property performs a range checking before every access. If you try to read a value and index is out of range 0 is returned. If you try to set a value and index is out of range nothing will happen. Indexer returns always a number in double precision independent on the internal representation. During the setting of a value the indexer converts the number from double precision to the internal data representation. If internal precision is less accurate, double precision information will be lost. Conversion to the less accurate precision is done by truncating the numbers after the last digit of the new precision.
 
- Properties inherited from ComplexFieldDerivative1D
override bool IsOneD [get]
 Overrides a property in base class ComplexField. This will return always TRUE for objects of type ComplexFieldDerivative1D.
 
override Vector SamplingPoints [get, set]
 Gets or sets the number of sampling points. Setting a new number of sampling points will embed the sampling points in zero samples or extract the central sampling points. See also EmbedExtract.
 
override Complex this[int x, int y] [get, set]
 Overriden 2D indexer. Uses 1D indexer, ignoring y!
 
Complex this[int x] [get, set]
 Indexer to access complex values of complex field. Property performs a range checking before every access. If you try to read a complex value and index is out of range Complex(0) is returned. If you try to set a complex value and index is out of range nothing will happen. Indexer returns always a complex number in double precision independent on the internal complex number representation. During the setting of a complex value the indexer converts the complex number from double precision to the internal data representation. If internal precision is less accurate double precision information will be lost. Conversion to the less accurate precision is done by truncating the numbers after the last digit of the new precision. If IsComplex = false only the real part is stored.
 
double this[long x, FieldQuantity quantity, double thresholdForPhaseArtifacts, double maxAmplitude] [get]
 Special indexer which checks for phase artifacts and returns a certain field quantity.
 
Complex this[long x] [get, set]
 Indexer to access complex values of complex field. Property performs a range checking before every access. If you try to read a complex value and index is out of range Complex(0) is returned. If you try to set a complex value and index is out of range nothing will happen. Indexer returns always a complex number in double precision independent on the internal complex number representation. During the setting of a complex value the indexer converts the complex number from double precision to the internal data representation. If internal precision is less accurate double precision information will be lost. Conversion to the less accurate precision is done by truncating the numbers after the last digit of the new precision. If IsComplex = false only the real part is stored.
 
- Properties inherited from ComplexField
virtual bool IsComplex [get, set]
 Gets or sets the internal representation of the values of ComplexFieldGenerate Spheric. If IsComplex = true the real and imaginary part is stored. Is IsComplex = false only the real part is stored. It is assumed that the imagary part is zero. Setting the IsComplex property will convert the ComplexField from present representation to new one. Information can be lost during this conversion.
 
virtual bool IsOneD [get]
 Indicates whether field is one-dimensional or not.
 
PrecisionMode Precision [get, set]
 Changes the precision of the internal number representation. It is possible to switch between double (64 bit), single (32 bit) and integer precision (16bit). The different precisions are realized by using 3 different arrays of numbers. Only the array that corresponds to the selected precision is used and contains the values of the ComplexField. All other arrays are empty. Setting a different precision than the present will start a conversion of the ComplexField data to the new precision format. Information can be lost in case of a conversions to a lower accuracy.
 
virtual Vector SamplingPoints [get, set]
 Gets or sets number of sampling points of ComplexField. Setting a new number of sampling points will embed the sampling points in zero samples or extract the central sampling points. See also EmbedExtract.
 
int SamplingPointsOneD [get]
 Number of sampling points of one-dimensional field. An exception will be thrown, if field is two-dimensional.
 
virtual Complex this[int x, int y] [get, set]
 Indexer to access complex values of complex field. Property performs a range checking before every access. If you try to read a complex value and index is out of range Complex(0) is returned. If you try to set a complex value and index is out of range nothing will happen. Indexer returns always a complex number in double precision independent on the internal complex number representation. During the setting of a complex value the indexer converts the complex number from double precision to the internal data representation. If internal precision is less accurate double precision information will be lost. Conversion to the less accurate precision is done by truncating the numbers after the last digit of the new precision. If IsComplex = false only the real part is stored.
 
Complex this[long x, long y] [get, set]
 Indexer to access complex values of complex field. Property performs a range checking before every access. If you try to read a complex value and index is out of range Complex(0) is returned. If you try to set a complex value and index is out of range nothing will happen. Indexer returns always a complex number in double precision independent on the internal complex number representation. During the setting of a complex value the indexer converts the complex number from double precision to the internal data representation. If internal precision is less accurate double precision information will be lost. Conversion to the less accurate precision is done by truncating the numbers after the last digit of the new precision. If IsComplex = false only the real part is stored.
 

Additional Inherited Members

- Static Public Member Functions inherited from ComplexField
static ComplexField ConvertFrom2_1D_DoubleArrays (double[] doubleArray1, double[] doubleArray2)
 Converts two one-dimensional double arrays to a two dimensional complex field of dimensions 2 x doubleArray1.Length.
 
static ComplexField ConvertFrom2D_DoubleArray (double[,] doubleArray)
 Converts a two dimensional double array to a two dimensional complex field.
 
static ComplexFieldDerivative1D ConvertFrom_1D_ComplexArray (Complex[] complexArray)
 Converts one one-dimensional complex array to a one-dimensional complex field.
 
static CFieldDerivative1DReal ConvertFrom_1D_DoubleArray (double[] doubleArray)
 Converts one one-dimensional double array to a one-dimensional complex field.
 
static double[] ConvertTo1D_DoubleArray (ComplexField complexField, bool errorWhenComplex)
 Converts a one dimensional complex field to a one dimensional double array.
 
static double[,] ConvertTo2D_DoubleArray (ComplexField complexField, bool errorWhenComplex)
 Converts a two dimensional complex field to a two dimensional double array.
 
static bool operator!= (ComplexField field1, ComplexField field2)
 Compares two complex fields for equality.
 
static ComplexField operator* (Complex c, ComplexField field)
 Multiplies a complex value to a complex field.
 
static ComplexField operator* (ComplexField field, Complex c)
 Multiplies a complex value to a complex field.
 
static ComplexField operator* (ComplexField field1, ComplexField field2)
 Multiplies two complex fields.
 
static ComplexField operator+ (ComplexField field, Complex c)
 Adds a complex value to a complex field.
 
static ComplexField operator+ (ComplexField field1, ComplexField field2)
 Adds two complex fields.
 
static ComplexField operator- (Complex c, ComplexField field)
 Subtracts a complex number and a complex field.
 
static ComplexField operator- (ComplexField field, Complex c)
 Subtracts a complex field and a complex number.
 
static ComplexField operator- (ComplexField field1, ComplexField field2)
 Subtracts two complex fields.
 
static ComplexField operator/ (ComplexField field, Complex c)
 Divides a complex field by a complex number.
 
static ComplexField operator/ (ComplexField field1, ComplexField field2)
 Divide two complex fields.
 
static bool operator== (ComplexField field1, ComplexField field2)
 Compares two complex fields for equality.
 
static Complex operator| (ComplexField field1, ComplexField field2)
 Computes the inner (or scalar) product of two complex fields as defined by (u|v) := Integrate[u(x) * v^(x), {x, -Infinity, Infinity}].
 

Detailed Description

This class is subject to change. Programs using this class may require changes with a new version of VirtualLab.
Class derived from ComplexField, designed especially for one dimensional, real valued data.

Constructor & Destructor Documentation

◆ CFieldDerivative1DReal() [1/6]

Copy constructor.

Parameters
cfdField to copy.

◆ CFieldDerivative1DReal() [2/6]

Constructor that uses an object of type ComplexField.

Parameters
cfComplexField to be converted.

◆ CFieldDerivative1DReal() [3/6]

CFieldDerivative1DReal ( int  samplingPoints)

Creates a CFieldDerivative1DReal with the given number of sampling points. As CFieldDerivative1DReal objects are only used for coordinates, where a) the difference between double and float is crucial (see e.g. TT 4358) and b) only small amounts of data are expected. PrecisionMode.Double is used as default.

Parameters
samplingPointsNumber of points.

◆ CFieldDerivative1DReal() [4/6]

CFieldDerivative1DReal ( int  samplingPoints,
PrecisionMode  precision 
)

Creates a CFieldDerivative1DReal with given number of sampling points using specified precision.

Parameters
samplingPointsNumber of values.
precisionDesired PrecisionMode.

◆ CFieldDerivative1DReal() [5/6]

CFieldDerivative1DReal ( int  samplingPoints,
PrecisionMode  precision,
double  c 
)

Creates a CFieldDerivative1DReal with given number of sampling points using specified precision. The field will be filled with a given constant value.

Parameters
samplingPointsNumber of values.
precisionDesired PrecisionMode.
cReal number with which the field is to be initialized.

◆ CFieldDerivative1DReal() [6/6]

CFieldDerivative1DReal ( int  samplingPoints,
double  value 
)

Creates a CFieldDerivative1DReal with given number of sampling points using specified precision. The field will be filled with a given constant value.

Parameters
samplingPointsNumber of values.
valueReal number with which the field is to be initialized.

Member Function Documentation

◆ Clone()

override object Clone ( )

Clones this CFieldDerivative1DReal.

Returns
A deep copy of this field.

◆ GetCenterOfRightInterval()

double GetCenterOfRightInterval ( long  x)

Gets the linearly interpolated center between value x and value x+1.

Parameters
xIndex of the data point to get the center of the nearest interval at th right.
Returns
Linearly interpolated center between value x and value x+1.

◆ GetNearestNeighborIndex()

long GetNearestNeighborIndex ( double  value,
out long  otherIndex 
)

Gets the index of the nearest neighbor to a given value.

Parameters
valuevalue to search the nearest neighbor for
otherIndexIf the value lies on the boundary between two adjacent coordinates, this is the other index candidate. (The method's return value is the lower index, the out value is the higher index.) This is usually needed only for snapping of ranges or rectangles.
Returns
The nearest neighbor to value.

◆ GetNearestSmallerIndex() [1/2]

long GetNearestSmallerIndex ( double  value)

Searches for the nearest smaller index (to a given value) via interval bisection.

Parameters
valuevalue to search for
Returns
the nearest smaller index

◆ GetNearestSmallerIndex() [2/2]

long GetNearestSmallerIndex ( double  value,
long  startIndex,
long  endIndex 
)

Searches for the nearest smaller index (to a given value) via interval bisection.

Parameters
valuevalue to search for
startIndexstart index for search range
endIndexend index for search range
Returns
the nearest smaller index

Property Documentation

◆ this[long x]

new double this[long x]
getset

Indexer to access values of a CFieldDerivative1DReal. Property performs a range checking before every access. If you try to read a value and index is out of range 0 is returned. If you try to set a value and index is out of range nothing will happen. Indexer returns always a number in double precision independent on the internal representation. During the setting of a value the indexer converts the number from double precision to the internal data representation. If internal precision is less accurate, double precision information will be lost. Conversion to the less accurate precision is done by truncating the numbers after the last digit of the new precision.

Parameters
xIndex for x coordinate