Unilateral constraints

Description

Collaboration diagram for Unilateral constraints:

Classes

class  chrono::ChConstraintBilateral
 Bilateral (joint) constraints. More...
 
class  chrono::ChConstraintRigidRigid
 Unilateral (contact) constraints. More...
 

Macros

#define Loop_Over_Rigid_Neighbors(X)
 
#define Loop_Over_Fluid_Neighbors(X)
 

Functions

CH_MULTICORE_API void chrono::Orthogonalize (const real3 &Vx, real3 &Vy, real3 &Vz)
 
CH_MULTICORE_API void chrono::Compute_Jacobian (const quaternion &quat, const real3 &U, const real3 &V, const real3 &W, const real3 &point, real3 &T1, real3 &T2, real3 &T3)
 
CH_MULTICORE_API void chrono::Compute_Jacobian_Rolling (const quaternion &quat, const real3 &U, const real3 &V, const real3 &W, real3 &T1, real3 &T2, real3 &T3)
 
CH_MULTICORE_API bool chrono::Cone_generalized_rigid (real &gamma_n, real &gamma_u, real &gamma_v, real mu)
 
CH_MULTICORE_API bool chrono::Cone_single_rigid (real &gamma_n, real &gamma_s, real mu)
 
CH_MULTICORE_API void chrono::AppendRigidFluidBoundary (const real contact_mu, const uint num_fluid_bodies, const uint body_offset, const uint start_boundary, ChMulticoreDataManager *data_manager)
 
CH_MULTICORE_API void chrono::ProjectRigidFluidBoundary (const real contact_mu, const real contact_cohesion, const uint num_fluid_bodies, const uint start_boundary, real *gamma, ChMulticoreDataManager *data_manager)
 
CH_MULTICORE_API void chrono::ComplianceRigidFluidBoundary (const real contact_mu, const real contact_compliance, const real alpha, const uint start_boundary, ChMulticoreDataManager *data_manager)
 
CH_MULTICORE_API void chrono::CorrectionRigidFluidBoundary (const real contact_mu, const real contact_cohesion, const real alpha, const real contact_recovery_speed, const uint num_fluid_bodies, const uint start_boundary, ChMulticoreDataManager *data_manager)
 
CH_MULTICORE_API void chrono::BuildRigidFluidBoundary (const real contact_mu, const uint num_fluid_bodies, const uint body_offset, const uint start_boundary, ChMulticoreDataManager *data_manager)
 

Macro Definition Documentation

◆ Loop_Over_Fluid_Neighbors

#define Loop_Over_Fluid_Neighbors (   X)
Value:
for (int body_a = 0; body_a < (signed)num_fluid_bodies; body_a++) { \
real3 pos_p = sorted_pos[body_a]; \
for (int i = 0; i < data_manager->cd_data->c_counts_3dof_3dof[body_a]; i++) { \
int body_b = data_manager->cd_data->neighbor_3dof_3dof[body_a * ChNarrowphase::max_neighbors + i]; \
if (body_a == body_b) { \
continue; \
} \
if (body_a > body_b) { \
continue; \
} \
real3 xij = pos_p - sorted_pos[body_b]; \
X; \
index++; \
} \
}

◆ Loop_Over_Rigid_Neighbors

#define Loop_Over_Rigid_Neighbors (   X)
Value:
for (int p = 0; p < (signed)num_fluid_bodies; p++) { \
int start = contact_counts[p]; \
int end = contact_counts[p + 1]; \
for (int index = start; index < end; index++) { \
int i = index - start; \
X \
} \
}