Skip to main content

Rocky Solver SDK 2025 R2

rocky_api

Last update: 16.07.2025
1// (C) 2024 ANSYS, Inc. Unauthorized use, distribution, or duplication is prohibited.
2#pragma once
3
4// Includes =======================================================================================
5#include "dll_export.h"
6
7#ifdef ROCKY_CUDA_API
8
9#define ROCKY_FUNCTIONS __host__ __device__
10
11#else
12
13//#define ROCKY_FUNCTIONS
14
15#endif
16
17#include "rocky_contact_api.hpp"
18#include "rocky_contact_scalars.hpp"
19#include "rocky_fluid_scalars.hpp"
20#include "rocky_joint_api.hpp"
21#include "rocky_model_api.hpp"
22#include "rocky_particle_api.hpp"
23#include "rocky_particle_scalars.hpp"
24#include "rocky_joint_scalars.hpp"
25#include "rocky_pair_scalars.hpp"
26#include "rocky_boundary_scalars.hpp"
27#include "rocky_triangle_scalars.hpp"
28#include "rocky_plugin_data.h"
29#include "rocky_output_collections_api.hpp"
30#include "rocky_timestep_api.h"
31#include "rocky_contact_data_recorder_api.h"
32#include "rocky_statistics_data.hpp"
33
34// Forward declarations ===========================================================================
35class cuda_host;
36typedef cuda_host RockyModel;
37struct RockyParticle;
38struct RockyContact;
39
40struct SDeviceModel;
41
42struct cuda_material;
43struct MaterialInteraction;
44
45// ================================================================================================
46// IRockyModel
47// ================================================================================================
48
49
58{
59
60 // Physics--------------------------------------------------------------
61
69 double3 get_gravity() const;
70
78 void set_gravity(const double3& gravity);
79
86 double get_softening_factor() const;
87
91 double get_timestep() const;
92
102 void trigger_update_timestep() const;
103
107 bool is_thermal_simulation() const;
108
113 bool has_adhesion() const;
114
128 void set_adhesive_distance(int home_index, int near_index, double adhesive_distance);
129
146 void set_minimum_restitution_coefficient(int home_index, int near_index, double minimum_restitution);
147
148
149 // Auxiliary objects --------------------------------------------------------------
150
157
164
165
166 // Entities ------------------------------------------------------------
167
173
177 int get_number_of_particles() const;
178
182 int get_number_of_geometries() const;
183
187 int get_number_of_materials() const;
188
194
199 std::string get_geometry_name(int geometry_index) const;
200
205 std::string get_particle_group_name(int particle_group_index) const;
206
218 EBoundaryType get_geometry_type(int geometry_index) const;
219
220 // Scalars ------------------------------------------------------------
221
230
231
241
242
251
252
261
270
278
286
296
306
307 // Transient --------------------------------------------------------------
308
312 double get_current_time() const;
313
317 double get_output_interval() const;
318
325
333
334 // OMP --------------------------------------------------------------
335
340 int get_number_of_processes() const;
341
342 // CUDA --------------------------------------------------------------
343
348 int get_number_of_devices() const;
349
354 int get_device_id(int device_index) const;
355
356 // Point Cloud --------------------------------------------------------------
357
366 int find_point_cloud(const std::string &name);
367
380 int find_point_cloud_property(int point_cloud_index, const std::string &property_name);
381
396 void set_point_cloud_property_dimension(int point_cloud_index, int property_index, double dimension);
397
398 // Curves and datasets -------------------------------------------------------------------------
399
405
406 // Nondimensionalization -----------------------------------------------------------------------
407
411 double get_length_factor() const;
412
416 double get_mass_factor() const;
417
421 double get_time_factor() const;
422
426 double get_viscosity_factor() const;
427
431 double get_temperature_factor() const;
432
436 double get_force_factor() const;
437
441 double get_pressure_factor() const;
442
446 double get_energy_factor() const;
447
451 double get_power_factor() const;
452
453
455 [[deprecated("Use IRockyCFDModel::get_coupling_mode() instead.")]]
456 ECFDCouplingMode get_coupling_mode() const;
457
458 [[deprecated("Use IRockyCFDModel::get_fluid_scalars() instead.")]]
459 IRockyFluidScalarsModel get_fluid_scalars() const;
460
461 SDeviceModel *get_device_data(int device_index);
462 RockyModel *_impl;
463 rocky20::addins::RockyAddinsController* addins;
464 ~IRockyModel();
465 bool update_device_data = false;
467};
468
469#include "rocky_api_functions.h"
470#include "rocky_timestep_api.h"
471#include "device/api_backend.hpp"
472
473// Implementation ==================================================================================
474#include <rocky20/api/device/api_omp_contacts.hpp>
475
476#ifdef ROCKY_CUDA_API
477
478#include <rocky20/api/device/api_cuda_particles.hpp>
479#include <rocky20/api/device/api_cuda_triangles.hpp>
480#include <rocky20/api/device/api_cuda_contacts.hpp>
481#include <rocky20/api/device/api_cuda_joints.hpp>
482
483#else
484
485#include <rocky20/api/device/api_device_contacts.hpp>
486
487#endif
Definition rocky_timestep_api.h:32
Definition rocky_contact_data_recorder_api.h:19
Definition rocky_contact_scalars.hpp:21
Definition rocky_output_collections_api.hpp:31
Definition rocky_fluid_scalars.hpp:18
Definition rocky_boundary_scalars.hpp:18
Definition rocky_joint_scalars.hpp:20
Definition rocky_api.h:58
bool has_adhesion() const
Definition rocky_api.cpp:269
std::string get_particle_group_name(int particle_group_index) const
Definition rocky_api.cpp:71
IRockyParticleBreakageScalarsModel get_particle_breakage_scalars() const
Definition rocky_api.cpp:93
int get_number_of_particle_groups() const
Definition rocky_api.cpp:41
int get_number_of_particles() const
Definition rocky_api.cpp:46
int get_number_of_devices() const
Definition rocky_api.cpp:173
IRockyPairScalarsModel get_pair_scalars() const
Definition rocky_api.cpp:111
double get_power_factor() const
Definition rocky_api.cpp:258
int get_number_of_active_particles() const
Definition rocky_api.cpp:153
double get_softening_factor() const
Definition rocky_api.cpp:18
IRockyGeometryScalarsModel get_geometry_scalars() const
Definition rocky_api.cpp:117
IRockyParticleScalarsModel get_particle_scalars() const
Definition rocky_api.cpp:83
void set_gravity(const double3 &gravity)
Definition rocky_api.cpp:28
int get_number_of_active_triangles()
Definition rocky_api.cpp:158
IRockyContactDataRecorder get_contact_data_recorder() const
Definition rocky_api.cpp:334
int get_number_of_geometries() const
Definition rocky_api.cpp:51
IRockyContactScalarsModel get_particle_contact_scalars() const
Definition rocky_api.cpp:130
int get_number_of_materials() const
Definition rocky_api.cpp:61
int get_number_of_material_interactions() const
Definition rocky_api.cpp:56
IRockyContactScalarsModel get_triangle_contact_scalars() const
Definition rocky_api.cpp:135
double3 get_gravity() const
Definition rocky_api.cpp:23
int get_number_of_processes() const
Definition rocky_api.cpp:165
IRockyCurveCollectionData get_curve_collections() const
Definition rocky_api.cpp:211
double get_timestep() const
Definition rocky_api.cpp:13
std::string get_geometry_name(int geometry_index) const
Definition rocky_api.cpp:66
double get_force_factor() const
Definition rocky_api.cpp:244
IRockyTriangleScalarsModel get_triangle_scalars() const
Definition rocky_api.cpp:123
void set_minimum_restitution_coefficient(int home_index, int near_index, double minimum_restitution)
Definition rocky_api.cpp:311
void set_point_cloud_property_dimension(int point_cloud_index, int property_index, double dimension)
Definition rocky_api.cpp:202
double get_current_time() const
Definition rocky_api.cpp:143
IRockyParticleTransferScalarsModel get_particle_transfer_scalars() const
Definition rocky_api.cpp:88
double get_energy_factor() const
Definition rocky_api.cpp:254
double get_viscosity_factor() const
Definition rocky_api.cpp:234
int find_point_cloud_property(int point_cloud_index, const std::string &property_name)
Definition rocky_api.cpp:196
double get_time_factor() const
Definition rocky_api.cpp:229
double get_pressure_factor() const
Definition rocky_api.cpp:249
bool is_thermal_simulation() const
Definition rocky_api.cpp:264
IRockyJointScalarsModel get_joint_scalars() const
Definition rocky_api.cpp:105
IRockyInteractionCalculationsData get_interactions_data() const
Definition rocky_api.cpp:329
void set_adhesive_distance(int home_index, int near_index, double adhesive_distance)
Definition rocky_api.cpp:274
double get_length_factor() const
Definition rocky_api.cpp:219
void trigger_update_timestep() const
Definition rocky_api.cpp:36
int find_point_cloud(const std::string &name)
Definition rocky_api.cpp:190
double get_mass_factor() const
Definition rocky_api.cpp:224
int get_device_id(int device_index) const
Definition rocky_api.cpp:178
double get_output_interval() const
Definition rocky_api.cpp:148
EBoundaryType get_geometry_type(int geometry_index) const
Definition rocky_api.cpp:77
double get_temperature_factor() const
Definition rocky_api.cpp:239
Definition rocky_pair_scalars.hpp:21
Definition rocky_particle_scalars.hpp:499
Definition rocky_particle_scalars.hpp:27
Definition rocky_particle_scalars.hpp:372
Definition rocky_triangle_scalars.hpp:26

Connect with Ansys