chrono::host_container Struct Reference

## Description

Structure of arrays containing simulation data.

#include <ChDataManager.h>

## Public Attributes

custom_vector< real3aabb_min
List of bounding boxes minimum point.

custom_vector< real3aabb_max
List of bounding boxes maximum point.

custom_vector< real3aabb_min_tet
List of bounding boxes minimum point for tets.

custom_vector< real3aabb_max_tet
List of bounding boxes maximum point for tets.

custom_vector< long long > contact_pairs
Contact pairs (encoded in a single long log)

custom_vector< real3norm_rigid_rigid

custom_vector< real3cpta_rigid_rigid

custom_vector< real3cptb_rigid_rigid

custom_vector< real > dpth_rigid_rigid

custom_vector< vec2 > bids_rigid_rigid

custom_vector< real3norm_rigid_fluid

custom_vector< real3cpta_rigid_fluid

custom_vector< real > dpth_rigid_fluid

custom_vector< int > neighbor_rigid_fluid

custom_vector< int > c_counts_rigid_fluid

custom_vector< int > neighbor_3dof_3dof

custom_vector< int > c_counts_3dof_3dof

custom_vector< int > particle_indices_3dof

custom_vector< int > reverse_mapping_3dof

custom_vector< real3norm_rigid_tet

custom_vector< real3cpta_rigid_tet

custom_vector< real3cptb_rigid_tet

custom_vector< real > dpth_rigid_tet

custom_vector< int > neighbor_rigid_tet

custom_vector< real4face_rigid_tet

custom_vector< int > c_counts_rigid_tet

custom_vector< real3norm_rigid_tet_node

custom_vector< real3cpta_rigid_tet_node

custom_vector< real > dpth_rigid_tet_node

custom_vector< int > neighbor_rigid_tet_node

custom_vector< int > c_counts_rigid_tet_node

custom_vector< real3norm_marker_tet

custom_vector< real3cpta_marker_tet

custom_vector< real3cptb_marker_tet

custom_vector< real > dpth_marker_tet

custom_vector< int > neighbor_marker_tet

custom_vector< real4face_marker_tet

custom_vector< int > c_counts_marker_tet

custom_vector< real3ct_body_force
Total contact force on bodies.

custom_vector< real3ct_body_torque
Total contact torque on these bodies.

custom_vector< vec3 > shear_neigh
Neighbor list of contacting bodies and shapes.

custom_vector< real3shear_disp
Accumulated shear displacement for each neighbor.

custom_vector< int > ct_body_map
Mapping from all bodies in the system to bodies involved in a contact. More...

custom_vector< real3fric_rigid_rigid
This vector holds the friction information as a triplet: x - Sliding friction, y - Rolling friction, z - Spinning Friction. More...

custom_vector< real > coh_rigid_rigid
Holds the cohesion value for each contact. More...

custom_vector< real4compliance_rigid_rigid
Precomputed compliance values for all contacts.

custom_vector< real3pos_rigid

custom_vector< quaternionrot_rigid

custom_vector< char > active_rigid

custom_vector< char > collide_rigid

custom_vector< real > mass_rigid

custom_vector< real3pos_3dof

custom_vector< real3sorted_pos_3dof

custom_vector< real3vel_3dof

custom_vector< real3sorted_vel_3dof

custom_vector< real3pos_node_fea

custom_vector< real3vel_node_fea

custom_vector< real > mass_node_fea

custom_vector< uvec4 > tet_indices

custom_vector< uvec4 > boundary_triangles_fea

custom_vector< uint > boundary_node_fea

custom_vector< uint > boundary_element_fea

custom_vector< short2 > boundary_family_fea

custom_vector< int > bilateral_type
Bilateral constraint type (all supported constraints).

custom_vector< int > bilateral_mapping
Keeps track of active bilateral constraints.

custom_vector< real > shaft_rot
shaft rotation angles

custom_vector< real > shaft_inr
shaft inverse inertias

custom_vector< char > shaft_active
shaft active (not sleeping nor fixed) flags

custom_vector< real3fric_data
friction information (sliding, rolling, spinning)

custom_vector< real > cohesion_data
constant cohesion forces (NSC and SMC)

custom_vector< real4compliance_data
compliance (NSC only)

custom_vector< real2elastic_moduli
Young's modulus and Poisson ratio (SMC only)

custom_vector< real > mu
Coefficient of friction (SMC only)

custom_vector< real > cr
Coefficient of restitution (SMC only)

custom_vector< real4smc_coeffs
Stiffness and damping coefficients (SMC only)

Adhesion multipliers used in DMT model (SMC only)

CompressedMatrix< real > Nshur
This matrix, if used will hold D^TxM^-1xD in sparse form.

CompressedMatrix< real > D
The D Matrix hold the Jacobian for the entire system.

CompressedMatrix< real > D_T
D_T is the transpose of the D matrix, note that D_T is actually computed first and D is taken as the transpose. More...

CompressedMatrix< real > M_inv
M_inv is the inverse mass matrix, This matrix, if holding the full inertia tensor is block diagonal. More...

CompressedMatrix< real > M

CompressedMatrix< real > M_invD
Minv_D holds M_inv multiplied by D, this is done as a preprocessing step so that later, when the full matrix vector product is needed it can be performed in two steps, first R = Minv_D*x, and then D_T*R where R is just a temporary variable used here for illustrative purposes. More...

DynamicVector< real > R_full
The right hand side of the system.

DynamicVector< real > R
The rhs of the system, changes during solve.

DynamicVector< real > b
Correction terms.

DynamicVector< real > s

DynamicVector< real > M_invk
Result of M_inv multiplied by vector of forces.

DynamicVector< real > gamma
The unknowns we are solving for.

DynamicVector< real > v
This vector holds the velocities for all objects.

DynamicVector< real > hf
This vector holds h*forces, h is time step.

DynamicVector< real > E
While E is the compliance matrix, in reality it is completely diagonal therefore it is stored in a vector for performance reasons. More...

DynamicVector< real > Fc

custom_vector< uint > bin_intersections

custom_vector< uint > bin_number

custom_vector< uint > bin_number_out

custom_vector< uint > bin_aabb_number

custom_vector< uint > bin_start_index

custom_vector< uint > bin_num_contact

## Member Data Documentation

 custom_vector chrono::host_container::coh_rigid_rigid

Holds the cohesion value for each contact.

Similar to friction this is precomputed for all contacts in parallel.

 custom_vector chrono::host_container::ct_body_map

Mapping from all bodies in the system to bodies involved in a contact.

For bodies that are currently not in contact, the mapping entry is -1. Otherwise, the mapping holds the appropriate index in the vectors above.

 CompressedMatrix chrono::host_container::D_T

D_T is the transpose of the D matrix, note that D_T is actually computed first and D is taken as the transpose.

This is due to the way that blaze handles sparse matrix allocation, it is easier to do it on a per row basis.

 DynamicVector chrono::host_container::E

While E is the compliance matrix, in reality it is completely diagonal therefore it is stored in a vector for performance reasons.

 custom_vector chrono::host_container::fric_rigid_rigid

This vector holds the friction information as a triplet: x - Sliding friction, y - Rolling friction, z - Spinning Friction.

This is precomputed at every timestep for all contacts in parallel. Improves performance and reduces conditionals later on.

 CompressedMatrix chrono::host_container::M_inv

M_inv is the inverse mass matrix, This matrix, if holding the full inertia tensor is block diagonal.

 CompressedMatrix chrono::host_container::M_invD

Minv_D holds M_inv multiplied by D, this is done as a preprocessing step so that later, when the full matrix vector product is needed it can be performed in two steps, first R = Minv_D*x, and then D_T*R where R is just a temporary variable used here for illustrative purposes.

In reality the entire operation happens inline without a temp variable.