# How physical indexes are implemented in Montjoie

In equations solved by Montjoie, for instance Helmholtz equation :

The coefficients and are the so-called physical indexes and depend on the position x. The physical indexes can be constant on the different domains of the mesh, but can also vary continuously inside each domain. An index can be scalar, vectorial, tensorial, each scalar component is either a constant (on the considered domain) or a varying field (object of type PhysicalVaryingMedia). In the case of a varying field, the constant stored in the object PhysicalVaryingMedia is used to specify a value of the physical index at infinity (used for PML or absorbing boundary condition).

### Public attributes of class PhysicalVaryingMedia

index_regular | varying field defined through values on a regular grid |

index_sinus | varying field defined as a product of sine functions |

index_mesh | varying field defined through values on nodal points of the mesh |

index_radial | varying field defined through values at different radii r |

### Public methods of class PhysicalVaryingMedia

Constructors | constructor with a constant value |

IsComplex | returns true if the physical index contains values with non-null imaginary part |

IsVarying | returns false if the physical index is contant, true otherwise |

SetMediaType | sets the type of varying field |

GetMediaType | returns the type of varying field |

GetConstant | returns the constant value associated with the field |

InitConstant | initializes a constant field |

InitSinus | initializes a sinusoidal field (product of sine functions) |

InitRandom | initializes a field defined by its values on a regular grid |

InitMesh | initializes a field defined by its values on nodal points of the mesh |

InitRadial | initializes a radial field defined by its values on different radii r |

GetInverse | inverts the field, so that 1/rho is returned instead of rho |

Mlt | modifies the field such that alpha rho is returned instead of rho |

Clear | clears arrays used to store the field |

GetValue | returns the value of the field on quadrature points of the mesh |

GetGradient | returns the gradient of the field on quadrature points of the mesh |

SetCoefficient | modifies the field on a quadrature point of the mesh |

SetCoefGradient | modifies the gradient of the field on a quadrature point of the mesh |

GetCoefficient | returns the field on a quadrature point of the mesh |

GetCoefGradient | returns the gradient of the field on a quadrature point of the mesh |

Reallocate | sets the number of elements of the mesh |

ReallocateOnElement | sets the number of quadrature points on an element of the mesh |

### Public methods of class RectangleCutOff

Init | initializes the boundaries of the cut-off function |

InsideBox | returns true if the point is inside the definition domain of the cut-off function |

ApplyCutOff | applies cut-off function to a value |

### Public methods of class PhysicalSinusoidalMedia

IsComplex | returns true if the physical index contains values with non-null imaginary part |

GetInverse | inverts the field, so that 1/rho is returned instead of rho |

Init_Sine | initializes the parameters of the sinusoidal field |

Mlt | modifies the field such that alpha rho is returned instead of rho |

ComputeIndexAtPoint | computes the field at a given point |

ComputeIndex | computes the field on quadrature points of a mesh |

### Public methods of class PhysicalRegularMedia

Init_Regular | initializes parameters of the field |

SetNoPeriodic | the field is assumed to be non-periodic |

SetPeriodic | the field is assumed to be periodic |

SetQuasiPeriodic | the field is assumed to be quasi-periodic |

IsComplex | returns true if the physical index contains values with non-null imaginary part |

GetInverse | inverts the field, so that 1/rho is returned instead of rho |

Mlt | modifies the field such that alpha rho is returned instead of rho |

Clear | releases the memory used to store the field |

ReadFile | reads the values of the field on the regular grid |

ComputeIndexAtPoint | computes the field at a given point |

ComputeIndex | computes the field on quadrature points of a mesh |

### Public methods of class PhysicalMeshMedia

IsComplex | returns true if the physical index contains values with non-null imaginary part |

GetInverse | inverts the field, so that 1/rho is returned instead of rho |

Mlt | modifies the field such that alpha rho is returned instead of rho |

Clear | releases the memory used to store the field |

GetMeshName | returns the name of the file where the mesh is stored |

GetOrder | returns the order of approximation used for nodal points of the mesh |

GetNbElt | returns the number of elements of the mesh |

GetNbNodes | returns the number of nodes on an element of the mesh |

GetValue | returns the value of the field on a nodal point of the mesh |

GetGradient | returns the gradient of the field on a nodal point of the mesh |

Init_Mesh | initializes the parameters of the field defined on nodal points of a mesh |

RemoveGlobalElements | removes elements that are located on other processors |

ReadFile | reads the values of the field |

ComputeGradient | computes the gradient of the field |

### Public methods of class RadialVaryingMedia

Init_Radial | initializes the parameters of the radial field |

IsComplex | returns true if the physical index contains values with non-null imaginary part |

GetInverse | inverts the field, so that 1/rho is returned instead of rho |

Mlt | modifies the field such that alpha rho is returned instead of rho |

Clear | releases the memory used to store the field |

ComputeIndexAtPoint | computes the field at a given point |

ComputeIndex | computes the field on quadrature points of a mesh |

### Public methods of class ScalarPhysicalIndice

IsZero | returns true if the physical index is equal to zero |

IsComplex | returns true if the physical index contains values with non-null imaginary part |

IsVarying | returns true if the physical index is varying, false if it is constant |

SetMediaType | sets the type of varying index |

GetMediaType | returns the type of varying index |

GetNbVaryingMedia | returns the number of varying field |

GetVaryingMedia | retrieves addresses of the varying fields stored in the index |

SetIdentity | sets the index to one |

GetConstant | returns the constant associated with the index |

SetConstant | modifies the constant associated with the index |

Zero | sets the index to 0 |

GetInverse | inverts the index, so that 1/rho is returned instead of rho |

Mlt | modifies the index such that alpha rho is returned instead of rho |

Clear | releases the memory used to store the index |

GetCoefficient | returns the index on a quadrature point of the mesh |

GetCoefGradient | returns the gradient of the index on a quadrature point of the mesh |

SetInputVaryingMedia | initializes a varying field from parameters of the data file |

SetInputData | initializes the index from parameters of the data file |

### Public methods of class VectorialPhysicalIndice

IsZero | returns true if the physical index is equal to zero |

IsComplex | returns true if the physical index contains values with non-null imaginary part |

IsVarying | returns true if the physical index is varying, false if it is constant |

SetMediaType | sets the type of varying index |

GetMediaType | returns the type of varying index |

GetNbVaryingMedia | returns the number of varying field |

GetVaryingMedia | retrieves addresses of the varying fields stored in the index |

SetIdentity | sets the index to one |

GetConstant | returns the constant associated with the index |

SetConstant | modifies the constant associated with the index |

Zero | sets the index to 0 |

Mlt | modifies the index such that alpha rho is returned instead of rho |

Clear | releases the memory used to store the index |

GetCoefficient | returns the index on a quadrature point of the mesh |

GetCoefGradient | returns the gradient of the index on a quadrature point of the mesh |

SetInputVaryingMedia | initializes a varying field from parameters of the data file |

SetInputData | initializes the index from parameters of the data file |

### Public methods of class TensorPhysicalIndice

IsZero | returns true if the physical index is equal to zero |

IsComplex | returns true if the physical index contains values with non-null imaginary part |

IsVarying | returns true if the physical index is varying, false if it is constant |

SetMediaType | sets the type of varying index |

GetMediaType | returns the type of varying index |

SetAnisotropy | sets the type of anisotropy (isotrope, orthotrope or anisotrope) |

GetAnisotropy | returns the type of anisotropy (isotrope, orthotrope or anisotrope) |

GetNbVaryingMedia | returns the number of varying field |

GetVaryingMedia | retrieves addresses of the varying fields stored in the index |

SetIdentity | sets the index to the identity matrix |

GetConstant | returns the constant associated with the index |

SetConstant | modifies the constant associated with the index |

Zero | sets the index to 0 |

Mlt | modifies the index such that alpha rho is returned instead of rho |

GetInverse | inverts the index, so that rho^{-1} is returned instead of rho |

Clear | releases the memory used to store the index |

MltMatrix | applies the tensor to a vector |

GetCoefficient | returns the index on a quadrature point of the mesh |

GetCoefGradient | returns the gradient of the index on a quadrature point of the mesh |

SetInputVaryingMedia | initializes a varying field from parameters of the data file |

SetInputData | initializes the index from parameters of the data file |

### Public methods of class ElasticPhysicalIndice

IsComplex | returns true if the physical index contains values with non-null imaginary part |

IsVarying | returns true if the physical index is varying, false if it is constant |

SetMediaType | sets the type of varying index |

GetMediaType | returns the type of varying index |

GetAnisotropyType | returns the type of anisotropy (isotrope, orthotrope or anisotrope) |

GetNbVaryingMedia | returns the number of varying fields |

GetVaryingMedia | retrieves addresses of the varying fields stored in the index |

SetIdentity | sets the index to the identity elastic tensor |

GetConstant | returns the constant associated with the index |

SetConstant | modifies the constant associated with the index |

Zero | sets the index to 0 |

Mlt | modifies the index such that alpha rho is returned instead of rho |

GetInverse | inverts the index, so that rho^{-1} is returned instead of rho |

Clear | releases the memory used to store the index |

MltMatrix | applies the tensor to a vector |

GetCoefficient | returns the index on a quadrature point of the mesh |

MltMatrix | applies the tensor to a matrix |

MltVector | applies the tensor to a vector viewed as a matrix |

SetInputVaryingMedia | initializes a varying field from parameters of the data file |

SetInputData | initializes the index from parameters of the data file |