-
Notifications
You must be signed in to change notification settings - Fork 89
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
feat: Configuration loop acceleration for SolidMechanicsLagrangeContact #3349
base: develop
Are you sure you want to change the base?
Conversation
sohailwaziri
commented
Sep 12, 2024
•
edited by paveltomin
Loading
edited by paveltomin
…anicsEFEM_impl.hpp
…stick condition. now it gets updated after newton converges
… into swaziri/experimental
@castelletto1 @matteofrigo5 @CusiniM this is actually ready to have a look |
@paveltomin @sohailwaziri |
if( configurationLoopIter == 0 ) | ||
{ | ||
m_x0[kfe] = currentTau_unscaled - limitTau; | ||
} |
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 tried the example suggested by @matteofrigo5 (ContactMechanics_SimpleCubes_smoke).
It happens that total_size
computed in initializeAccelerationVariables
is equal to 0, hence GEOS crashes here because m_x0
has zero size, as all the other allocated arrays needed for the nonlinear acceleration.
I suspect it is because in that example the SurfaceGenerator
is used to split the mesh.
@sohailwaziri: please make sure initializeAccelerationVariables
is called after the mesh has been split, when the SurfaceGenerator
is used. Thanks!
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 tried the example suggested by @matteofrigo5 (ContactMechanics_SimpleCubes_smoke).
It happens that
total_size
computed ininitializeAccelerationVariables
is equal to 0, hence GEOS crashes here becausem_x0
has zero size, as all the other allocated arrays needed for the nonlinear acceleration.I suspect it is because in that example the
SurfaceGenerator
is used to split the mesh.@sohailwaziri: please make sure
initializeAccelerationVariables
is called after the mesh has been split, when theSurfaceGenerator
is used. Thanks!
i got it fixed by moving initializeAccelerationVariables
into setupSystem
without acceleration:
lagrangiancontact, number of time steps: 11
lagrangiancontact, number of successful outer loop iterations: 13
lagrangiancontact, number of successful nonlinear iterations: 94
lagrangiancontact, number of successful linear iterations: 94
lagrangiancontact, number of time step cuts: 1
lagrangiancontact, number of discarded outer loop iterations: 5
lagrangiancontact, number of discarded nonlinear iterations: 35
lagrangiancontact, number of discarded linear iterations: 35
with acceleration:
lagrangiancontact, number of time steps: 11
lagrangiancontact, number of successful outer loop iterations: 13
lagrangiancontact, number of successful nonlinear iterations: 95
lagrangiancontact, number of successful linear iterations: 95
lagrangiancontact, number of time step cuts: 1
lagrangiancontact, number of discarded outer loop iterations: 5
lagrangiancontact, number of discarded nonlinear iterations: 35
lagrangiancontact, number of discarded linear iterations: 35
so acceleration does not hurt but does not help either
maybe some parameter needs to be tuned as Sohail mentioned yesterday