Skip to main content

Rocky Solver SDK 2024 R2

rocky_api

Last update: 17.07.2025
1#pragma once
2
3// Includes =======================================================================================
4#include "dll_export.h"
5
6#ifdef ROCKY_CUDA_API
7
8#include <cuda.h>
9#include <cuda_runtime.h>
10
11#define ROCKY_FUNCTIONS __host__ __device__
12
13#else
14
15//#define ROCKY_FUNCTIONS
16
17#endif
18
19#include "rocky_contact_api.hpp"
20#include "rocky_contact_scalars.hpp"
21#include "rocky_fluid_scalars.hpp"
22#include "rocky_joint_api.hpp"
23#include "rocky_model_api.hpp"
24#include "rocky_particle_api.hpp"
25#include "rocky_particle_scalars.hpp"
26#include "rocky_joint_scalars.hpp"
27#include "rocky_pair_scalars.hpp"
28#include "rocky_boundary_scalars.hpp"
29#include "rocky_triangle_scalars.hpp"
30#include "rocky_plugin_data.h"
31#include "rocky_output_collections_api.hpp"
32#include "rocky_timestep_api.h"
33#include "rocky_contact_data_recorder_api.h"
34#include "rocky_statistics_data.hpp"
35
36// Forward declarations ===========================================================================
37class cuda_host;
38typedef cuda_host RockyModel;
39struct RockyParticle;
40struct RockyContact;
41
42struct SDeviceModel;
43
44struct cuda_material;
45struct MaterialInteraction;
46
47// ================================================================================================
48// IRockyModel
49// ================================================================================================
50
51
60{
61
62 // Physics--------------------------------------------------------------
63
70 double get_softening_factor() const;
71
75 double get_timestep() const;
76
86 void trigger_update_timestep() const;
87
91 bool is_thermal_simulation() const;
92
97 bool has_adhesion() const;
98
112 void set_adhesive_distance(int home_index, int near_index, double adhesive_distance);
113
130 void set_minimum_restitution_coefficient(int home_index, int near_index, double minimum_restitution);
131
132
133 // Auxiliary objects --------------------------------------------------------------
134
141
148
149
150 // Entities ------------------------------------------------------------
151
157
161 int get_number_of_particles() const;
162
166 int get_number_of_geometries() const;
167
171 int get_number_of_materials() const;
172
178
183 std::string get_geometry_name(int geometry_index) const;
184
189 std::string get_particle_group_name(int particle_group_index) const;
190
202 EBoundaryType get_geometry_type(int geometry_index) const;
203
204 // Scalars ------------------------------------------------------------
205
214
215
225
226
235
236
245
254
262
270
280
290
291 // Transient --------------------------------------------------------------
292
296 double get_current_time() const;
297
301 double get_output_interval() const;
302
309
317
318 // OMP --------------------------------------------------------------
319
324 int get_number_of_processes() const;
325
326 // CUDA --------------------------------------------------------------
327
332 int get_number_of_devices() const;
333
338 int get_device_id(int device_index) const;
339
340 // Point Cloud --------------------------------------------------------------
341
350 int find_point_cloud(const std::string &name);
351
364 int find_point_cloud_property(int point_cloud_index, const std::string &property_name);
365
380 void set_point_cloud_property_dimension(int point_cloud_index, int property_index, double dimension);
381
382 // Curves and datasets -------------------------------------------------------------------------
383
389
390 // Nondimensionalization -----------------------------------------------------------------------
391
395 double get_length_factor() const;
396
400 double get_mass_factor() const;
401
405 double get_time_factor() const;
406
410 double get_temperature_factor() const;
411
415 double get_force_factor() const;
416
420 double get_pressure_factor() const;
421
425 double get_energy_factor() const;
426
427
429 [[deprecated("Use IRockyCFDModel::get_coupling_mode() instead.")]]
430 ECFDCouplingMode get_coupling_mode() const;
431
432 [[deprecated("Use IRockyCFDModel::get_fluid_scalars() instead.")]]
433 IRockyFluidScalarsModel get_fluid_scalars() const;
434
435 SDeviceModel *get_device_data(int device_index);
436 RockyModel *_impl;
437 ~IRockyModel();
438 bool update_device_data = false;
440};
441
442#include "rocky_api_functions.h"
443#include "rocky_timestep_api.h"
444#include "device/api_backend.hpp"
445
446// Implementation ==================================================================================
447#include <rocky20/api/device/api_omp_contacts.hpp>
448
449#ifdef ROCKY_CUDA_API
450
451#include <rocky20/api/device/api_cuda_particles.hpp>
452#include <rocky20/api/device/api_cuda_triangles.hpp>
453#include <rocky20/api/device/api_cuda_contacts.hpp>
454#include <rocky20/api/device/api_cuda_joints.hpp>
455
456#else
457
458#include <rocky20/api/device/api_device_contacts.hpp>
459
460#endif
Definition rocky_timestep_api.h:31
Definition rocky_contact_data_recorder_api.h:18
Definition rocky_contact_scalars.hpp:20
Definition rocky_output_collections_api.hpp:30
Definition rocky_fluid_scalars.hpp:17
Definition rocky_boundary_scalars.hpp:17
Definition rocky_joint_scalars.hpp:19
Definition rocky_api.h:60
bool has_adhesion() const
Definition rocky_api.cpp:245
std::string get_particle_group_name(int particle_group_index) const
Definition rocky_api.cpp:57
IRockyParticleBreakageScalarsModel get_particle_breakage_scalars() const
Definition rocky_api.cpp:79
int get_number_of_particle_groups() const
Definition rocky_api.cpp:27
int get_number_of_particles() const
Definition rocky_api.cpp:32
int get_number_of_devices() const
Definition rocky_api.cpp:159
IRockyPairScalarsModel get_pair_scalars() const
Definition rocky_api.cpp:97
int get_number_of_active_particles() const
Definition rocky_api.cpp:139
double get_softening_factor() const
Definition rocky_api.cpp:12
IRockyGeometryScalarsModel get_geometry_scalars() const
Definition rocky_api.cpp:103
IRockyParticleScalarsModel get_particle_scalars() const
Definition rocky_api.cpp:69
int get_number_of_active_triangles()
Definition rocky_api.cpp:144
IRockyContactDataRecorder get_contact_data_recorder() const
Definition rocky_api.cpp:310
int get_number_of_geometries() const
Definition rocky_api.cpp:37
IRockyContactScalarsModel get_particle_contact_scalars() const
Definition rocky_api.cpp:116
int get_number_of_materials() const
Definition rocky_api.cpp:47
int get_number_of_material_interactions() const
Definition rocky_api.cpp:42
IRockyContactScalarsModel get_triangle_contact_scalars() const
Definition rocky_api.cpp:121
int get_number_of_processes() const
Definition rocky_api.cpp:151
IRockyCurveCollectionData get_curve_collections() const
Definition rocky_api.cpp:197
double get_timestep() const
Definition rocky_api.cpp:17
std::string get_geometry_name(int geometry_index) const
Definition rocky_api.cpp:52
double get_force_factor() const
Definition rocky_api.cpp:225
IRockyTriangleScalarsModel get_triangle_scalars() const
Definition rocky_api.cpp:109
void set_minimum_restitution_coefficient(int home_index, int near_index, double minimum_restitution)
Definition rocky_api.cpp:287
void set_point_cloud_property_dimension(int point_cloud_index, int property_index, double dimension)
Definition rocky_api.cpp:188
double get_current_time() const
Definition rocky_api.cpp:129
IRockyParticleTransferScalarsModel get_particle_transfer_scalars() const
Definition rocky_api.cpp:74
double get_energy_factor() const
Definition rocky_api.cpp:235
int find_point_cloud_property(int point_cloud_index, const std::string &property_name)
Definition rocky_api.cpp:182
double get_time_factor() const
Definition rocky_api.cpp:215
double get_pressure_factor() const
Definition rocky_api.cpp:230
bool is_thermal_simulation() const
Definition rocky_api.cpp:240
IRockyJointScalarsModel get_joint_scalars() const
Definition rocky_api.cpp:91
IRockyInteractionCalculationsData get_interactions_data() const
Definition rocky_api.cpp:305
void set_adhesive_distance(int home_index, int near_index, double adhesive_distance)
Definition rocky_api.cpp:250
double get_length_factor() const
Definition rocky_api.cpp:205
void trigger_update_timestep() const
Definition rocky_api.cpp:22
int find_point_cloud(const std::string &name)
Definition rocky_api.cpp:176
double get_mass_factor() const
Definition rocky_api.cpp:210
int get_device_id(int device_index) const
Definition rocky_api.cpp:164
double get_output_interval() const
Definition rocky_api.cpp:134
EBoundaryType get_geometry_type(int geometry_index) const
Definition rocky_api.cpp:63
double get_temperature_factor() const
Definition rocky_api.cpp:220
Definition rocky_pair_scalars.hpp:20
Definition rocky_particle_scalars.hpp:498
Definition rocky_particle_scalars.hpp:26
Definition rocky_particle_scalars.hpp:371
Definition rocky_triangle_scalars.hpp:25

Connect with Ansys