So i am currently tring to run a simulation on a simple beam using the arc length method, where for a certain number of increments a certain load (in the negative x direction) is applied with specific boundary conditions so that the beam would arch, then after that number of increments is reached, change the faceset where the the force is acting, and also change the force so that it only works in the negative y achses, to study the snap through affect through the arc length method.
My biggest issue is if i can set thi through a
while loop
if n<10 (or any other number)
apply bcs1
force= Vec{3}(-0.001, 0, 0)
etc etc.
else
apply bcs2
force = Vec{3}(0,-0.001,0)
faceset2.
apply arclength method.
my issue is i have tried to recet the faceset where the force is working, but if it is set, no changes to it can be applied.
would just doing an if else loop each with the assemble_global_G!, assemble_element_P!, assemble_global_P! , and assemble_element_G being calculated for each force and each faceset where the force is acting ?
It is a bit difficult to understand what you are trying to do exactly, but my understanding is that you want to switch the boundary conditions mid-simulation? Based on the limited information in this post I think the easiest way would be to create two different constraint handlers with different conditions inside and apply the one you want based on the step.
i have used this loop
‘’'while n<nmax
if n<20
boundary condition 1
faceset 1
forcevector ={0.01, 0, 0}
else
boundary conditions 2
faceset 2 (where my forcevector is acting)
forcevector={0 , -0.1, 0}
end’‘’
my question is if could remove a facecet later down my loop, so that i dont have to redefine my new faceset where my force is acting, and as such also redefine my assemble_element_P, assemble_global_P, and element and global G for the resiudal. if i try to redefine it using the same name, it tells me it has already been defined so i cant overwrite it, and julia doesnt allow modifying pointers.