|
MULTIBODY SIMULATION SOFTWARE - API documentation |
#include <CHlcpIterativeCudaSolver.h>


Public Member Functions | |
| ChLcpIterativeCuda (int mmax_iters=50, bool mwarm_start=false, double mtolerance=0.0, double momega=0.2, int max_num_GPU_contacts=60000, int max_num_GPU_bodies=10000, int max_num_GPU_bilaterals=1024) | |
| virtual double | Solve (ChLcpSystemDescriptor &sysd, bool add_Mq_to_f=false) |
| void | SetDt (double mdt) |
| double | GetDt () |
| void | SetMaxRecoverySpeed (double mrs) |
| double | GetMaxRecoverySpeed () |
| void | SetF_factor (double mf) |
| double | GetF_factor () |
| void | SetC_factor (double mf) |
| double | GetC_factor () |
| void | SetCt_factor (double mf) |
| double | GetCt_factor () |
| virtual void | IntegrateTimeStep (double mdt) |
| virtual void | Set_do_integration_step (bool md) |
| virtual bool | Get_do_integration_step () |
Protected Attributes | |
| double | dt |
| double | max_recoveryspeed |
| double | F_factor |
| double | C_factor |
| double | Ct_factor |
| unsigned int | max_GPU_bodies |
| unsigned int | max_GPU_contacts |
| unsigned int | max_GPU_bilaterals |
| unsigned int | n_bodies_GPU |
| unsigned int | n_contacts_GPU |
| unsigned int | n_bilaterals_GPU |
| bool | do_integration_step |
| unsigned int | step_counter |
| void * | h_buffer_bodies |
| void * | d_buffer_bodies |
| void * | h_buffer_contacts |
| void * | d_buffer_contacts |
| void * | h_buffer_bilaterals |
| void * | d_buffer_bilaterals |
| void * | d_buffer_reduction |
| chrono::ChLcpIterativeCuda::ChLcpIterativeCuda | ( | int | mmax_iters = 50, |
|
| bool | mwarm_start = false, |
|||
| double | mtolerance = 0.0, |
|||
| double | momega = 0.2, |
|||
| int | max_num_GPU_contacts = 60000, |
|||
| int | max_num_GPU_bodies = 10000, |
|||
| int | max_num_GPU_bilaterals = 1024 | |||
| ) |
| mmax_iters | max.number of iterations |
| mwarm_start | uses warm start? |
| mtolerance | tolerance for termination criterion |
| momega | overrelaxation criterion |
| max_num_GPU_contacts | maximum allowed number of contacts |
| max_num_GPU_bodies | maximum allowed number of bodies |
| max_num_GPU_bilaterals | maximum allowed number of bilateral constraints |
| double chrono::ChLcpIterativeCuda::Solve | ( | ChLcpSystemDescriptor & | sysd, | |
| bool | add_Mq_to_f = false | |||
| ) | [virtual] |
Performs the solution of the LCP.
| sysd | system description with constraints and variables |
| add_Mq_to_f | if true, takes the initial 'q' and adds [M]*q to 'f' vector |
Implements chrono::ChLcpSolver.
| void chrono::ChLcpIterativeCuda::SetDt | ( | double | mdt | ) |
Set the integration dt step. Remember to update this value before calling Solve() , because the postprocessing will take care of time step integration, which depends on the dt.
| void chrono::ChLcpIterativeCuda::SetMaxRecoverySpeed | ( | double | mrs | ) |
Set the maximum recovery speed for stabilization. Remember to update this value before calling Solve() , because the preprocessing will take care of building contact residuals with stabilization factors, which depends on this recovery speed value.
| void chrono::ChLcpIterativeCuda::SetF_factor | ( | double | mf | ) |
Set the time step multiplier for the forces. Remember to update this value before calling Solve() , because the preprocessing will take care of applying forces with this scaling.
| void chrono::ChLcpIterativeCuda::SetC_factor | ( | double | mf | ) |
Set the multiplier for the contact residuals. Remember to update this value before calling Solve() , because the preprocessing will take care of building contact residuals with stabilization factors, which depends on this recovery speed value.
| void chrono::ChLcpIterativeCuda::SetCt_factor | ( | double | mf | ) |
Set the multiplier for the rheonomic contact residuals. Remember to update this value before calling Solve() , because the preprocessing will take care of building contact residuals, which may depend on this value.
| void chrono::ChLcpIterativeCuda::IntegrateTimeStep | ( | double | mdt | ) | [virtual] |
After you performed Solve(), you can call the following function to execute a GPU kernel for doing the first order Eulero integration of body positions as p=p+v*dt The integration kernel reuses the same data structures just used for the Solve(), so it can be much faster then doing the integration on the serial processor.
| virtual void chrono::ChLcpIterativeCuda::Set_do_integration_step | ( | bool | md | ) | [virtual] |
Turn on this functionality if you want that the integration step is performed by a CUDA kernel, right after the solution of the LCP.
CHRONO::ENGINE