Hi all,

I'm relatively new using Project Chrono and I'm struggling trying to 
connect a rigid link to a flexible beam element (fea). I have reduced the 
problem to an easy example to reproduce this.

I'm using a simple cantilever beam. I am able to clamp the lowest node. But 
when I try to include a rigid link to connect a lumped mass at the free end 
of the beam, I run into problems with the dynamic solver: HHT: Reached 
minimum allowable step size. For reference, the static solver runs without 
issues. I guess I'm not using the proper element to connect to a fea 
element (?)

Attached you can find the schematic representation of the system and the 
model in pyChrono.

Any hint on how to do this would be great. Thanks for the support!

-- 
You received this message because you are subscribed to the Google Groups 
"ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/projectchrono/1b8734e8-cb84-42bb-a63e-6b26cf29fb09n%40googlegroups.com.
# Test cantilever beam with rigid link and lumped mass.
import pychrono as chrono
import pychrono.fea as fea
import pychrono.pardisomkl as mkl

system = chrono.ChSystemSMC()

# Material properties
E = 210E9           # Young Modulus [N/m^2]
rho = 7860          # Density [kg/m^3]
nu = 0.3            # Poisson ratio [-]
G = E/(2*(1+nu))    # Shear Modulus [N/m^2]

# Create one beam:
mesh = fea.ChMesh()
builder = fea.ChBuilderBeamEuler()

beam_section = fea.ChBeamSectionEulerAdvanced()
beam_section.SetAsCircularSection(0.5)
beam_section.SetYoungModulus(E)
beam_section.SetShearModulus(G)
beam_section.SetDensity(rho)
beam_section.SetRayleighDampingBeta(0.002)      # Stiffness proportional damping    

builder.BuildBeam(mesh,
                  beam_section,                           # Beam section properties
                  5,                                      # Elements per section  
                  chrono.ChVector3d(0, 0, 0),             # Start point
                  chrono.ChVector3d(0, 0, 10),            # End point
                  chrono.ChVector3d(1, 0, 0))             # the 'X' direction of the section for the beam

end_node = builder.GetLastBeamNodes().back()
start_node = builder.GetLastBeamNodes().front()

# Clamp condition:
start_node.SetFixed(True)

# Create a lumped mass and inertia: 
#############################################################################################
# This is the part that crashes my dynamic analysis. Static analysis works.

# Lumped mass and inertia:
lumped_mass = chrono.ChBody()
lumped_mass.SetMass(50) # Mass [kg]
lumped_mass.SetInertiaXX(chrono.ChVector3d(100,100,100)) # Moments of inertia [kgm^2]
lumped_mass.SetPos(chrono.ChVector3d(-5,0,10)) # Position
system.Add(lumped_mass)

# Rigid link:
rigid_link = chrono.ChLinkMateFix()
rigid_link.Initialize(lumped_mass, end_node)
system.Add(rigid_link)   
#############################################################################################

system.Add(mesh)

# Defining the gavity acceleration:
system.SetGravitationalAcceleration(chrono.ChVector3d(0, 0, -9.80665))

# Solver:
dt = 0.01 # Time step [s]
t_end = 50 # Simulation length [s]
n_steps = int((t_end/dt)+1) # Number of steps
solver = mkl.ChSolverPardisoMKL()
system.SetSolver(solver)    
system.SetTimestepperType(chrono.ChTimestepper.Type_HHT)  

step = 0
while step < n_steps:
    system.DoStepDynamics(dt)
    step += 1 # Moving to the next time step

Reply via email to