Skip to main content

Rocky Solver SDK 2025 R1

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#define ROCKY_FUNCTIONS __host__ __device__
9
10#else
11
12//#define ROCKY_FUNCTIONS
13
14#endif
15
16#include "rocky_contact_api.hpp"
17#include "rocky_contact_scalars.hpp"
18#include "rocky_fluid_scalars.hpp"
19#include "rocky_joint_api.hpp"
20#include "rocky_model_api.hpp"
21#include "rocky_particle_api.hpp"
22#include "rocky_particle_scalars.hpp"
23#include "rocky_joint_scalars.hpp"
24#include "rocky_pair_scalars.hpp"
25#include "rocky_boundary_scalars.hpp"
26#include "rocky_triangle_scalars.hpp"
27#include "rocky_plugin_data.h"
28#include "rocky_output_collections_api.hpp"
29#include "rocky_timestep_api.h"
30#include "rocky_contact_data_recorder_api.h"
31#include "rocky_statistics_data.hpp"
32
33// Forward declarations ===========================================================================
34class cuda_host;
35typedef cuda_host RockyModel;
36struct RockyParticle;
37struct RockyContact;
38
39struct SDeviceModel;
40
41struct cuda_material;
42struct MaterialInteraction;
43
44// ================================================================================================
45// IRockyModel
46// ================================================================================================
47
48
57{
58
59 // Physics--------------------------------------------------------------
60
67 double get_softening_factor() const;
68
72 double get_timestep() const;
73
83 void trigger_update_timestep() const;
84
88 bool is_thermal_simulation() const;
89
94 bool has_adhesion() const;
95
109 void set_adhesive_distance(int home_index, int near_index, double adhesive_distance);
110
127 void set_minimum_restitution_coefficient(int home_index, int near_index, double minimum_restitution);
128
129
130 // Auxiliary objects --------------------------------------------------------------
131
138
145
146
147 // Entities ------------------------------------------------------------
148
154
158 int get_number_of_particles() const;
159
163 int get_number_of_geometries() const;
164
168 int get_number_of_materials() const;
169
175
180 std::string get_geometry_name(int geometry_index) const;
181
186 std::string get_particle_group_name(int particle_group_index) const;
187
199 EBoundaryType get_geometry_type(int geometry_index) const;
200
201 // Scalars ------------------------------------------------------------
202
211
212
222
223
232
233
242
251
259
267
277
287
288 // Transient --------------------------------------------------------------
289
293 double get_current_time() const;
294
298 double get_output_interval() const;
299
306
314
315 // OMP --------------------------------------------------------------
316
321 int get_number_of_processes() const;
322
323 // CUDA --------------------------------------------------------------
324
329 int get_number_of_devices() const;
330
335 int get_device_id(int device_index) const;
336
337 // Point Cloud --------------------------------------------------------------
338
347 int find_point_cloud(const std::string &name);
348
361 int find_point_cloud_property(int point_cloud_index, const std::string &property_name);
362
377 void set_point_cloud_property_dimension(int point_cloud_index, int property_index, double dimension);
378
379 // Curves and datasets -------------------------------------------------------------------------
380
386
387 // Nondimensionalization -----------------------------------------------------------------------
388
392 double get_length_factor() const;
393
397 double get_mass_factor() const;
398
402 double get_time_factor() const;
403
407 double get_temperature_factor() const;
408
412 double get_force_factor() const;
413
417 double get_pressure_factor() const;
418
422 double get_energy_factor() const;
423
424
426 [[deprecated("Use IRockyCFDModel::get_coupling_mode() instead.")]]
427 ECFDCouplingMode get_coupling_mode() const;
428
429 [[deprecated("Use IRockyCFDModel::get_fluid_scalars() instead.")]]
430 IRockyFluidScalarsModel get_fluid_scalars() const;
431
432 SDeviceModel *get_device_data(int device_index);
433 RockyModel *_impl;
434 rocky20::addins::RockyAddinsController* addins;
435 ~IRockyModel();
436 bool update_device_data = false;
438};
439
440#include "rocky_api_functions.h"
441#include "rocky_timestep_api.h"
442#include "device/api_backend.hpp"
443
444// Implementation ==================================================================================
445#include <rocky20/api/device/api_omp_contacts.hpp>
446
447#ifdef ROCKY_CUDA_API
448
449#include <rocky20/api/device/api_cuda_particles.hpp>
450#include <rocky20/api/device/api_cuda_triangles.hpp>
451#include <rocky20/api/device/api_cuda_contacts.hpp>
452#include <rocky20/api/device/api_cuda_joints.hpp>
453
454#else
455
456#include <rocky20/api/device/api_device_contacts.hpp>
457
458#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:57
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