ntcPlaneFoliation
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
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