Skip to content

Commit

Permalink
improve documentation of the beam elements
Browse files Browse the repository at this point in the history
  • Loading branch information
PetrKryslUCSD committed Sep 27, 2023
1 parent 5e08c97 commit 164bbf0
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 3 deletions.
9 changes: 8 additions & 1 deletion src/FEMMCorotBeamModule.jl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ using ..FESetL2BeamModule: FESetL2Beam, initial_local_frame!
"""
FEMMCorotBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
Class for co-rotational beam finite element modeling machine.
Type for co-rotational beam finite element modeling machine (FEMM).
"""
mutable struct FEMMCorotBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
integdomain::IntegDomain{S, F} # integration domain data
Expand Down Expand Up @@ -46,6 +46,13 @@ mutable struct FEMMCorotBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
_OS::FFltMat
end

"""
FEMMCorotBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso) where {S<:FESetL2, F<:Function}
Constructor.
Supply the integration domain and the material.
"""
function FEMMCorotBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso) where {S<:FESetL2, F<:Function}
typeof(delegateof(integdomain.fes)) <: FESetL2Beam || error("Expected to delegate to FESetL2Beam")
_ecoords0 = fill(0.0, 2, 3);
Expand Down
24 changes: 23 additions & 1 deletion src/FEMMLinBeamModule.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ import FinEtools.FEMMBaseModule: inspectintegpoints
"""
FEMMLinBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
Class for co-rotational beam finite element modeling machine.
Class for linear beam finite element modeling machine.
The beam can be connected to the nodes with given eccentricities (the transverse
eccentricity is uniform along its length). Only linear kinematics is
implemented at the moment. The beam stiffness can be either shear-flexible
(Timoshenko), or shear-rigid (Bernoulli-Euler). The local beam stiffness is
expressed analytically: no numerical integration is involved.
"""
mutable struct FEMMLinBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
integdomain::IntegDomain{S, F} # integration domain data
Expand All @@ -38,6 +44,15 @@ mutable struct FEMMLinBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
_LF::FFltVec
end

"""
FEMMLinBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso, uniform_eccentricity) where {S<:FESetL2, F<:Function}
Constructor.
Supply the integration domain, material, and the eccentricity parameters
(given in the order: first node, f1 direction, second node, f1 direction, f2
direction, f3 direction).
"""
function FEMMLinBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso, uniform_eccentricity) where {S<:FESetL2, F<:Function}
typeof(delegateof(integdomain.fes)) <: FESetL2Beam || error("Expected to delegate to FESetL2Beam")
_eccentricities = fill(0.0, count(integdomain.fes), 4)
Expand Down Expand Up @@ -73,6 +88,13 @@ function FEMMLinBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso,
)
end

"""
FEMMLinBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso) where {S<:FESetL2, F<:Function}
Constructor.
Supply the integration domain and the material. The eccentricities are assumed to be zero.
"""
function FEMMLinBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso) where {S<:FESetL2, F<:Function}
return FEMMLinBeam(integdomain, material, [0.0, 0.0, 0.0, 0.0])
end
Expand Down
14 changes: 13 additions & 1 deletion src/FEMMRITBeamModule.jl
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ using ..FESetL2BeamModule: FESetL2Beam, initial_local_frame!
"""
FEMMRITBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
Class for linear reduced-integration Timoshenko beam finite element modeling machine.
Class for linear reduced-integration beam finite element modeling machine.
Only linear kinematics is implemented at the moment, and only linear basis
functions are available (i.e. it is a two-node element). The beam stiffness is
shear-flexible(Timoshenko). The local beam stiffness is expressed analytically:
the one-point numerical integration is hardwired.
"""
mutable struct FEMMRITBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
integdomain::IntegDomain{S, F} # integration domain data
Expand All @@ -37,6 +42,13 @@ mutable struct FEMMRITBeam{S<:FESetL2, F<:Function} <: AbstractFEMM
_OS::FFltMat
end

"""
FEMMRITBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso) where {S<:FESetL2, F<:Function}
Constructor.
Supply integration domain (mesh) and the material.
"""
function FEMMRITBeam(integdomain::IntegDomain{S, F}, material::MatDeforElastIso) where {S<:FESetL2, F<:Function}
typeof(delegateof(integdomain.fes)) <: FESetL2Beam || error("Expected to delegate to FESetL2Beam")
_ecoords0 = fill(0.0, 2, 3);
Expand Down

0 comments on commit 164bbf0

Please sign in to comment.