FEDOF
Data type for finite element degree of freedoms.
FEDOF_
defines the abstract node in finite element method.
The meaning of degree of freedom depends upon the basis interpolation function and type.
For example, in the case of Lagrange interpolation, the degree of freedoms corresponds to the nodes in the element.
The basic steps of using this data type is given below.
Basic usage
Constructor methods
Although, there are several ways to initiate an instance of FEDOF
. The most common way is to call the Initiate
method.
CALL obj%Initiate(order, mesh, baseContinuity, baseInterpolation, ipType, basisType, alpha, beta, lambda, islocal)
- Here
order
represents the order of each element. It can be a scalar, vector, or a two dimensional matrix of integers. The method with scalar order is given here.- When
order
is a vector of integer then it represents the order of each cell element. In this case, the length oforder
must be equal to the number of elements in the mesh. - When
order
is a matrix of integer then the first row represents the global number of cell element, and the second row represents the order of cell element.
- When
You can also initiate an instance of FEDOF
using ParameterList. The process is given below.
- First, set parameters in
ParameterList
object by using SetFEDOFParam. - Then, initiate an instance of
FEDOF
usingParameterList
object by using Initiate
CALL obj%Initiate(param, mesh)
Method | Description |
---|---|
Initiate | Initializes a FEDOF (Finite Element Degrees of Freedom) object with various options for element order specification |
SetFEDOFParam | Sets essential parameters for constructing a FEDOF object in a parameter list |
Copy / ASSIGNMENT(=) | Copies the contents of one FEDOF object to another |
DEALLOCATE | Deallocates all data and resources used by a FEDOF object |
These constructor methods handle the creation, initialization, and cleanup of FEDOF objects, which represent the degrees of freedom for finite element calculations.
Get methods
The following table provides an overview of all methods defined in the GetMethods submodule of the FEDOF_Class.
Method Name | Purpose |
---|---|
GetCaseName | Gets the case name of FEDOF (combines baseContinuity and baseInterpolation) |
GetVertexDOF | Retrieves the degrees of freedom associated with a vertex/node |
GetEdgeDOF | Retrieves the degrees of freedom associated with an edge |
GetTotalEdgeDOF | Returns the total number of degrees of freedom on an edge |
GetFaceDOF | Retrieves the degrees of freedom associated with a face |
GetTotalFaceDOF | Returns the total number of degrees of freedom on a face |
GetCellDOF | Retrieves the degrees of freedom associated with a cell |
GetTotalCellDOF | Returns the total number of degrees of freedom on a cell |
GetTotalVertexDOF | Returns the total number of vertex degrees of freedom |
GetTotalDOF | Returns the total number of degrees of freedom (in the entire mesh, an element, or filtered by type) |
GetConnectivity | Returns the connectivity array for an element |
GetConnectivity_ | Internal method for writing connectivity information into a provided array |
GetPrefix | Returns the prefix used for setting data ("FEDOF") |
GetMeshPointer | Returns a pointer to the associated mesh object |
GetBaseInterpolation | Returns the base interpolation type used |
GetCellOrder | Retrieves the polynomial order of a cell |
GetOrders | Gets the cell, face, and edge orders and their orientations |
GetMaxTotalConnectivity | Returns the maximum size of connectivity across all elements |
GetQuadraturePoints | Creates quadrature points for numerical integration |
GetLocalElemShapeData | Retrieves local element shape functions data |
GetGlobalElemShapeData | Maps local shape functions to the global coordinate system |
IO Methods
Method | Description |
---|---|
Display | Displays the content of a FEDOF object including configuration, mesh information, and allocation status |
DisplayCellOrder | Displays information about the cell order array and its contents |
ImportFromToml | Imports FEDOF configuration from a TOML file or table |
These IO methods provide functionality for:
- Displaying the state and configuration of a FEDOF object for debugging and information purposes
- Reading configuration from standardized TOML format files or tables
- Visualizing specific aspects of the FEDOF configuration like cell orders
Setting sparsity
The sparsity of the FEDOF object can be set using the SetSparsity
method. This method allows you to define how the degrees of freedom are organized and accessed, which can optimize performance for specific applications.
Methods
📄️ Structure
The structure of FEDOF_ is given below.
📄️ SetFEDOFParam
Set the parameters of the finite element degree of freedom.
📄️ Copy
The Copy method copies the contents of one FEDOF object to another. This method is also used by the assignment operator (=) for FEDOF objects.
📄️ Deallocate
The Deallocate method releases all allocated memory and nullifies pointers in a FEDOF_ object, returning it to an uninitialized state. This method is essential for proper memory management to prevent memory leaks.
📄️ GetBaseInterpolation
The GetBaseInterpolation method returns the type of basis functions used for interpolation on the reference element in the FEDOF (Finite Element Degrees of Freedom) instance.
📄️ GetCaseName
The GetCaseName method returns a string that identifies the combination of continuity and interpolation type used in the finite element degree of freedom object. This case name is used internally to determine which algorithms to apply when processing the finite element data.
📄️ GetCellDOF
Get the degrees of freedom associated with a specific cell (element volume) in the finite element mesh.
📄️ GetCellOrder
The GetCellOrder method retrieves the polynomial order of a specified cell element.
📄️ GetConnectivity
The GetConnectivity method returns the global degrees of freedom (DOFs) associated with a specified element in the mesh. This connectivity information is essential for assembling local element matrices and vectors into the global system during finite element analysis.
📄️ GetConnectivity_
Interface
📄️ GetEdgeDOF
The GetEdgeDOF is a generic method in the FEDOF_ class that retrieves degrees of freedom associated with edges. It has two specific implementations:
📄️ GetFaceDOF
The GetFaceDOF generic method in the FEDOF_Class is used to retrieve the degrees of freedom (DOF) associated with a face in a finite element mesh. This method has two specific implementations with different parameter sets.
📄️ GetGlobalElemShapeData
The GetGlobalElemShapeData method computes the global element shape function data (including shape functions, their derivatives, and related information) for a specified element. This method takes the local element shape function data and transforms it to the global coordinate system using the nodal coordinates provided in xij.
📄️ GetLocalElemShapeData
The GetLocalElemShapeData method retrieves local element shape function data for a specific element in a finite element mesh. This method acts as a dispatcher that calls the appropriate shape function evaluation method based on the continuity and interpolation type of the finite element space.
📄️ GetMaxTotalConnectivity
Interface
📄️ GetMeshPointer
Interface
📄️ GetOrders
The GetOrders method retrieves the cell order, face order, edge order, and their respective orientation information for a specified element in a finite element mesh. This method is part of the FEDOF_ class which appears to handle Finite Element Degrees of Freedom.
📄️ GetPrefix
Returns the prefix used for setting data in FEDOF.
📄️ GetQuadraturePoints
The GetQuadraturePoints method generates quadrature points for numerical integration over a finite element.
📄️ GetTotalCellDOF
The GetTotalCellDOF method in the FEDOF_Class provides the total number of degrees of freedom (DOF) associated with a cell in a finite element mesh.
📄️ GetTotalDOF
These methods provide a comprehensive interface for querying degree of freedom information at different levels of granularity, from global system-wide counts to element-specific and entity-specific counts.
📄️ GetTotalEdgeDOF
The GetTotalEdgeDOF generic method in the FEDOF_Class provides the total number of degrees of freedom (DOF) associated with an edge in a finite element mesh.
📄️ GetTotalFaceDOF
The GetTotalFaceDOF generic method in the FEDOF_Class provides the total number of degrees of freedom (DOF) associated with a face in a finite element mesh.
📄️ GetTotalVertexDOF
The GetTotalVertexDOF method in the FEDOF_Class returns the total number of vertex degrees of freedom (DOFs) in a finite element discretization. In the context of EASIFEM (Expandable And Scalable Infrastructure for Finite Element Methods), vertex DOFs represent the degrees of freedom associated with the vertices/nodes of the mesh.
📄️ GetVertexDOF
The GetVertexDOF method retrieves the degree of freedom (DOF) number associated with a specified vertex (node) in the mesh. In finite element analysis, each vertex in the mesh is typically assigned one or more degrees of freedom, which represent the unknown values to be solved for.
📄️ ImportFromToml
This method imports the configuration form a toml file and initiates the FEDOF instance.
📄️ Initiate
This method initiates an instance of FEDOF. There are several ways to initiate an instance of FEDOF.
📄️ SetSparsity
The SetSparsity method is used to establish the sparsity pattern in a CSR (Compressed Sparse Row) matrix based on finite element degrees of freedom (FEDOF). This is a crucial operation for efficiently assembling and storing finite element matrices. The method offers two implementations to handle different sparsity pattern generation scenarios.