From 4974ba1ac361b2424745b4a5d8654c3b4fea2889 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 7 Aug 2022 15:03:48 -0500 Subject: [PATCH] update: old damping to analytical damper model --- .../RodRigidBodyContact/rod_cylinder_contact.py | 15 +++++++++++---- .../rod_cylinder_contact_friction.py | 17 ++++++++++++----- .../rod_cylinder_contact_validation.py | 15 +++++++++++---- .../rod_cylinder_contact_with_y_normal.py | 15 +++++++++++---- 4 files changed, 45 insertions(+), 17 deletions(-) diff --git a/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact.py b/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact.py index ebd48dda4..81781e3a0 100644 --- a/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact.py +++ b/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact.py @@ -5,7 +5,7 @@ def rod_cylinder_contact_case(inclination_angle=0.0): class RodCylinderParallelContact( - BaseSystemCollection, Constraints, Connections, CallBacks, Forcing + BaseSystemCollection, Constraints, Connections, CallBacks, Forcing, Damping ): pass @@ -13,7 +13,7 @@ class RodCylinderParallelContact( # time step etc final_time = 10.0 - time_step = 1e-4 + time_step = 5e-4 total_steps = int(final_time / time_step) + 1 rendering_fps = 30 # 20 * 1e1 step_skip = int(1.0 / (rendering_fps * time_step)) @@ -25,7 +25,6 @@ class RodCylinderParallelContact( poisson_ratio = 0.5 shear_modulus = E / (2 * (1 + poisson_ratio)) n_elem = 50 - nu = 0.5 start = np.zeros((3,)) direction = np.array([np.sin(inclination_angle), 0.0, np.cos(inclination_angle)]) normal = np.array([0.0, 1.0, 0.0]) @@ -38,7 +37,7 @@ class RodCylinderParallelContact( base_length, base_radius, density, - nu, + 0.0, # internal damping constant, deprecated in v0.3.0 E, shear_modulus=shear_modulus, ) @@ -70,6 +69,14 @@ class RodCylinderParallelContact( nu=0.1, ) + # add damping + damping_constant = 1e-2 + rod_cylinder_parallel_contact_simulator.dampen(rod).using( + AnalyticalLinearDamper, + damping_constant=damping_constant, + time_step=time_step, + ) + # Add callbacks post_processing_dict_list = [] # For rod diff --git a/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_friction.py b/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_friction.py index e355df5a9..5f83f3be2 100644 --- a/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_friction.py +++ b/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_friction.py @@ -7,15 +7,15 @@ def rod_cylinder_contact_friction_case( force_coefficient=0.1, normal_force_mag=10, POST_PROCESSING=False ): class RodCylinderParallelContact( - BaseSystemCollection, Constraints, Connections, CallBacks, Forcing + BaseSystemCollection, Constraints, Connections, CallBacks, Forcing, Damping ): pass rod_cylinder_parallel_contact_simulator = RodCylinderParallelContact() # time step etc - final_time = 20.0 - time_step = 1e-4 + final_time = 10.0 + time_step = 5e-4 total_steps = int(final_time / time_step) + 1 rendering_fps = 30 # 20 * 1e1 step_skip = int(1.0 / (rendering_fps * time_step)) @@ -27,7 +27,6 @@ class RodCylinderParallelContact( poisson_ratio = 0.5 shear_modulus = E / (2 * (1 + poisson_ratio)) n_elem = 50 - nu = 0.5 start = np.zeros((3,)) direction = np.array([0, 0.0, 1.0]) normal = np.array([0.0, 1.0, 0.0]) @@ -40,7 +39,7 @@ class RodCylinderParallelContact( base_length, base_radius, density, - nu, + 0.0, # internal damping constant, deprecated in v0.3.0 E, shear_modulus=shear_modulus, ) @@ -57,6 +56,14 @@ class RodCylinderParallelContact( UniformForces, force=normal_force_mag * force_coefficient, direction=direction ) + # add damping + damping_constant = 2e-3 + rod_cylinder_parallel_contact_simulator.dampen(rod).using( + AnalyticalLinearDamper, + damping_constant=damping_constant, + time_step=time_step, + ) + cylinder_height = 8 * base_length cylinder_radius = base_radius diff --git a/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_validation.py b/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_validation.py index 97887a74a..b7cc970ba 100644 --- a/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_validation.py +++ b/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_validation.py @@ -4,7 +4,7 @@ class SingleRodSingleCylinderInteractionSimulator( - BaseSystemCollection, Constraints, Connections, Forcing, CallBacks + BaseSystemCollection, Constraints, Connections, Forcing, CallBacks, Damping ): pass @@ -51,7 +51,6 @@ class SingleRodSingleCylinderInteractionSimulator( base_radius = 0.01 base_area = np.pi * base_radius ** 2 density = 1750 -nu = 0.001 E = 3e5 poisson_ratio = 0.5 shear_modulus = E / (1 + poisson_ratio) @@ -87,7 +86,7 @@ class SingleRodSingleCylinderInteractionSimulator( base_length, base_radius, density, - nu, + 0.0, # internal damping constant, deprecated in v0.3.0 E, shear_modulus=shear_modulus, ) @@ -138,11 +137,19 @@ def make_callback(self, system, time, current_step: int): PositionCollector, step_skip=200, callback_params=recorded_cyl_history ) +# add damping +damping_constant = 1e-3 +dt = 1e-4 +single_rod_sim.dampen(rod1).using( + AnalyticalLinearDamper, + damping_constant=damping_constant, + time_step=dt, +) + single_rod_sim.finalize() timestepper = PositionVerlet() final_time = 2.0 dl = base_length / n_elem -dt = 1e-4 total_steps = int(final_time / dt) print("Total steps", total_steps) diff --git a/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_with_y_normal.py b/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_with_y_normal.py index 7dc9be584..87303d347 100644 --- a/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_with_y_normal.py +++ b/examples/RigidBodyCases/RodRigidBodyContact/rod_cylinder_contact_with_y_normal.py @@ -4,7 +4,7 @@ class SingleRodSingleCylinderInteractionSimulator( - BaseSystemCollection, Constraints, Connections, Forcing, CallBacks + BaseSystemCollection, Constraints, Connections, Forcing, CallBacks, Damping ): pass @@ -24,7 +24,6 @@ class SingleRodSingleCylinderInteractionSimulator( base_radius = 0.01 base_area = np.pi * base_radius ** 2 density = 1750 -nu = 0.001 E = 3e5 poisson_ratio = 0.5 shear_modulus = E / (1 + poisson_ratio) @@ -65,7 +64,7 @@ class SingleRodSingleCylinderInteractionSimulator( base_length, base_radius, density, - nu, + 0.0, # internal damping constant, deprecated in v0.3.0 E, shear_modulus=shear_modulus, ) @@ -116,11 +115,19 @@ def make_callback(self, system, time, current_step: int): PositionCollector, step_skip=200, callback_params=recorded_cyl_history ) +# add damping +damping_constant = 1e-3 +dt = 1e-4 +single_rod_sim.dampen(rod1).using( + AnalyticalLinearDamper, + damping_constant=damping_constant, + time_step=dt, +) + single_rod_sim.finalize() timestepper = PositionVerlet() final_time = 2.0 dl = base_length / n_elem -dt = 1e-4 total_steps = int(final_time / dt) print("Total steps", total_steps)