Title: | Finite Element Modeling for R |
---|---|
Description: | Finite element modeling of beam structures and 2D geometries using constant strain triangles. Applies material properties and boundary conditions (load and constraint) to generate a finite element model. The model produces stress, strain, and nodal displacements; a heat map is available to demonstrate regions where output variables are high or low. Also provides options for creating a triangular mesh of 2D geometries. Package developed with reference to: Bathe, K. J. (1996). Finite Element Procedures.[ISBN 978-0-9790049-5-7] -- Seshu, P. (2012). Textbook of Finite Element Analysis. [ISBN-978-81-203-2315-5] -- Mustapha, K. B. (2018). Finite Element Computations in Mechanics with R. [ISBN 9781315144474]. |
Authors: | Henna D. Bhramdat |
Maintainer: | Henna D. Bhramdat <[email protected]> |
License: | GPL-2 | GPL-3 |
Version: | 0.0.2 |
Built: | 2024-10-24 03:27:44 UTC |
Source: | https://github.com/cran/FEA |
Boundary constraint for element centroids based on coordinate points. For the x & y direction per centroid create matrix with boundary 1(unfixed) or 0(fixed).
ApplyBC.2d(meshP, BoundConx, BoundCony)
ApplyBC.2d(meshP, BoundConx, BoundCony)
meshP |
Matrix (2 x n) containing coordinate points of the mesh |
BoundConx |
Boundary constraint for nodes in the x-direction |
BoundCony |
Boundary constraint for nodes in the y-direction |
A data frame with constraint parameters applied to each node in the x and y directions. Formatted for use in reduced element matrix.
NodeKnownL |
Constraint parameters |
data(triMesh) meshP = triMesh$MeshPts$p BoundConx = BoundCony = numeric(NROW(meshP)) BoundConx[1:NROW(meshP)] = BoundCony[1:NROW(meshP)] = 1 BoundConx[c(10, 11, 12)] = BoundCony[c(10, 11, 12)] = 0 bound = ApplyBC.2d(meshP, BoundConx, BoundCony)
data(triMesh) meshP = triMesh$MeshPts$p BoundConx = BoundCony = numeric(NROW(meshP)) BoundConx[1:NROW(meshP)] = BoundCony[1:NROW(meshP)] = 1 BoundConx[c(10, 11, 12)] = BoundCony[c(10, 11, 12)] = 0 bound = ApplyBC.2d(meshP, BoundConx, BoundCony)
Allows for automatic refinement of the triangular mesh generated based on given parameters. Will remove elements that are outside the margin of the geometry.
AutoAdjust.2d(meshP, meshT, edge, centroid, AspectR, AR)
AutoAdjust.2d(meshP, meshT, edge, centroid, AspectR, AR)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
edge |
Coordinate points of the initial geometry. |
centroid |
Matrix (2 x n) of triangle elements. |
AspectR |
Aspect ratio of each triangle element. |
AR |
maximum desired aspect ratio, numeric value. |
Generates new mesh and centroid tables
Meshpts |
Includes both new mesh coordinate points and triangulation of points. |
Centroids |
Centroid positions for each triangle element. |
data(triMesh) data(polyshape) data(dime) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T edge = polyshape$Line centroid = triMesh$Centroids AspectR = dime$AspectRatio AR = 10 auto = AutoAdjust.2d(meshP, meshT, edge, centroid, AspectR, AR)
data(triMesh) data(polyshape) data(dime) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T edge = polyshape$Line centroid = triMesh$Centroids AspectR = dime$AspectRatio AR = 10 auto = AutoAdjust.2d(meshP, meshT, edge, centroid, AspectR, AR)
Boundary constraint for element centroids based on coordinate points. For the x & y direction per centroid create matrix with boundary 1(unfixed) or 0(fixed).
beamApplyBC(beamP, BCtran, BCrot)
beamApplyBC(beamP, BCtran, BCrot)
beamP |
Matrix (2 x n) of beam coordinates. |
BCtran |
Boundary constraint for nodes to translate in x or y directions. Input as a non-matrix column. |
BCrot |
Boundary constraint for nodes to rotate. Input as a non-matrix column. |
A data frame with constraint parameters applied to each node for directional translation and rotation. Formatted for use in reduced element matrix.
NodeKnownL |
Matrix (1 x n) of constraint parameters |
data(beamGeo) beamBC = beamApplyBC(beamGeo$beamP, beamGeo$BCtran, beamGeo$BCrot)
data(beamGeo) beamBC = beamApplyBC(beamGeo$beamP, beamGeo$BCtran, beamGeo$BCrot)
Boundary conditions applied to each node. Obtained from function: beamApplyBC
beamBC
beamBC
An object of class matrix
(inherits from array
) with 8 rows and 1 columns.
Dimensional data for beam elements. Includes area, length, aspect ratio, angles and lengths of elements. Obtained from function: beamDimensions
beamDime
beamDime
An object of class list
of length 7.
Calculates input dimensions needed for beam finite element.
beamDimensions(Y, G, Nu, beamP, beamT, thick, fx, fy)
beamDimensions(Y, G, Nu, beamP, beamT, thick, fx, fy)
Y |
Elastic modulus value for material (Pa). |
G |
Shear modulus value for material (Pa). If using Euler-Bernoulli model, G = 0. |
Nu |
Poisson's ratio value for material. |
beamP |
Matrix (2 x n) of beam coordinates. |
beamT |
Matrix (2 x n) containing the number of the coordinate point as shown in beamP that connect to form a given beam (Discretization table). |
thick |
Thickness of the beam |
fx |
Load value (newtons) in the x direction. |
fy |
Load value (newtons) in the y direction. |
Calculates values needed for both Timoshenko-Ehrenfest and Euler-Bernoulli beam theories.
k |
Timoshenko-Ehrenfest correction |
Length |
Beam length |
Angle |
Beam angle within the plane |
MomentofInertia |
Moment of Inertia for each beam |
Displacement |
Displacement under Timoshenko-Ehernfest beam theory |
RotationAngle |
Angle of rotation |
StiffnessAngle |
Stiffness angle |
data(beamGeo) DOF = 4 n = NROW(beamGeo$beamT) thick = matrix(c(0.039149, 0.03, 0.0246625), ncol = 1, nrow = n) #height(thickness) of beam beamDime = beamDimensions(beamGeo$Y, beamGeo$G, beamGeo$Nu, beamGeo$beamP, beamGeo$beamT, beamGeo$thick, beamGeo$fx, beamGeo$fy)
data(beamGeo) DOF = 4 n = NROW(beamGeo$beamT) thick = matrix(c(0.039149, 0.03, 0.0246625), ncol = 1, nrow = n) #height(thickness) of beam beamDime = beamDimensions(beamGeo$Y, beamGeo$G, beamGeo$Nu, beamGeo$beamP, beamGeo$beamT, beamGeo$thick, beamGeo$fx, beamGeo$fy)
Generates element stiffness matrix for beams.
beamElementMat(beamP, beamT, Y, Length, MoI)
beamElementMat(beamP, beamT, Y, Length, MoI)
beamP |
Matrix (2 x n) of beam coordinates. |
beamT |
Matrix (2 x n) containing the number of the coordinate point as shown in beamP that connect to form a given beam (Discretization table). |
Y |
Elastic modulus value for material. |
Length |
Length of beams. |
MoI |
Moment of inertia for each beam segment. |
Generates initial element matrix needed for the finite element model.
beamEmat |
An element matrix of the beam |
data(beamGeo) data(beamDime) Length = beamDime$Length MoI = beamDime$MomentofInertia beamEmat = beamElementMat(beamGeo$beamP, beamGeo$beamT, beamGeo$Y, Length, MoI)
data(beamGeo) data(beamDime) Length = beamDime$Length MoI = beamDime$MomentofInertia beamEmat = beamElementMat(beamGeo$beamP, beamGeo$beamT, beamGeo$Y, Length, MoI)
List of element matrices for each element. Obtained from function: beamElementMat
beamEmat
beamEmat
An object of class list
of length 3.
List of element matrices for each element. Obtained from function: beamElementMat
beamExMat
beamExMat
An object of class list
of length 3.
Expanded element matrix for beam.
beamExpandEM(beamP, beamT, ElementMat)
beamExpandEM(beamP, beamT, ElementMat)
beamP |
Matrix (2 x n) of beam coordinates. |
beamT |
Matrix (2 x n) containing the number of the coordinate point as shown in beamP that connect to form a given beam (Discretization table). |
ElementMat |
Element stiffness matrix list. |
produces large (n x n) element matrix from initial element matrix.
beamExMat |
The expanded element matrix |
data(beamGeo) data(beamEmat) ElementMat = beamEmat beamExMat = beamExpandEM(beamGeo$beamP, beamGeo$beamT, ElementMat)
data(beamGeo) data(beamEmat) ElementMat = beamEmat beamExMat = beamExpandEM(beamGeo$beamP, beamGeo$beamT, ElementMat)
Creates a matrix of loads for beams in the x & y direction for each load unconstrained node.
beamForceVector(beamP, fx, fy, NodeKnownL)
beamForceVector(beamP, fx, fy, NodeKnownL)
beamP |
Matrix (2 x n) of beam coordinates. |
fx |
Load vector (newtons) in the x-direction. |
fy |
Load vector (newtons) in the y-direction. |
NodeKnownL |
Data frame with constraint parameters applied to each node in the x and y directions. Formatted for use in reduced element matrix. Generated from ApplyBC function. |
Produces a matrix with loading parameters for each node.
ReducedFV |
Reduced force vector matrix containing the model load parameters. |
data(beamGeo) data(beamUDL) NodeKnownL = beamBC FV = beamForceVector(beamGeo$beamP, beamGeo$fx, beamGeo$fy, NodeKnownL)
data(beamGeo) data(beamUDL) NodeKnownL = beamBC FV = beamForceVector(beamGeo$beamP, beamGeo$fx, beamGeo$fy, NodeKnownL)
Load vector produced from function function: beamForceVector
beamFV
beamFV
An object of class matrix
(inherits from array
) with 5 rows and 1 columns.
Sample geometry for beam. Includes shape, discretization table, boundary conditions, thickness, and material details.
beamGeo
beamGeo
An object of class list
of length 12.
Global and Local loading force matrices obtained from function: beamGLForces
beamGLforce
beamGLforce
An object of class list
of length 2.
Uses nodal displacements to determine global and local forces at each node
beamGLForces(beamP, beamT, Y, MoI, Length, GMat, BUDL, BND)
beamGLForces(beamP, beamT, Y, MoI, Length, GMat, BUDL, BND)
beamP |
Matrix (2 x n) of beam coordinates. |
beamT |
Matrix (2 x n) containing the number of the coordinate point as shown in beamP that connect to form a given beam (Discretization table). |
Y |
Elastic Modulus of material |
MoI |
Moment of Inertia |
Length |
Length of beam |
GMat |
Global stiffness matrix |
BUDL |
Column matrix for beam distributed load |
BND |
beam nodal displacement, output from function "beamNodeDis" |
Matrices of global and local forces. (Results in kN)
GForce |
Large global force matrix. |
Lforce |
Large local force matrix. |
data(beamGeo) data(beamDime) data(beamsUDL) data(beamND) data(beamGloMat) Length = beamDime$Length MoI = beamDime$MomentofInertia BUDL = beamsUDL BND = beamND GMat = beamGloMat GLforce = beamGLForces(beamGeo$beamP, beamGeo$beamT, beamGeo$Y, MoI, Length, GMat, BUDL, BND)
data(beamGeo) data(beamDime) data(beamsUDL) data(beamND) data(beamGloMat) Length = beamDime$Length MoI = beamDime$MomentofInertia BUDL = beamsUDL BND = beamND GMat = beamGloMat GLforce = beamGLForces(beamGeo$beamP, beamGeo$beamT, beamGeo$Y, MoI, Length, GMat, BUDL, BND)
Generates global stiffness matrix for beams.
beamGlobalEM(beamExEM)
beamGlobalEM(beamExEM)
beamExEM |
Expanded Element Matrix |
Produces large (n x n) global matrix
GlobalMat |
Global matrix |
data(beamExMat) beamExEM = beamExMat GMat = beamGlobalEM(beamExEM)
data(beamExMat) beamExEM = beamExMat GMat = beamGlobalEM(beamExEM)
Global element matrix, obtained from function: beamGlobalEM
beamGloMat
beamGloMat
An object of class matrix
(inherits from array
) with 8 rows and 8 columns.
Global nodal displacement, obtained from function: beamNodeDis
beamND
beamND
An object of class list
of length 3.
Calculates global nodal displacements of beam.
beamNodeDis(beamP, BCtran, BCrot, REM, NodeKnownL, ForceV)
beamNodeDis(beamP, BCtran, BCrot, REM, NodeKnownL, ForceV)
beamP |
Matrix (2 x n) of beam coordinates. |
BCtran |
Boundary constraint for nodes to translate in x or y directions. |
BCrot |
Boundary constraint for nodes to rotate. |
REM |
Reduced element matrix, returned from function ReducedEM. |
NodeKnownL |
data frame with constraint parameters applied to each node in the x and y directions. Formatted for use in reduced element matrix. Generated from ApplyBC function. |
ForceV |
Reduced force vector matrix containing the model load parameters. Returned from function ForceVector. |
Produces tables with new node coordinates that are produced by the geometry under an applied load.
NodeDis |
Nodal displacement |
GlobalND |
Nodal displacement in the global environment |
GlobalNDMatrix |
Nodal displacement in the global environment as a reduced matrix |
data(beamGeo) data(beamFV) data(beamREM) data(beamBC) ForceV = beamFV REM = beamREM NodeKnownL = beamBC beamND = beamNodeDis(beamGeo$beamP, beamGeo$BCtran, beamGeo$BCrot, REM, NodeKnownL, ForceV)
data(beamGeo) data(beamFV) data(beamREM) data(beamBC) ForceV = beamFV REM = beamREM NodeKnownL = beamBC beamND = beamNodeDis(beamGeo$beamP, beamGeo$BCtran, beamGeo$BCrot, REM, NodeKnownL, ForceV)
Generates heat map for given stress or strain on the beam geometry. Threshold values for the color must be assigned.
beamPlotSystem(beamP, beamT, PlotVal, a, b, c, d, e, f, g, h, i, j, Oc, ac, bc, cc, dc, ec, fc, gc, hc, ic, jc, LWD)
beamPlotSystem(beamP, beamT, PlotVal, a, b, c, d, e, f, g, h, i, j, Oc, ac, bc, cc, dc, ec, fc, gc, hc, ic, jc, LWD)
beamP |
Matrix (2 x n) of beam coordinates. |
beamT |
Matrix (2 x n) containing the number of the coordinate point as shown in beamP that connect to form a given beam (Discretization table). |
PlotVal |
Value to be plotted, either stress or strain, return from function beamLocalStress function. |
a |
Threshold 1 |
b |
Threshold 2 |
c |
Threshold 3 |
d |
Threshold 4 |
e |
Threshold 5 |
f |
Threshold 6 |
g |
Threshold 7 |
h |
Threshold 8 |
i |
Threshold 9 |
j |
Threshold 10 |
Oc |
Color for all zero values |
ac |
Color 1 |
bc |
Color 2 |
cc |
Color 3 |
dc |
Color 4 |
ec |
Color 5 |
fc |
Color 6 |
gc |
Color 7 |
hc |
Color 8 |
ic |
Color 9 |
jc |
Color 10 |
LWD |
Line (beam) width |
Plot of colored beam based on the plot value
data(beamGeo) data(beamStressResult) PlotVal = beamStressResult Oc = "slateblue"; ac = "steelblue2"; bc = "cyan2"; cc = "palegreen2"; dc = "darkolivegreen1"; ec = "lemonchiffon"; fc = "lightgoldenrod1"; gc = "gold"; hc= "lightsalmon"; ic= "tomato"; jc= "firebrick3" a = 1e5; b = 5e5; c = 1e6; d = 5e6; e = 1e7; f = 5e7; g = 1e8; h = 5e8; i = 1e9; j =5e9 beamPlotSystem(beamGeo$beamP, beamGeo$beamT, PlotVal, a, b, c, d, e, f, g, h, i, j, Oc, ac, bc, cc, dc, ec, fc, gc, hc, ic, jc, LWD = 4)
data(beamGeo) data(beamStressResult) PlotVal = beamStressResult Oc = "slateblue"; ac = "steelblue2"; bc = "cyan2"; cc = "palegreen2"; dc = "darkolivegreen1"; ec = "lemonchiffon"; fc = "lightgoldenrod1"; gc = "gold"; hc= "lightsalmon"; ic= "tomato"; jc= "firebrick3" a = 1e5; b = 5e5; c = 1e6; d = 5e6; e = 1e7; f = 5e7; g = 1e8; h = 5e8; i = 1e9; j =5e9 beamPlotSystem(beamGeo$beamP, beamGeo$beamT, PlotVal, a, b, c, d, e, f, g, h, i, j, Oc, ac, bc, cc, dc, ec, fc, gc, hc, ic, jc, LWD = 4)
Reduced stiffness matrix - use boundary condition to reduce matrix to smaller form by removing systems that are bound.
beamReducedEM(GMat, NodeKnownL)
beamReducedEM(GMat, NodeKnownL)
GMat |
Global stiffness matrix |
NodeKnownL |
data frame with constraint parameters applied to each node in the x and y directions. Formatted for use in reduced element matrix. Generated from ApplyBC function. |
Produces a large matrix.
ReducedEM |
Reduced element matrix. |
data(beamBC) data(beamGloMat) NodeKnownL = beamBC GMat = beamGloMat beamREM = beamReducedEM(GMat, NodeKnownL)
data(beamBC) data(beamGloMat) NodeKnownL = beamBC GMat = beamGloMat beamREM = beamReducedEM(GMat, NodeKnownL)
Reduced element matrix calculated from the expanded element matrix. Obtained from function: beamReducedEM
beamREM
beamREM
An object of class matrix
(inherits from array
) with 5 rows and 5 columns.
Calculates local stress and strain for beam elements
beamStress(beamP, beamT, Y, Length, MoI, RotAng, BND)
beamStress(beamP, beamT, Y, Length, MoI, RotAng, BND)
beamP |
Matrix (2 x n) of beam coordinates. |
beamT |
Matrix (2 x n) containing the number of the coordinate point as shown in beamP that connect to form a given beam (Discretization table). |
Y |
Value of Young's (Elastic) modulus |
Length |
Length of beam |
MoI |
Moment of Inertia |
RotAng |
Angle of rotation |
BND |
Global nodal displacement matrix, return from function beamNodeDis |
Completes FEM by calculating values of stress and strain, produces three (3) [3 x n] matrix.
BendingStress |
Bending Stress |
data(beamGeo) data(beamGLforce) Length = beamDime$Length MoI = beamDime$MomentofInertia RotAng = beamDime$Angle BND = beamND beamBendStress = beamStress(beamGeo$beamP, beamGeo$beamT, beamGeo$Y, Length, MoI, RotAng, BND)
data(beamGeo) data(beamGLforce) Length = beamDime$Length MoI = beamDime$MomentofInertia RotAng = beamDime$Angle BND = beamND beamBendStress = beamStress(beamGeo$beamP, beamGeo$beamT, beamGeo$Y, Length, MoI, RotAng, BND)
FEA results for the beam model. Obtained from function: beamStress
beamStressResult
beamStressResult
An object of class numeric
of length 3.
Uniformly distributed load on beam surface
beamsUDL
beamsUDL
An object of class list
of length 3.
Uniformly distributes load over the length of the beam.
beamUDL(beamP, beamT, Length, fx, fy)
beamUDL(beamP, beamT, Length, fx, fy)
beamP |
Matrix (2 x n) of beam coordinates. |
beamT |
Matrix (2 x n) containing the number of the coordinate point as shown in beamP that connect to form a given beam (Discretization table). |
Length |
Length of beam. |
fx |
Load value (newtons) in the x direction. |
fy |
Load value (newtons) in the y direction. |
Produces matrix representing uniformly distributed load on beam
DLMatrix |
Column matrix for beam distributed load |
ExpandedDLMatrix |
Expanded beam distribution load |
ReductedDLMatrix |
Reduced beam distribution load |
data(beamGeo) data(beamDime) Length = beamDime$Length beamUDL = beamUDL(beamGeo$beamP, beamGeo$beamT, Length, beamGeo$fx, beamGeo$fy)
data(beamGeo) data(beamDime) Length = beamDime$Length beamUDL = beamUDL(beamGeo$beamP, beamGeo$beamT, Length, beamGeo$fx, beamGeo$fy)
Boundary conditions applied to each node. Obtained from function: ApplyBC
bound
bound
An object of class matrix
(inherits from array
) with 100 rows and 1 columns.
Sample geometry. Matrix with x and y coordinates for initial shape.
Cart
Cart
An object of class matrix
(inherits from array
) with 11 rows and 2 columns.
Cleaned nodal distribution in and on polygon. Obtained from function: Threshpts
cleanpoly
cleanpoly
An object of class list
of length 2.
Dimensional data for mesh elements. Includes area, length, aspect ratio, angles and lengths of elements. Obtained from function: Dimensions
dime
dime
An object of class list
of length 6.
Calculates dimensional values for each triangular element, including truss length & angles, distance from nodal point to centroid, aspect ratio of each triangle element, and area of the triangle.
Dimensions.2d(meshP, meshT, centroid)
Dimensions.2d(meshP, meshT, centroid)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
centroid |
Matrix (2 x n) containing coordinate points of the centroid of each triangular element. |
Evaluation of triangle elements truss, angle, and area.
Truss |
Nodal pairs that form each truss. |
TrussLength |
Distance between each paired nodes forming a truss, its length. |
Dist2Cent |
Shortest distance from truss to triangle centroid. |
Truss angle |
Angles of the triangle created from truss meeting. |
AspectRatio |
Aspect ratio of triangle elements. |
Area |
Area within triangle elements. |
data(triMesh) data(polyshape) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T centroid = triMesh$Centroids dime = Dimensions.2d(meshP, meshT, centroid)
data(triMesh) data(polyshape) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T centroid = triMesh$Centroids dime = Dimensions.2d(meshP, meshT, centroid)
Global nodal displacement, obtained from function: NodeDis
displacN
displacN
An object of class list
of length 2.
Generates an element stiffness matrix
ElementMat.2d(meshP, meshT, Nu, Y, Thick)
ElementMat.2d(meshP, meshT, Nu, Y, Thick)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
Nu |
Value of Poisson's ratio for each element |
Y |
Value of Young's (Elastic) modulus for each element |
Thick |
Value of the thickness of the mesh, a positive value must be given. |
Generates initial element matrix needed for the finite element model.
EMPStress |
An element matrix of the geometry under stress. |
EMPStrain |
An element matrix of the geometry under strain. |
data(triMesh) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T Y = matrix(20e9, nrow = NROW(meshT)) Nu = matrix(0.45, nrow = NROW(meshT)) Thick = 0.001 DOF = 6 fea_EM = ElementMat.2d(meshP, meshT, Nu, Y, Thick)
data(triMesh) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T Y = matrix(20e9, nrow = NROW(meshT)) Nu = matrix(0.45, nrow = NROW(meshT)) Thick = 0.001 DOF = 6 fea_EM = ElementMat.2d(meshP, meshT, Nu, Y, Thick)
Calculates stress in beam structures using the Euler-Bernoulli beam theory.
EulerBeamFEA(Y, beamP, beamT, fx, fy, BCtran, BCrot, Length, MoI, RotAng)
EulerBeamFEA(Y, beamP, beamT, fx, fy, BCtran, BCrot, Length, MoI, RotAng)
Y |
Elastic modulus value for material (Pa). |
beamP |
Matrix (2 x n) of beam coordinates. |
beamT |
Matrix (2 x n) containing the number of the coordinate point as shown in beamP that connect to form a given beam (Discretization table). |
fx |
Load value (newtons) in the x direction. |
fy |
Load value (newtons) in the y direction. |
BCtran |
Boundary constraint for nodes to translate in x or y directions. Input as a non-matrix column. |
BCrot |
Boundary constraint for nodes to rotate. Input as a non-matrix column. |
Length |
Length of beam. |
MoI |
Moment of inertia for each beam segment. |
RotAng |
Angle of rotation |
Calculates local forces and stresses, as well as bending stress for beams following the Euler-Bernoulli beam theory.
Stress |
Local stress at node |
LocalLoad |
Local load at node |
BendingStress |
Bending Stress |
data(beamGeo) data(beamDime) Length = beamDime$Length MoI = beamDime$MomentofInertia RotAng = beamDime$Angle beamFEA = EulerBeamFEA(beamGeo$Y, beamGeo$beamP, beamGeo$beamT, beamGeo$fx, beamGeo$fy, beamGeo$BCtran, beamGeo$BCrot, Length, MoI, RotAng)
data(beamGeo) data(beamDime) Length = beamDime$Length MoI = beamDime$MomentofInertia RotAng = beamDime$Angle beamFEA = EulerBeamFEA(beamGeo$Y, beamGeo$beamP, beamGeo$beamT, beamGeo$fx, beamGeo$fy, beamGeo$BCtran, beamGeo$BCrot, Length, MoI, RotAng)
Generates the expanded element matrix, which represents the contribution of individual finite elements towards the global structural matrix
ExpandEM.2d(meshP, meshT, centroid, EMatrixlist)
ExpandEM.2d(meshP, meshT, centroid, EMatrixlist)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
centroid |
Matrix (2 x n) containing coordinate points of the centroid of each triangular element. |
EMatrixlist |
EMPStress or EMPStrain generated from ElementMat function. List of element matrices. |
Produces large (n x n) matrix.
ExpandedMat |
The expanded element matrix |
data(triMesh) data(fea_EM) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T centroid = triMesh$Centroids EMatrixlist = fea_EM$EMPStress fea_ExEM = ExpandEM.2d(meshP, meshT, centroid, EMatrixlist)
data(triMesh) data(fea_EM) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T centroid = triMesh$Centroids EMatrixlist = fea_EM$EMPStress fea_ExEM = ExpandEM.2d(meshP, meshT, centroid, EMatrixlist)
Generates expanded surface force element matrix from SurfaceTraction function
ExpandSFT.2d(meshP, meshT, SurfTrac)
ExpandSFT.2d(meshP, meshT, SurfTrac)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
SurfTrac |
List of surface forces. |
Produces a large (n x n) element matrix of surface forces.
ExpandedSurf |
Expanded surface force element matrix. |
data(triMesh) data(SurfTrac) meshT = triMesh$MeshPts$T meshP = triMesh$MeshPts$p expSurf = ExpandSFT.2d(meshP, meshT, SurfTrac)
data(triMesh) data(SurfTrac) meshT = triMesh$MeshPts$T meshP = triMesh$MeshPts$p expSurf = ExpandSFT.2d(meshP, meshT, SurfTrac)
Expanded element matrix for surface forces. Obtained from function: ExpandSFT
expSurf
expSurf
An object of class list
of length 50.
List of element matrices for each element. Obtained from function: ElementMat
fea_EM
fea_EM
An object of class list
of length 2.
List of large expanded element matrices calculated from the element matrix. Obtained from function: ExpandEM
fea_ExEM
fea_ExEM
An object of class list
of length 78.
FEA results. Produces list with results from local stresses including Stress, Strain, and Stress from Strain. Obtained from function: LocalStress
fea_result
fea_result
An object of class list
of length 3.
Creates a complete finite element model using strain for a given 2D mesh under specified boundary conditions (constrain and load).
FEMStrain.2d(meshP, meshT, centroid, BoundConx, BoundCony, SFShear, SFTensile, Length, area, Fx, Fy, Y, Nu, Thick)
FEMStrain.2d(meshP, meshT, centroid, BoundConx, BoundCony, SFShear, SFTensile, Length, area, Fx, Fy, Y, Nu, Thick)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
centroid |
Matrix (2 x n) containing coordinate points of the centroid of each triangular element. |
BoundConx |
Boundary constraint for nodes in the x-direction |
BoundCony |
Boundary constraint for nodes in the y-direction |
SFShear |
Magnitude of positive shear traction; if there is no surface traction then SFShear = 0 |
SFTensile |
Magnitude of tensile surface traction; if there is no surface traction then SFTensile = 0 |
Length |
Truss length |
area |
Triangle element area |
Fx |
Load vector for the x-direction |
Fy |
Load vector for the y-direction |
Y |
Value of Young's (Elastic) modulus |
Nu |
Value of Poisson's ratio |
Thick |
Value of the thickness of the mesh, a value must be given. |
Completes the FEM to generate values of stress and strain and nodal displacement.
NodeDisplacement |
Node displacement on each axis |
LocalStress |
Stress as calucated from stress, strain, and stress from strain. Three (3) [3 x n] matrices where [x, y, tau] |
data(triMesh) data(dime) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T centroid = triMesh$Centroids Y = matrix(20e9, nrow = NROW(meshT)) Nu = matrix(0.45, nrow = NROW(meshT)) Thick = 0.001 DOF = 6 BoundConx = BoundCony = numeric(NROW(meshP)) BoundConx[1:NROW(meshP)] = BoundCony[1:NROW(meshP)] = 1 BoundConx[c(10, 11, 12)] = BoundCony[c(10, 11, 12)] = 0 SFShear = 0 SFTensile = 0 Length = dime$TrussLength area = dime$Area Fx = 10 Fy = 10 fea_strain = FEMStrain.2d(meshP, meshT, centroid, BoundConx, BoundCony, SFShear, SFTensile, Length, area, Fx, Fy, Y, Nu, Thick)
data(triMesh) data(dime) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T centroid = triMesh$Centroids Y = matrix(20e9, nrow = NROW(meshT)) Nu = matrix(0.45, nrow = NROW(meshT)) Thick = 0.001 DOF = 6 BoundConx = BoundCony = numeric(NROW(meshP)) BoundConx[1:NROW(meshP)] = BoundCony[1:NROW(meshP)] = 1 BoundConx[c(10, 11, 12)] = BoundCony[c(10, 11, 12)] = 0 SFShear = 0 SFTensile = 0 Length = dime$TrussLength area = dime$Area Fx = 10 Fy = 10 fea_strain = FEMStrain.2d(meshP, meshT, centroid, BoundConx, BoundCony, SFShear, SFTensile, Length, area, Fx, Fy, Y, Nu, Thick)
Creates a complete finite element model using stress for a given 2D mesh under specified boundary conditions (constrain and load).
FEMStress.2d(meshP, meshT, centroid, BoundConx, BoundCony, SFShear, SFTensile, Length, area, Fx, Fy, Y, Nu, Thick)
FEMStress.2d(meshP, meshT, centroid, BoundConx, BoundCony, SFShear, SFTensile, Length, area, Fx, Fy, Y, Nu, Thick)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
centroid |
Matrix (2 x n) containing coordinate points of the centroid of each triangular element. |
BoundConx |
Boundary constraint for nodes in the x-direction |
BoundCony |
Boundary constraint for nodes in the y-direction |
SFShear |
Magnitude of positive shear traction; if there is no surface traction then SFShear = 0 |
SFTensile |
Magnitude of tensile surface traction; if there is no surface traction then SFTensile = 0 |
Length |
Truss length |
area |
Triangle element area |
Fx |
Load vector for the x-direction |
Fy |
Load vector for the y-direction |
Y |
Value of Young's (Elastic) modulus |
Nu |
Value of Poisson's ratio |
Thick |
Value of the thickness of the mesh, a value must be given. |
Completes the FEM to generate values of stress and strain and nodal displacement.
NodeDisplacement |
Node displacement on each axis |
LocalStress |
Stress as calucated from stress, strain, and stress from strain. Three (3) [3 x n] matrices where [x, y, tau] |
data(triMesh) data(dime) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T centroid = triMesh$Centroids Y = matrix(20e9, nrow = NROW(meshT)) Nu = matrix(0.45, nrow = NROW(meshT)) Thick = 0.001 DOF = 6 BoundConx = BoundCony = numeric(NROW(meshP)) BoundConx[1:NROW(meshP)] = BoundCony[1:NROW(meshP)] = 1 BoundConx[c(10, 11, 12)] = BoundCony[c(10, 11, 12)] = 0 SFShear = 0 SFTensile = 0 Length = dime$TrussLength area = dime$Area Fx = 10 Fy = 10 fea_stress = FEMStress.2d(meshP, meshT, centroid, BoundConx, BoundCony, SFShear, SFTensile, Length, area, Fx, Fy, Y, Nu, Thick)
data(triMesh) data(dime) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T centroid = triMesh$Centroids Y = matrix(20e9, nrow = NROW(meshT)) Nu = matrix(0.45, nrow = NROW(meshT)) Thick = 0.001 DOF = 6 BoundConx = BoundCony = numeric(NROW(meshP)) BoundConx[1:NROW(meshP)] = BoundCony[1:NROW(meshP)] = 1 BoundConx[c(10, 11, 12)] = BoundCony[c(10, 11, 12)] = 0 SFShear = 0 SFTensile = 0 Length = dime$TrussLength area = dime$Area Fx = 10 Fy = 10 fea_stress = FEMStress.2d(meshP, meshT, centroid, BoundConx, BoundCony, SFShear, SFTensile, Length, area, Fx, Fy, Y, Nu, Thick)
Creates a matrix of loads in the x & y direction for each load unconstrained node.
ForceVector.2d(Fx, Fy, RSF, meshP, NodeKnownL)
ForceVector.2d(Fx, Fy, RSF, meshP, NodeKnownL)
Fx |
Load vector for the x-direction |
Fy |
Load vector for the y-direction |
RSF |
If surface traction is present assign value as the ReducedSF matrix; if there is no surface traction set RSF = 0 |
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
NodeKnownL |
data frame with constraint parameters applied to each node in the x and y directions. Formatted for use in reduced element matrix. Generated from ApplyBC function. |
Produces a matrix with loading parameters for each node.
ReducedFV |
Reduced force vector matrix containing the model load parameters. |
data(triMesh) data(reduc_SF) data(bound) meshP = triMesh$MeshPts$p RSF = reduc_SF Fx = 10 Fy = 10 NodeKnownL = bound load = ForceVector.2d(Fx, Fy, RSF, meshP, NodeKnownL)
data(triMesh) data(reduc_SF) data(bound) meshP = triMesh$MeshPts$p RSF = reduc_SF Fx = 10 Fy = 10 NodeKnownL = bound load = ForceVector.2d(Fx, Fy, RSF, meshP, NodeKnownL)
Global and Local loading force matrices obtained from function: GLForces
glfor
glfor
An object of class list
of length 2.
Uses nodal displacements to determine global and local forces at each node
GLForces.2d(meshP, meshT, GMat, GlobalND, EMatrixlist)
GLForces.2d(meshP, meshT, GMat, GlobalND, EMatrixlist)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
GMat |
Global matrix |
GlobalND |
Global nodal displacement |
EMatrixlist |
Element matrix list |
Matrices of global and local forces
GForce |
Large global force matrix. |
Lforce |
Large local force matrix. |
data(triMesh) data(gloMat) data(displacN) data(fea_EM) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T GMat = gloMat GlobalND = displacN$GlobalND EMatrixlist = fea_EM$EMPStress glfor = GLForces.2d(meshP, meshT, GMat, GlobalND, EMatrixlist)
data(triMesh) data(gloMat) data(displacN) data(fea_EM) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T GMat = gloMat GlobalND = displacN$GlobalND EMatrixlist = fea_EM$EMPStress glfor = GLForces.2d(meshP, meshT, GMat, GlobalND, EMatrixlist)
Generates global stiffness matrix - once established, the expanded element matrix must be combined to create the global structural stiffness matrix by adding the expanded matrices.
GlobalMat.2d(meshP, meshT, ExEM)
GlobalMat.2d(meshP, meshT, ExEM)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
ExEM |
Expanded element matrix |
Produces large (n x n) global matrix
GlobalMat |
Global matrix |
data(triMesh) data(fea_ExEM) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T ExEM = fea_ExEM gloMat = GlobalMat.2d(meshP, meshT, ExEM)
data(triMesh) data(fea_ExEM) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T ExEM = fea_ExEM gloMat = GlobalMat.2d(meshP, meshT, ExEM)
Global element matrix, obtained from function: GlobalMat
gloMat
gloMat
An object of class matrix
(inherits from array
) with 100 rows and 100 columns.
Load vector produced from function function: ForceVector
load
load
An object of class matrix
(inherits from array
) with 94 rows and 1 columns.
Calculates local stress and strain for triangular elements of the mesh
LocalStress.2d(meshP, meshT, Y, Nu, GlobalND)
LocalStress.2d(meshP, meshT, Y, Nu, GlobalND)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
Y |
Value of Young's (Elastic) modulus |
Nu |
Value of Poisson's ratio |
GlobalND |
Global nodal displacement, return from function NodeDis |
Completes FEM by calculating values of stress and strain, produces three (3) [3 x n] matrix.
Strain |
Calculated strain. [x, y, tau] |
Stress |
Calculated stress in pascals. [x, y, tau] |
StressStrain |
Stress as calucated from strain. [x, y, tau] |
data(triMesh) data(displacN) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T Y = matrix(20e9, nrow = NROW(meshT)) Nu = matrix(0.45, nrow = NROW(meshT)) GlobalND = displacN$GlobalND fea_result = LocalStress.2d(meshP, meshT, Y, Nu, GlobalND)
data(triMesh) data(displacN) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T Y = matrix(20e9, nrow = NROW(meshT)) Nu = matrix(0.45, nrow = NROW(meshT)) GlobalND = displacN$GlobalND fea_result = LocalStress.2d(meshP, meshT, Y, Nu, GlobalND)
Allows for manual refinement of the triangular mesh generated based on given parameters. Will remove triangle elements that are identified in the input (loc).
ManualAdjust.2d(meshP, meshT, edge, centroid, loc)
ManualAdjust.2d(meshP, meshT, edge, centroid, loc)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
edge |
Coordinate points of the initial geometry. |
centroid |
Matrix (2 x n) of triangle elements. |
loc |
String containing the number of the meshT matrix row of the triangle chosen to be removed. |
Generates new mesh and centroid tables
Meshpts |
Includes both new mesh coordinate points and triangulation of points. |
Centroids |
Centroid positions for each triangle element. |
data(triMesh) data(polyshape) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T edge = polyshape$Line centroid = triMesh$Centroids loc = c(7, 35, 17) ManualAdjust.2d(meshP, meshT, edge, centroid, loc)
data(triMesh) data(polyshape) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T edge = polyshape$Line centroid = triMesh$Centroids loc = c(7, 35, 17) ManualAdjust.2d(meshP, meshT, edge, centroid, loc)
Calculates global nodal displacements
NodeDis.2d(meshP, REM, ForceV, NodeKnownL)
NodeDis.2d(meshP, REM, ForceV, NodeKnownL)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
REM |
Reduced element matrix, returned from function ReducedEM. |
ForceV |
Reduced force vector matrix containing the model load parameters. Returned from function ForceVector. |
NodeKnownL |
data frame with constraint parameters applied to each node in the x and y directions. Formatted for use in reduced element matrix. Generated from ApplyBC function. |
Produces tables with new node coordinates that are produced by the geometry under an applied load.
NodeDis |
Nodal displacement |
GlobalND |
Nodal displacement in the global environment |
data(triMesh) data(load) data(reduc_EM) data(bound) meshP = triMesh$MeshPts$p REM = reduc_EM ForceV = load NodeKnownL = bound displacN = NodeDis.2d(meshP, REM, ForceV, NodeKnownL)
data(triMesh) data(load) data(reduc_EM) data(bound) meshP = triMesh$MeshPts$p REM = reduc_EM ForceV = load NodeKnownL = bound displacN = NodeDis.2d(meshP, REM, ForceV, NodeKnownL)
Generates heat map for given stress or strain on the geometry. Threshold values for the color must be assigned.
PlotSystem.2d(meshP, meshT, PlotVal, a, b, c, d, e, f, g, h, i, j, Oc, ac, bc, cc, dc, ec, fc, gc, hc, ic, jc)
PlotSystem.2d(meshP, meshT, PlotVal, a, b, c, d, e, f, g, h, i, j, Oc, ac, bc, cc, dc, ec, fc, gc, hc, ic, jc)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
meshT |
Matrix (3 x n) containing the number of the coordinate point that forms a given triangle within the mesh. |
PlotVal |
Value to be plotted, either stress or strain, return from function LocalStress function. |
a |
Threshold 1 |
b |
Threshold 2 |
c |
Threshold 3 |
d |
Threshold 4 |
e |
Threshold 5 |
f |
Threshold 6 |
g |
Threshold 7 |
h |
Threshold 8 |
i |
Threshold 9 |
j |
Threshold 10 |
Oc |
Color 0 |
ac |
Color 1 |
bc |
Color 2 |
cc |
Color 3 |
dc |
Color 4 |
ec |
Color 5 |
fc |
Color 6 |
gc |
Color 7 |
hc |
Color 8 |
ic |
Color 9 |
jc |
Color 10 |
Plot of colored polygon with mesh colored based on the plot value
data(triMesh) data(fea_result) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T PlotVal = abs(fea_result$Stress[,1]) Oc = "slateblue"; ac = "steelblue2"; bc = "cyan2"; cc = "palegreen2"; dc = "darkolivegreen1"; ec = "lemonchiffon"; fc = "lightgoldenrod1"; gc = "gold"; hc= "lightsalmon"; ic= "tomato"; jc= "firebrick3" a = 1e5; b = 5e5; c = 1e6; d = 5e6; e = 1e7; f = 5e7; g = 1e8; h = 5e8; i = 1e9; j =5e9 PlotSystem.2d(meshP, meshT, PlotVal, a, b, c, d, e, f, g, h, i, j, Oc, ac, bc, cc, dc, ec, fc, gc, hc, ic, jc)
data(triMesh) data(fea_result) meshP = triMesh$MeshPts$p meshT = triMesh$MeshPts$T PlotVal = abs(fea_result$Stress[,1]) Oc = "slateblue"; ac = "steelblue2"; bc = "cyan2"; cc = "palegreen2"; dc = "darkolivegreen1"; ec = "lemonchiffon"; fc = "lightgoldenrod1"; gc = "gold"; hc= "lightsalmon"; ic= "tomato"; jc= "firebrick3" a = 1e5; b = 5e5; c = 1e6; d = 5e6; e = 1e7; f = 5e7; g = 1e8; h = 5e8; i = 1e9; j =5e9 PlotSystem.2d(meshP, meshT, PlotVal, a, b, c, d, e, f, g, h, i, j, Oc, ac, bc, cc, dc, ec, fc, gc, hc, ic, jc)
Sample geometry converted into a 2D polygon. Polygon data that specifies all coordinate, coordinates that are within the geometry and coordinates that construct the lines of the geometry. Obtained from function: SinglePoly
polyshape
polyshape
An object of class list
of length 3.
Reduced element matrix calculated from the expanded element matrix. Obtained from function: ReducedEM
reduc_EM
reduc_EM
An object of class matrix
(inherits from array
) with 94 rows and 94 columns.
Reduced surface force matrix calculated from expanded element matrix. Obtained from function: ReducedSF
reduc_SF
reduc_SF
An object of class matrix
(inherits from array
) with 100 rows and 1 columns.
Reduced stiffness matrix - use boundary condition to reduce matrix to smaller form by removing systems that are bound.
ReducedEM.2d(GMat, NodeKnownL)
ReducedEM.2d(GMat, NodeKnownL)
GMat |
Global stiffness matrix |
NodeKnownL |
data frame with constraint parameters applied to each node in the x and y directions. Formatted for use in reduced element matrix. Generated from ApplyBC function. |
Produces a large matrix.
ReducedEM |
Reduced element matrix. |
data(gloMat) data(bound) GMat = gloMat NodeKnownL = bound reduc_EM = ReducedEM.2d(GMat, NodeKnownL)
data(gloMat) data(bound) GMat = gloMat NodeKnownL = bound reduc_EM = ReducedEM.2d(GMat, NodeKnownL)
Reduced matrix of surface forces
ReducedSF.2d(meshP, ExSurf)
ReducedSF.2d(meshP, ExSurf)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
ExSurf |
Expanded surface matrix, output from ExpandSFT |
Produces a large matrix.
RSF |
Produces a large, reduced surface force matrix |
data(triMesh) data(expSurf) meshP = triMesh$MeshPts$p ExSurf = expSurf reduc_SF = ReducedSF.2d(meshP, ExSurf)
data(triMesh) data(expSurf) meshP = triMesh$MeshPts$p ExSurf = expSurf reduc_SF = ReducedSF.2d(meshP, ExSurf)
Generates a mesh for polygon with a single continuous geometry
SinglePoly.2d(x, y, ptDS, ptDL)
SinglePoly.2d(x, y, ptDS, ptDL)
x |
X-coordinates for geometry. |
y |
Y-coordinates for geometry. |
ptDS |
Density of points desired within the geometry. |
ptDL |
Density of points desired at the perimeter of the geometry. |
Coordinate points of nodes distributed within and on the line of a given geometry.
AllCoords |
all coordinate points distributed across the geometry. |
Within |
all coordinate points within the geometry ONLY. |
Line |
all coordinate points that lay on the perimeter of the geometry ONLY. |
data(Cart) x = Cart[,1] y= Cart[,2] ptDS = 30 ptDL = 20 polyshape = SinglePoly.2d(x, y, ptDS, ptDL)
data(Cart) x = Cart[,1] y= Cart[,2] ptDS = 30 ptDL = 20 polyshape = SinglePoly.2d(x, y, ptDS, ptDL)
Element Surface Traction - generates the column matrix for uniformly distributed surface traction. If surface traction is not present, assign SFTensile and SFShear a value of 0.
SurfaceTraction.2d(meshP, SFTensile, SFShear, Length, Thick, area)
SurfaceTraction.2d(meshP, SFTensile, SFShear, Length, Thick, area)
meshP |
Matrix (2 x n) containing coordinate points of the mesh nodes. |
SFTensile |
Magnitude of tensile surface traction |
SFShear |
Magnitude of positive shear traction |
Length |
Truss length |
Thick |
Triangle element thickness |
area |
Triangle element area |
List of element matrices containing surface forces.
SurfT |
List of surface forces for each element. |
data(triMesh) data(dime) meshP = triMesh$MeshPts$p SFShear = 0 SFTensile = 0 Thick = 0.001 Length = dime$TrussLength area = dime$Area SurfTrac = SurfaceTraction.2d(meshP, SFTensile, SFShear, Length, Thick, area)
data(triMesh) data(dime) meshP = triMesh$MeshPts$p SFShear = 0 SFTensile = 0 Thick = 0.001 Length = dime$TrussLength area = dime$Area SurfTrac = SurfaceTraction.2d(meshP, SFTensile, SFShear, Length, Thick, area)
List of element matrices with surface traction. Obtained from function: SurfaceTraction
SurfTrac
SurfTrac
An object of class list
of length 50.
Clean node distribution within or outside of geometry. Optional function for complex geometries.
ThreshPts.2d(coords, thresh, edge)
ThreshPts.2d(coords, thresh, edge)
coords |
Nodal coordinates |
thresh |
Threshold for point removal. Ranges include: 500000-50000000 |
edge |
Coordinate points of the initial geometry. |
Coordinate points of valid nodes.
CleanedNodes |
Matrix of new nodes that abide by given threshold rules. |
NodeReport |
Report identifying with nodes were kept and which were removed. |
data(polyshape) coords = polyshape$Within thresh = 5000000 edge = polyshape$Line cleanpoly = ThreshPts.2d(coords, thresh, edge)
data(polyshape) coords = polyshape$Within thresh = 5000000 edge = polyshape$Line cleanpoly = ThreshPts.2d(coords, thresh, edge)
Triangulation by Delaunayn algorithm. Automatically generates a triangular mesh for a geometry containing nodal points.
triangulate0.2d(u0, edge)
triangulate0.2d(u0, edge)
u0 |
Matrix (2 x n) of node coordinates within the geometry. |
edge |
Matrix (2 x n) of coordinate points on the perimeter of the geometry. |
Produces data for generated mesh.
Meshpts |
Includes both new mesh coordinate points and triangulation of points. |
Centroids |
Centroid positions for each triangle element. |
data(cleanpoly) data(polyshape) u0 = cleanpoly$CleanedNodes edge = polyshape$Line triMesh = triangulate0.2d(u0, edge)
data(cleanpoly) data(polyshape) u0 = cleanpoly$CleanedNodes edge = polyshape$Line triMesh = triangulate0.2d(u0, edge)
Meshed coordinate points obtained from function: triangulate0
triMesh
triMesh
An object of class list
of length 2.