-
Notifications
You must be signed in to change notification settings - Fork 94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rigid body connector #1119
base: master
Are you sure you want to change the base?
Rigid body connector #1119
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1119 +/- ##
==========================================
- Coverage 93.57% 90.78% -2.80%
==========================================
Files 39 39
Lines 6071 6260 +189
==========================================
+ Hits 5681 5683 +2
- Misses 390 577 +187 ☔ View full report in Codecov by Sentry. |
Is there a way to formulate this constraint in a somewhat "general" way? I think it is fine to have in Ferrite even if the most common use case is for a certain class of problems. |
I tried to think of way to generalize it, but i dont think there is an analog constraint for e.g. heat problems. |
I think rather than having this directly in Ferrite we should think about providing the building blocks (and howtos) to build such special constraints in an efficient way. In the end this just another affine constraint, since I think building most affine constraints is right now difficult for most users. |
Yes, it could work as a how-to. It would also be fun to replicate this phase field problem, where they use these rigid body connectors to apply the boundary conditions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the RefPoint
and Point
are really cool features to get in 🚀
I think that RigidBodyConnector
potentially could be generalized by accepting some function as argument, I think it could be nice to think more about how we could have an interface and separate out that part in a standalone PR?
@@ -300,6 +308,7 @@ struct Pyramid <: AbstractCell{RefPyramid} | |||
nodes::NTuple{5, Int} | |||
end | |||
|
|||
geometric_interpolation(::Type{Point}) = Lagrange{RefPoint, 1}() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since it is a constant value, shouldn't this be 0th order?
geometric_interpolation(::Type{Point}) = Lagrange{RefPoint, 1}() | |
geometric_interpolation(::Type{Point}) = Lagrange{RefPoint, 0}() |
@@ -4,6 +4,7 @@ export | |||
VectorInterpolation, | |||
ScalarInterpolation, | |||
VectorizedInterpolation, | |||
#RefPoint, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#RefPoint, | |
RefPoint, |
@@ -58,6 +59,7 @@ export | |||
# Grid | |||
Grid, | |||
Node, | |||
#Point, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#Point, | |
Point, |
return [Tensor{1, 0, Float64, 0}(())] # zero dim Vec{0} | ||
end | ||
function reference_shape_value(ip::Lagrange{RefPoint}, ξ::Vec{0}, i::Int) | ||
return i == 1 && 1.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return i == 1 && 1.0 | |
i == 1 && return 1.0 |
@@ -82,7 +82,7 @@ A collection of constraints associated with the dof handler `dh`. | |||
`T` is the numeric type for stored values. | |||
""" | |||
mutable struct ConstraintHandler{DH <: AbstractDofHandler, T} | |||
const dbcs::Vector{Dirichlet} | |||
const dbcs::Vector{Dirichlet} #TODO: Vector{Constraint} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not required?
const dbcs::Vector{Dirichlet} #TODO: Vector{Constraint} | |
const dbcs::Vector{Dirichlet} |
An equivalent there would be to prescribe a constant, but unknown, temperature on a boundary, AFAIU. |
Rigid body connectors
It would be nice to support Rigid body connectors (RBE2 and RBE3) in Ferrite. They are quite common to use in industry, and there has been questions about them in the slack channel before. They are usually modeled with rigid bodies which are connected to some part of the mesh (for example the nodes/facets around a hole).
This PR adds:
Point<:AbstractCell
and an interpolation which can be used to add rigid bodies dofs to the system.RigidBodyConnector<:Constraint
(RBE2) which sets up the affine constraints between the rigid body and connecting mesh (This constraint is pretty specific for solid mechanics problems, so it should probably not be included in core Ferrite).