class ntcPlaneFoliation : public ntcFoliation

Description:

ntcPlaneFoliation contains calls to evaluate the homology class (modulo sign) of the 2-tori (if any) relative to a foliation of a Fermi Surface generated by a constant 1-form in the 3-torus

Inheritance:


Public Methods

ntcPlaneFoliation()
~ntcPlaneFoliation()
static ntcPlaneFoliation* New()
const char* GetClassName()
void SetMagneticField( int a, int b, int c )
void GetMagneticField( int H[3] )
void GetMagneticField( float H[3] )
float GetSlopeXZ()
float GetSlopeYZ()
void SetIntegralBasisVectors()
void SetBaseOfSubLattice()
int FindHomologyClass()
ntcLeaf* CutPlaneSection( float point[3], float loX, float upX, float loY, float upY, int Resolution=200 )
int ColorCriticalOrbit( int nOrbit )
void VisualizeClosedLeaves( float point[3], float loX, float upX, float loY, float upY )
void GetHomologyClassOfClosedLeaves( float point[3], float loX, float upX, float loY, float upY )
int Set3DSlice( float point[3], float DeltaZeta=.01, float xMin=0, float xMax=1, float yMin=0, float yMax=1, float zMin=0, float zMax=1, int type = NTC_GENERIC_POINT )
int Set3DSlice( float a, float b, float c, float DeltaZeta=.01, float xMin=0, float xMax=1, float yMin=0, float yMax=1, float zmin=0, float zMax=1, int type = NTC_GENERIC_POINT )
ntcPrimitiveCell* Get3DSlice()
void RotatePoint( float point[3], float rotatedPoint[3] )
void GetRotatedPoint( int pointId, float pointCoord[3], int jumps0, int jumps1 )
int SetCriticalLeaf()
int SetCriticalLeaf( float crPoint[3], int Hz = 100, float xMin = 0, float xMax = 1, float yMin = 0, float yMax = 1, float zMin = 0, float zMax = 1 )
int FindHomology()
int FindHomology( int *Hom )
int FindHomology( ntcPrimitiveCell *leaf, int *Hom, int type = NTC_CRITICAL_LEAF )
int GetOrthogonalGenerators( int basicCylHom[2][4], int ortCylHom[2][4] )
int GetOrthogonalGenerators( int **basicCylHom, int **ortCylHom, int rk )
void PrintHomologyClassesOf3DLoopsHomologousToZeroInSectionPassingThrough( float x, float y, float z )
void PrintHomologyClassesOf3DLoopsHomologousToZeroInSectionPassingThrough( float point[3] )
void PrintHomologyClassesOfLoopsIn3DSlice()
int FindSign( ntcPrimitiveCell *loop )

Protected Fields

int Hx
int Hy
int Hz
float slopeXZ
float slopeYZ
float e[3]
float f[3]
float g[3]
vtkTransform* efTransform
vtkTransform* efTransformInverse
float xLength
ntcAffineMap* map
ntcAffineMap* mapInverse

Inherited from ntcFoliation:

Public Fields

int LoopHom[2][3]

Public Methods

void SetOneForm( ntcOmega *Omega )
ntcOmega* GetOneForm()
void SetHamiltonian( ntcFermiFunction* F )
ntcFermiFunction* GetHamiltonian()
void SetDispersionRelations( ntcImplicitFunction* f )
ntcImplicitFunction* GetDispersionRelations()
void SetDispersionRelations( ntcFUNC f )
void SetDispersionRelationsGradient( ntcFUNC fx, ntcFUNC fy, ntcFUNC fz )
void SetDispersionRelationsHessian( ntcFUNC fxx, ntcFUNC fyy, ntcFUNC fzz, ntcFUNC fxy, ntcFUNC fyz, ntcFUNC fzx )
void SetDispersionRelationsHomologyMethods( ntcHomFUNC *Hom )
void SetDispersionRelationsHomologyMethod( ntcHomMet *Hom )
void SetDispersionRelationsHomologyMethods( ntcHOM *Homol )
void SetFermiEnergy( float En )
void SetFermiSurfaceSampleDimensions( float l, float m, float n )
void SetFermiSurface( int i = 0 )
vtkPolyData* GetFermiSurface()
int GetDirectLatticeType()
void VisualizeFermiSurface()
void SetCriticalCurves()
vtkPolyData* GetCriticalCurves()
virtual void SetCriticalPoints()
int EvaluateIndexOf( ntcPoint *crPoint )
int GetNumberOfSaddles()
float* GetCriticalSaddlePoint( int i )
int GetNumberOfCenters()
float* GetCriticalCenterPoint( int i )
void SetHomologyClass( int Hom[3] )
void GetHomologyClass( int Hom[3] )
int FindPrimitiveCell( float criticalPoint[3], int type )
void SetPrimitiveCell( vtkPolyData* geom )
ntcPrimitiveCell* GetPrimitiveCell()
void WritePrimitiveCell( char *name )
ntcPrimitiveCell* GetCriticalLeaf()
ntcPrimitiveCell* GetCriticalLeaf( int n )
int ConvertLeafToFCC( ntcPrimitiveCell *Leaf, int type = NTC_GENERIC_LEAF, int keep = NTC_DO_NOT_KEEP_ALSO_OUTSIDE_SEGMENTS )
int IncreaseResolution()
void DecreaseResolution()
int GetResolution()
void SetResolution( int Resolution )
int EliminatePointsOutsideBrillouinZone( float center[3], int itIsTheSecondTime=0 )
int EliminatePointsOutsideBrillouinZone( float c0=.5, float c1=.5, float c2=.5, int itIsTheSecondTime=0 )
int ConvertCriticalLeafToFCC( ntcPrimitiveCell *criticalLeaf )

Protected Fields

float Dim[3]
float Energy
int HomologyClass[3]
ntcImplicitFunction* DispersionRelations
vtkPolyData* FermiSurface
vtkPolyData* CriticalCurves
vtkPoints* CriticalSaddlePoints
vtkPoints* CriticalCenterPoints
ntcPrimitiveCell* PrimitiveCell
int NumberOfSaddles
int NumberOfCenters
int LatticeType
ntcLattice* Lattice
ntcPrimitiveCell* criticalLeaf
ntcPrimitiveCell* criticalLeaves[2]
int Resolution

Private Fields

ntcOmega* Omega

Documentation

ntcPlaneFoliation contains calls to evaluate the homology class (modulo sign) of the 2-tori (if any) relative to a foliation of a Fermi Surface generated by a constant 1-form in the 3-torus.
Basically is an implementation of ntcFoliation that deals just with constants 1-forms H.
As the vtkSampleFunction class only samples functions on rectangles, ntcPlaneFoliation contains also a coordinate change matrix m that transform the Primitive Cell (i.e. a basic parallelogram of the intersection between the plane and the Fermi Surface) in a rectangle.

ntcPlaneFoliation()
~ntcPlaneFoliation()
static ntcPlaneFoliation* New()
const char* GetClassName()
void SetMagneticField( int a, int b, int c )
Set the components of the _constant_ 1-form.
void GetMagneticField( int H[3] )
Get the components of H as an integer array
void GetMagneticField( float H[3] )
Get the components of H as a float array (of integers :-)
float GetSlopeXZ()
Returns Hx/Hz
float GetSlopeYZ()
Returns Hy/Hz
void SetIntegralBasisVectors()
Find three vectors {e,f,g} s.t. e and f generate a Primitive Cell and g = e x f.
void SetBaseOfSubLattice()
Find a base of the 2-dim sublattice when the lattice is not the cubic one.
int FindHomologyClass()
Evaluates the homology class of the 2-torus (if any).
ntcLeaf* CutPlaneSection( float point[3], float loX, float upX, float loY, float upY, int Resolution=200 )
Cut a plane section of the Fermi Surface with a plane perpendicular to H. A pointer to the leaf obtained is returned. The plane section is projected over a "coordinate" square whose sides cut the coordinate axes in loX, upX, loY, upY.
int ColorCriticalOrbit( int nOrbit )
Put colors on the critical leaf in the 2D model
void VisualizeClosedLeaves( float point[3], float loX, float upX, float loY, float upY )
Visualize just the closed leaves of a plane section of the Fermi Surface perpendicular to H. The plane section is projected over a "coordinate" square whose sides cut the coordinate axes in loX, upX, loY, upY.
void GetHomologyClassOfClosedLeaves( float point[3], float loX, float upX, float loY, float upY )
Evaluate the homology classes of all closed leaves of a plane section of the Fermi Surface perpendicular to H. The plane section is projected over a "coordinate" square whose sides cut the coordinate axes in loX, upX, loY, upY.
int Set3DSlice( float point[3], float DeltaZeta=.01, float xMin=0, float xMax=1, float yMin=0, float yMax=1, float zMin=0, float zMax=1, int type = NTC_GENERIC_POINT )
Find the slice (in the 3D method) passing through the point point[3] in the cube defined by [xMin,xMax]x[yMin,yMax]x[zMin,zMax]. All planes cutting the cube and with a distance form the one passing through point[3] that is multiple of DeltaZeta are considered. To get a well-defined slice DeltaZeta must be a submultiple of Hz. The type of a point can be NTC_GENERIC_POINT or NTC_CRITICAL_POINT.
int Set3DSlice( float a, float b, float c, float DeltaZeta=.01, float xMin=0, float xMax=1, float yMin=0, float yMax=1, float zmin=0, float zMax=1, int type = NTC_GENERIC_POINT )
Check above...
ntcPrimitiveCell* Get3DSlice()
Get the slice found above
void RotatePoint( float point[3], float rotatedPoint[3] )
Used in the 2D method to apply the matrix efTransformInverse to a point. The idea is that the 2-dim fundamental domains are usually not squares but vtkSample samples just squares, so we use efTransform to map the fundamental region in a suqare and back.
void GetRotatedPoint( int pointId, float pointCoord[3], int jumps0, int jumps1 )
This routine makes the same job as RotatePoint but also for points that are not in the fundamental domain but in its copy that is jumps0 far in the x direction and jumps1 in the y direction
int SetCriticalLeaf()
Not anymore used. Going to be eliminated soon...
int SetCriticalLeaf( float crPoint[3], int Hz = 100, float xMin = 0, float xMax = 1, float yMin = 0, float yMax = 1, float zMin = 0, float zMax = 1 )
Set the critical leaf extracting the loop homologous to 0 in T^3 if the critical pointis half closed loop and both of them if is completely open. ToDo: add the possibility of extracting the 2 critical loops when the critical point is fully closed!
int FindHomology()
Find the homology class of the critical Leaf in case of a half closed critical point and print it in STDOUT
int FindHomology( int *Hom )
Find the homology class of the critical Leaf in case of a half closed critical point and puts it in *Hom for succesive manipulation
int FindHomology( ntcPrimitiveCell *leaf, int *Hom, int type = NTC_CRITICAL_LEAF )
Find the homology class of *leaf. It makes more sense if *leaf is closed. Stores the result in *Hom
int GetOrthogonalGenerators( int basicCylHom[2][4], int ortCylHom[2][4] )
Find the generators of the sublattice of Hom1(FS,Z) defined by basicCylHom[0].l=0, basicCylHom[1].l=0 [there could be 1 or 2 basicCylHom. If just one of them is present it must be stored in basicCylHom[0] and all components of basicCylHom[1] must be put to 0]. The 2 base vectors found (if any) are stored in ortCylHom[2]. Warning: it is good just for genus 4 surfaces!!!
int GetOrthogonalGenerators( int **basicCylHom, int **ortCylHom, int rk )
Find the generators of the sublattice of Hom1(FS,Z) defined by basicCylHom[0].l=0, basicCylHom[1].l=0 [there could be 1 or 2 basicCylHom. If just one of them is present it must be stored in basicCylHom[0] and all components of basicCylHom[1] must be put to 0]. The 2 base vectors found (if any) are stored in ortCylHom[2].
void PrintHomologyClassesOf3DLoopsHomologousToZeroInSectionPassingThrough( float x, float y, float z )
Get the homology classes of loops homologous to zero passing through point[3]
void PrintHomologyClassesOf3DLoopsHomologousToZeroInSectionPassingThrough( float point[3] )
Get the homology classes of loops homologous to zero passing through point[3]
void PrintHomologyClassesOfLoopsIn3DSlice()
Get the homology classes of loops contained in 3DSlice
int FindSign( ntcPrimitiveCell *loop )
Find the sign of loop (must be a closed loop of the foliation or the result won't have any meaning!!! The leaf must be in the [0,1]^3 cube!)
int Hx
int Hy
int Hz
float slopeXZ
float slopeYZ
float e[3]
float f[3]
float g[3]
vtkTransform* efTransform
vtkTransform* efTransformInverse
float xLength
Length of the first lattice vector in the Current[3] direction
ntcAffineMap* map
ntcAffineMap* mapInverse

This class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de