FEM.Geometry package¶
Meshing and geometry definitions
Submodules¶
FEM.Geometry.Geometree module¶
DEPRECATED
This class was my introduction to OctTrees. I implemented all geometry with this class. Then, I realized SciPy has a KDTree implementation, faster and better. IDK what to tink about it
- class FEM.Geometry.Geometree.Geometree(boundary, n: int = 1, depth: int = 1)¶
Bases:
object
- add_point(p: tuple) bool ¶
- contains(p: tuple) bool ¶
- draw(ax)¶
- draw_points(ax)¶
- graph_query_range(p, r)¶
- min_search_size = -1¶
- query_first_point_set()¶
- query_range(quadrant, plot=False, ax=None) bool ¶
- query_range_point_radius(p, r=None, plot=False, ax=None)¶
- subdivide() None ¶
- class FEM.Geometry.Geometree.Quadrant3D(p: tuple, dim: tuple)¶
Bases:
object
- boxes_disjoint(e)¶
- contains(e) bool ¶
- draw(ax)¶
- draw_(ax)¶
- intesects_quadrant(e) bool ¶
- subdivide() list ¶
- class FEM.Geometry.Geometree.Quadrant3DSpherical(p: tuple, r: tuple)¶
Bases:
Quadrant3D
- contains(e) bool ¶
FEM.Geometry.Geometry module¶
Geometry definitions.
- class FEM.Geometry.Geometry.Delaunay(vertices: list, params: str, nvn: int = 1, holes_dict=None, fillets=None, fast=False, extra_segs=None)¶
Bases:
Geometry2D
Generate Delaunay triangulation using Triangle
- Parameters:
vertices (list) – matrix containing the domain vertices coordinates
params (str) – Triangulation parameters, use the aux function _strdelaunay
nvn (int, optional) – Number of variables per node. Defaults to 1.
holes_dict (list, optional) – A list of holes dicts. Defaults to None.
fillets (list, optional) – A list of fillets. Defaults to None.
fast (bool, optional) – If True, the created elements will have have the fast propertie (see Element class docs)
- extrude(h: float = 1.0, m: int = 5, **kargs) Geometry3D ¶
- class FEM.Geometry.Geometry.Geometry(dictionary: list, gdls: list, types: list, nvn: int = 1, regions: list[Region] | None = None, fast=False)¶
Bases:
object
Define a general geometry structure
- Parameters:
dictionary (list) – Matrix with element definitions. Each row is an element. The gdl are defined in columns
gdls (list) – List of domain coordinates
types (list) – Types of each element
nvn (int, optional) – Nunmber of variables per node. Defaults to 1.
regions (list, optional) – List of domain regions. Defaults to [].
fast (bool) – If True, the created elements will have have the fast propertie (see Element class docs)
- addRegions(regions: list[Region]) None ¶
Adds regions to an already created geometry
- Parameters:
regions (list[Region]) – Regions to be created
- calculateCentroids() None ¶
Calculate elements centroids
- calculateRegions() None ¶
Calculates the nodes of the geometry regions
- cbFromRegion(region: int, value: float, nv: int = 1) list ¶
Generate a list of boundary conditions from specified boundary.
- Parameters:
region (int) – region number
value (float) – Value of the bc
nv (int, optional) – Variable number, starts with 1. Defaults to 1.
- Returns:
List of boundary conditions that can be concatenated or assigned to the geometry
- Return type:
list
- cbeAllRegions(value: float) None ¶
Set all regions boundary conditions to the specified value to all the variables.
- Parameters:
value (float) – Value of the boundary condition
- detectNonLocal(lr: float) list ¶
Detect adjacent elements between a distance Lr. Uses KDTrees
- Parameters:
lr (float) – Distance to detect adjacent elements
- Returns:
Non local element dictionary
- Return type:
list
- detectNonLocalLegacy(lr: float) list ¶
Detect adjacent elements between a distance Lr. Uses iterative approach :param lr: Distance to detect adjacent elements :type lr: float
- Returns:
Non local element dictionary
- Return type:
list
- exportJSON(filename: str | None = None) str ¶
Export geometry definition as JSON file or JSON string
- Parameters:
filename (str, optional) – If given, a JSON file is created. Defaults to None.
- Returns:
JSON string
- Return type:
str
- generateElements() None ¶
Generate elements structure
- giveElementsOfRegion(region: int, centroid=False) list ¶
Give elements over a region
- Parameters:
region (int) – region number. Start with 0
centroid (bool) – To use the centroid as find method. Defaults to false. Use the nodes
- Returns:
List of elements in the specified region
- Return type:
list
- giveNodesOfRegion(region: int) ndarray ¶
Give nodes over a region
- Parameters:
region (int) – region number. Start with 0
- Returns:
List of nodes in the specified region
- Return type:
np.ndarray
- giveRegions() list ¶
Returns a list of regions coordinates matrix
- Returns:
List of regions coordinates matrix
- Return type:
list
- classmethod importJSON(filename: str, **kargs) Geometry ¶
Import geometry definition from JSON file
- Parameters:
filename (str) – Path to the JSON file
- Returns:
Geometry generated using the JSON file
- Return type:
- initialize() None ¶
Calculates the total number of GDL’s and generates the elements structure
- maskFromRegions() None ¶
Create the display mask from geometry regions
- setCbe(cbe: list) None ¶
This method have to be used to assign essential boundary conditions. Thes method prevents to assign duplicated boundary conditions
- Parameters:
cbe (list) – Boundary conditions to be applied
- show() None ¶
Creates a geometry graph
- class FEM.Geometry.Geometry.Geometry1D(dictionary: list, gdls: list, types: list, nvn: int = 1, fast=False)¶
Bases:
Geometry
Define an 1D geometry structure
- Parameters:
dictionary (list) – Matrix with element definitions. Each row is an element. The gdl are defined in columns
gdls (list) – List of domain coordinates
types (list) – Types of each element
nvn (int, optional) – Nunmber of variables per node. Defaults to 1.
fast (bool, optional) – If True, the created elements will have have the fast propertie (see Element class docs)
- show() None ¶
Create a geometry graph
- class FEM.Geometry.Geometry.Geometry2D(dictionary: list, gdls: list, types: list, nvn: int = 1, regions: list[Region] | None = None, fast=False)¶
Bases:
Geometry
Creates a 2D geometry
- Parameters:
dictionary (list) – Matrix with element definitions. Each row is an element. The gdl are defined in columns
gdls (list) – List of domain coordinates
types (list) – Types of each element
nvn (int, optional) – Nunmber of variables per node. Defaults to 1.
regions (list[Region], optional) – List of regions to apply in the geometry. Defaults to None.
fast (bool, optional) – If True, the created elements will have have the fast propertie (see Element class docs)
- cbOnHole(hole: int, value: float, nv: int = 1, sa: float = 0, ea: float = 6.283185307179586) list ¶
Generate a list of boundary conditions from specified hole.
- Parameters:
hole (int) – Hole index in wich load will be applied
value (float) – Value of the bc
nv (int, optional) – Variable number, starts with 1. Defaults to 1.
sa (float, optional) – Start face angle. Defaults to 0.
ea (float, optional) – Finish face angle. Defaults to \(2\pi\).
- Returns:
List of boundary conditions that can be concatenated or assigned to the geometry
- Return type:
list
- generateBCFromCoords(x: float, y: float, value: float = 0, nv: int = 1) list ¶
Generates boundary conditions by coordinates. The boundary condition is applied to the nearest node
- Parameters:
x (float) – X coordinate of point
y (float) – Y coordinate of point
value (float, optional) – Value of the boundary condition. Defaults to 0.
nv (int, optional) – Variable number. The first variable is 1. Defaults to 1.
- Returns:
Matrix of boundary coordinates that can be concatenated
- Return type:
list
- generateRegionFromCoords(p0: list, p1: list) None ¶
Generates a geometry Region1D by specified coordinates
- Parameters:
p0 (list) – region start point
p1 (list) – region end point
- loadOnHole(hole: int, sa: float = 0, ea: float = 6.283185307179586, fx: Callable | None = None, fy: Callable | None = None) None ¶
Assign loads over a hole.
- Parameters:
hole (int) – Hole index in wich load will be applied
sa (float, optional) – Start face angle. Defaults to 0.
ea (float, optional) – Finish face angle. Defaults to \(2\pi\).
fx (Callable, optional) – Load Function x component. Defaults to None.
fy (Callable, optional) – Load Function y component. Defaults to None.
- loadOnRegion(region: int, fx: Callable | None = None, fy: Callable | None = None, add=None) None ¶
Assign a load over a geometry region.
The start point of region is the 0 point of load The end point of region is the end point of load
Load must be defined as a function (normal or lambda)
- Parameters:
region (int) – region in wich load will be applied
fx (Callable, optional) – Load Function x component. Defaults to None.
fy (Callable, optional) – Load Function y component. Defaults to None.
- loadOnRegionVF(region: int, f: Callable | None = None, add=None) None ¶
Assign a load over a geometry region.
The start point of region is the 0 point of load The end point of region is the end point of load
Load must be defined as a function (normal or lambda)
- Parameters:
region (int) – region in wich load will be applied
f (Callable, optional) – Load Function. Defaults to None.
- normalLoadOnRegion(region: int, f: Callable | None = None, add=None) None ¶
Assign a load over a geometry region.
The start point of region is the 0 point of load The end point of region is the end point of load
Load must be defined as a function (normal or lambda)
- Parameters:
region (int) – region in wich load will be applied
f (Callable, optional) – Load Function. Defaults to None.
- revolve(m=10, theta=6.283185307179586, **kargs)¶
- show(texto: int = 10, bolita: int = 0, draw_segs: bool = True, draw_labels: bool = False, draw_bc: bool = False, label_bc: bool = False) None ¶
Create a geometry graph
- Parameters:
texto (int, optional) – Text size. Defaults to 10.
bolita (int, optional) – Node size. Defaults to 0.
draw_segs (bool, optional) – To draw or not draw the regions. Defaults to True.
draw_labels (bool, optional) – To draw or not draw element labels. Defaults to False.
draw_bc (bool, optional) – To draw boundary conditions. Defaults to False.
label_bc (bool, optional) – To draw labels on boundary conditions. Defaults to False.
- class FEM.Geometry.Geometry.Geometry3D(dictionary: list, gdls: list, types: list, nvn: int = 1, regions: list[Region] | None = None, fast=False)¶
Bases:
Geometry
Creates a 3D geometry
- Parameters:
dictionary (list) – Matrix with element definitions. Each row is an element. The gdl are defined in columns
gdls (list) – List of domain coordinates
types (list) – Types of each element
nvn (int, optional) – Nunmber of variables per node. Defaults to 1.
regions (list[Region], optional) – List of regions to apply in the geometry. Defaults to None.
fast (bool, optional) – If True, the created elements will have have the fast propertie (see Element class docs)
- detectBoundaryElements(plot=False)¶
- detectBoundaryElementsLegacy()¶
- isBoundary(e)¶
- show() None ¶
Creates a geometry graph
- class FEM.Geometry.Geometry.Lineal(lenght: float, n: int, o: int, nvn: int = 1)¶
Bases:
Geometry1D
Generate a evenly spaced elements domain
- Parameters:
lenght (float) – Domain lenght
n (int) – Number of elements
o (int) – Element order, can be 1 or 2
nvn (int, optional) – Number of variables per node. Defaults to 1.
- class FEM.Geometry.Geometry.Orimetry(dictionary: list, gdls: list, types: list, regions: list[Region] | None = None)¶
Bases:
Geometry3D
docstring for Orimetry
- initialize() None ¶
Calculates the total number of GDL’s and generates the elements structure
FEM.Geometry.Region module¶
Defines geometry region. Regions are used to set boundary conditions and loads to 2D and 3D problems
- class FEM.Geometry.Region.Region(coords: ndarray, desc: str = '')¶
Bases:
object
Creates a general region
- Parameters:
coords (np.ndarray) – Coordinates matrix of therefion. Each row is a coordinate, each column is a dimension.
- class FEM.Geometry.Region.Region1D(coords: ndarray, **kargs)¶
Bases:
Region
Creates a line region (1D element)
- Parameters:
coords (np.ndarray) – Coordinate matrix. Must be of two rows and 2 or 3 columns. 2 columns for 2D region, 3 columns for 3D region.
- isBetween(p: ndarray, tol: float = 1e-05) bool ¶
Check if a given point is inside the region.
- Parameters:
p (np.ndarray) – Point to be tested
tol (float, optional) – Tolerance for check. Defaults to 1*10**(-5).
- Returns:
True if the point is inside the region
- Return type:
bool
- class FEM.Geometry.Region.Region2D(coords: ndarray, **kargs)¶
Bases:
Region
Creates a square region (2D element)
- Parameters:
coords (np.ndarray) – Coordinate matrix. Must be of four rows and 3 columns.
- isBetween(p: ndarray, tol: float = 1e-05) bool ¶
Check if a given point is inside the region.
- Parameters:
p (np.ndarray) – Point to be tested
tol (float, optional) – Tolerance for check. Defaults to 1*10**(-5).
- Returns:
True if the point is inside the region
- Return type:
bool
- pointToPlaneDistance(p: ndarray) float ¶
Calculates the distance from a given point to the region.
- Parameters:
p (np.ndarray) – Point to be tested
- Returns:
Distance between the plane and the point
- Return type:
float