-
Notifications
You must be signed in to change notification settings - Fork 42
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
Concrete-rebar bondslip constraint model #100
base: devel
Are you sure you want to change the base?
Conversation
} | ||
}; | ||
|
||
// Bond-slip data |
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.
RebarBondSlipConstraint::computeQpOffDiagJacobian(Moose::ConstraintJacobianType /*type*/, | ||
unsigned int /*jvar*/) | ||
{ | ||
return 0.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.
It's going to be important to implement this for anything off-axis.
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.
By this I mean that if the bar is oriented in a direction off the Cartesian axes, this will be nonzero. You can ignore this for the first cut, but this will be very important to get right.
void | ||
RebarBondSlipConstraint::computeTangent() | ||
{ | ||
_slave_tangent *= 0.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.
Should be set = 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.
I guess that is what this accomplishes. It just looks strange. I'd replace it with an =
} | ||
|
||
_slave_tangent /= _slave_tangent.norm(); | ||
_current_elem_volume /= elems.size(); |
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.
Lines 156 and 271 don't seem consistent.
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.
What would be a better way to get the element length/volume?
{ | ||
case Moose::SlaveSlave: | ||
return _phi_slave[_j][_qp] * _penalty * _test_slave[_i][_qp] * | ||
(1.0 - _slave_tangent(_component) * _slave_tangent(_component)); |
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.
These are all computed assuming that there is a penalty stiffness in the axial and perpendicular directions, which isn't the case anymore with the bond slip model. You would need to apply the penalty stiffness in the perpendicular directions, but subtract that off in the axial direction and replace it with the tangent from the bond slip model. We do that kind of thing in contact in the MechanicalContactConstraint class. Same idea here. I imagine this is the main source of the convergence trouble.
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 was just thinking -- there's a newly introduced Constraint in tensor_mechanics that Swetha wrote that does something very similar to this Constraint: NodalFrictionalConstraint. It represents a frictional slider that uses a penalty constraint until it slips. I just looked at the code for the Jacobian in that class. It computes the nonlinear Jacobian, but it doesn't have any of the code I was expecting to see to deal with the directionality of the Jacobian. That's because the NodalFrictionalConstraint class is only applied to the dof in the axial direction of the beam, and it assumes that the beam is aligned in one of the Cartesian directions. Another separate Constraint (NodalStickConstraint) deals with tying it in the other two directions. Your constraint is dealing with all directions (which is probably preferable).
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.
The bondslip contribution towards the residual is constant. So I only considered the penalty contributions towards jacobian calculation. I believe I am using the normal direction to assign the contribution. If the truss member is inclined, only then the penalty would apply to both x- and y- directions.
95026d5
to
1a32463
Compare
1a32463
to
2bd59a4
Compare
69d0f8d
to
668ec77
Compare
668ec77
to
4218191
Compare
This is ready for another review @bwspenc |
64be4f9
to
79b928f
Compare
c4fa81b
to
a152e13
Compare
394ba89
to
de3c71b
Compare
de3c71b
to
97192a8
Compare
Addresses #99
Please take a look @bwspenc