Skip to main content

Rocky Solver SDK 2025 R2

rocky_particle_scalars

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 "rocky_scalars.h"
6
7using rocky20::KnownParticleScalars;
8using rocky20::KnownParticleTransferScalars;
9using rocky20::KnownParticleBreakageScalars;
10
11// Forward declarations ===========================================================================
12class cuda_host;
13typedef cuda_host RockyModel;
14
15// =================================================================================================
16// IRockyParticleScalarsModel
17// =================================================================================================
18
26struct IRockyParticleScalarsModel : ScalarsModel<rocky20::ParticleScalarsController>
27{
28 // enable methods ---------------------------------------------------------------------------------
29
36
43
51
59
67
68#ifdef ONLY_FOR_DOXYGEN
69
71 int find(const char* name);
72
74 int add(const char* name, const char* unit, bool output = true);
75
77 void reset(int scalar_index);
78
80 void set_dimension(int scalar_index, double dimension_factor);
81
82#endif
83
86 void enable_minimum_t10();
87
88 void enable_round_quaternion();
89
90 IRockyParticleScalarsModel(RockyModel* solver_model);
91
93};
94
95// =================================================================================================
96// IRockyParticleScalars
97// =================================================================================================
98
104struct IRockyParticleScalars : EntityScalars<rocky20::ParticleScalars>
105{
106 // get -----------------------------------------------------------------------------------------
107
113 ROCKY_FUNCTIONS inline double get_temperature() const
114 {
115 return this->get_known_scalar(KnownParticleScalars::Temperature);
116 }
117
123 ROCKY_FUNCTIONS inline double get_mass_increment() const
124 {
125 return this->get_known_scalar(KnownParticleScalars::MassIncrement);
126 }
127
133 ROCKY_FUNCTIONS inline double get_volume_increment() const
134 {
135 return this->get_known_scalar(KnownParticleScalars::VolumeIncrement);
136 }
137
138 // set -----------------------------------------------------------------------------------------
139
145 ROCKY_FUNCTIONS inline void set_temperature(const double value)
146 {
147 this->get_known_scalar(KnownParticleScalars::Temperature) = value;
148 }
149
156 ROCKY_FUNCTIONS inline void set_mass_increment(const double value)
157 {
158 this->get_known_scalar(KnownParticleScalars::MassIncrement) = value;
159 }
160
167 ROCKY_FUNCTIONS inline void set_volume_increment(const double value)
168 {
169 this->get_known_scalar(KnownParticleScalars::VolumeIncrement) = value;
170 }
171
172 // add -----------------------------------------------------------------------------------------
173
179 ROCKY_FUNCTIONS inline void add_temperature(const double value)
180 {
181 this->add_known_scalar(KnownParticleScalars::Temperature, value);
182 }
183
192 ROCKY_FUNCTIONS inline void add_explicit_fluid_momentum(const double3 value)
193 {
194 this->add_known_scalar<double3>(KnownParticleScalars::FluidExplicitForce, value);
195 }
196
205 ROCKY_FUNCTIONS inline void add_implicit_fluid_momentum(const double value)
206 {
207 this->add_known_scalar<double>(KnownParticleScalars::FluidImplicitForce, value);
208 }
209
218 ROCKY_FUNCTIONS inline void add_explicit_fluid_heat_transfer_rate(const double value)
219 {
220 this->add_known_scalar<double>(KnownParticleScalars::FluidExplicitHeatTransferRate, value);
221 }
222
231 ROCKY_FUNCTIONS inline void add_implicit_fluid_heat_transfer_rate(const double value)
232 {
233 this->add_known_scalar<double>(KnownParticleScalars::FluidImplicitHeatTransferRate, value);
234 }
235
241 ROCKY_FUNCTIONS inline void add_mass_increment(const double value)
242 {
243 this->add_known_scalar(KnownParticleScalars::MassIncrement, value);
244 }
245
251 ROCKY_FUNCTIONS inline void add_volume_increment(const double value)
252 {
253 this->add_known_scalar(KnownParticleScalars::VolumeIncrement, value);
254 }
255
262 ROCKY_FUNCTIONS inline double get_thermal_conductivity() const
263 {
264 return this->get_known_scalar(KnownParticleScalars::ThermalConductivity);
265 }
266
274 ROCKY_FUNCTIONS inline void set_thermal_conductivity(const double value)
275 {
276 this->get_known_scalar(KnownParticleScalars::ThermalConductivity) = value;
277 }
278
285 ROCKY_FUNCTIONS inline double get_specific_heat() const
286 {
287 return this->get_known_scalar(KnownParticleScalars::SpecificHeat);
288 }
289
297 ROCKY_FUNCTIONS inline void set_specific_heat(const double value)
298 {
299 this->get_known_scalar(KnownParticleScalars::SpecificHeat) = value;
300 }
301
308 ROCKY_FUNCTIONS inline double get_poisson_ratio() const
309 {
310 return this->get_known_scalar(KnownParticleScalars::PoissonRatio);
311 }
312
320 ROCKY_FUNCTIONS inline void set_poisson_ratio(const double value)
321 {
322 this->get_known_scalar(KnownParticleScalars::PoissonRatio) = value;
323 }
324
325#ifdef ONLY_FOR_DOXYGEN
326
328 ROCKY_FUNCTIONS double get_scalar(int scalar_index) const;
329
331 ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const;
332
334 ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const;
335
337 ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const;
338
339#endif
340
343 ROCKY_FUNCTIONS inline void set_minimum_t10(const double value)
344 {
345 this->get_known_scalar(KnownParticleScalars::MinimumT10) = value;
346 }
347
348 ROCKY_FUNCTIONS inline double get_minimum_t10() const
349 {
350 return this->get_known_scalar(KnownParticleScalars::MinimumT10);
351 }
352
353 ROCKY_FUNCTIONS IRockyParticleScalars(rocky20::ParticleScalars &_scalars, int _particle_index)
354 : EntityScalars<rocky20::ParticleScalars>(_scalars, _particle_index)
355 {}
356
358};
359
360// =================================================================================================
361// IRockyParticleTransferScalarsModel
362// =================================================================================================
363
371struct IRockyParticleTransferScalarsModel : ScalarsModel<rocky20::ParticleTransferScalarsController>
372{
375 IRockyParticleTransferScalarsModel(RockyModel* solver_model);
376
379#ifdef ONLY_FOR_DOXYGEN
380
382 int find(const char* name);
383
385 int add(const char* name, const char* unit, bool output = true);
386
388 void reset(int scalar_index);
389
391 void set_dimension(int scalar_index, double dimension_factor);
392
393#endif
394
395};
396
397// =================================================================================================
398// IRockyParticleTransferScalars
399// =================================================================================================
400
406struct IRockyParticleTransferScalars : EntityScalars<rocky20::ParticleTransferScalars>
407{
413 ROCKY_FUNCTIONS inline double get_heat_transfer() const
414 {
415 return this->_impl.get_heat_transfer(this->element_index);
416 }
417
425 ROCKY_FUNCTIONS inline void set_heat_transfer(const double value)
426 {
427 this->_impl.get_heat_transfer(this->element_index) = value;
428 }
429
435 ROCKY_FUNCTIONS inline void add_heat_transfer(const double value)
436 {
437 backend::atomic_add(&this->_impl.get_heat_transfer(this->element_index), value);
438 }
439
448 ROCKY_FUNCTIONS inline void add_heat_source(const double value)
449 {
450 this->add_heat_transfer(value);
451 }
452
453#ifdef ONLY_FOR_DOXYGEN
454
456 ROCKY_FUNCTIONS double get_scalar(int scalar_index) const;
457
459 ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const;
460
462 ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const;
463
465 ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const;
466
467#endif
468
471 ROCKY_FUNCTIONS IRockyParticleTransferScalars(rocky20::ParticleTransferScalars& _scalars, int _particle_index)
472 : EntityScalars<rocky20::ParticleTransferScalars>(_scalars, _particle_index)
473 {}
474
476};
477
478
479// =================================================================================================
480// IRockyParticleBreakageScalarsModel
481// =================================================================================================
482
483
498struct IRockyParticleBreakageScalarsModel : ScalarsModel<rocky20::ParticleBreakageScalarsController>
499{
505 void enable_t10();
506
507#ifdef ONLY_FOR_DOXYGEN
508
510 int find(const char* name);
511
513 int add(const char* name, const char* unit, bool output = true);
514
516 void reset(int scalar_index);
517
519 void set_dimension(int scalar_index, double dimension_factor);
520
521#endif
522
525 IRockyParticleBreakageScalarsModel(RockyModel* solver_model);
526
528};
529
530// =================================================================================================
531// IRockyParticleBreakageScalars
532// =================================================================================================
533
543struct IRockyParticleBreakageScalars : EntityScalars<rocky20::ParticleBreakageScalars>
544{
550 ROCKY_FUNCTIONS inline double get_t10() const
551 {
552 return this->get_known_scalar(KnownParticleBreakageScalars::T10Parameter);
553 }
554
562 ROCKY_FUNCTIONS inline void set_t10(const double value)
563 {
564 this->get_known_scalar(KnownParticleBreakageScalars::T10Parameter) = value;
565 }
566
567#ifdef ONLY_FOR_DOXYGEN
568
570 ROCKY_FUNCTIONS double get_scalar(int scalar_index) const;
571
573 ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const;
574
576 ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const;
577
579 ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const;
580
581#endif
582
585 ROCKY_FUNCTIONS IRockyParticleBreakageScalars(
586 rocky20::ParticleBreakageScalars& _scalars, int _particle_index
587 ) :
588 EntityScalars<rocky20::ParticleBreakageScalars>(_scalars, _particle_index)
589 {}
590
592};
Definition rocky_particle_scalars.hpp:499
void enable_t10()
Definition rocky_particle_scalars.cpp:61
int add(const char *name, const char *unit, bool output=true)
void set_dimension(int scalar_index, double dimension_factor)
void reset(int scalar_index)
Definition rocky_particle_scalars.hpp:544
ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS double get_scalar(int scalar_index) const
ROCKY_FUNCTIONS double get_t10() const
Definition rocky_particle_scalars.hpp:550
ROCKY_FUNCTIONS void set_t10(const double value)
Definition rocky_particle_scalars.hpp:562
Definition rocky_particle_scalars.hpp:27
int find(const char *name)
void set_dimension(int scalar_index, double dimension_factor)
void reset(int scalar_index)
int add(const char *name, const char *unit, bool output=true)
void enable_variable_specific_heat()
Definition rocky_particle_scalars.cpp:31
void enable_mass_increment()
Definition rocky_particle_scalars.cpp:11
void enable_variable_thermal_conductivity()
Definition rocky_particle_scalars.cpp:21
void enable_volume_increment()
Definition rocky_particle_scalars.cpp:16
void enable_variable_poisson_ratio()
Definition rocky_particle_scalars.cpp:26
Definition rocky_particle_scalars.hpp:105
ROCKY_FUNCTIONS double get_volume_increment() const
Definition rocky_particle_scalars.hpp:133
ROCKY_FUNCTIONS void set_specific_heat(const double value)
Definition rocky_particle_scalars.hpp:297
ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS void set_volume_increment(const double value)
Definition rocky_particle_scalars.hpp:167
ROCKY_FUNCTIONS double get_mass_increment() const
Definition rocky_particle_scalars.hpp:123
ROCKY_FUNCTIONS double get_scalar(int scalar_index) const
ROCKY_FUNCTIONS double get_specific_heat() const
Definition rocky_particle_scalars.hpp:285
ROCKY_FUNCTIONS void set_thermal_conductivity(const double value)
Definition rocky_particle_scalars.hpp:274
ROCKY_FUNCTIONS double get_thermal_conductivity() const
Definition rocky_particle_scalars.hpp:262
ROCKY_FUNCTIONS double get_temperature() const
Definition rocky_particle_scalars.hpp:113
ROCKY_FUNCTIONS void add_implicit_fluid_momentum(const double value)
Definition rocky_particle_scalars.hpp:205
ROCKY_FUNCTIONS void set_temperature(const double value)
Definition rocky_particle_scalars.hpp:145
ROCKY_FUNCTIONS void set_poisson_ratio(const double value)
Definition rocky_particle_scalars.hpp:320
ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS void add_volume_increment(const double value)
Definition rocky_particle_scalars.hpp:251
ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS void add_explicit_fluid_heat_transfer_rate(const double value)
Definition rocky_particle_scalars.hpp:218
ROCKY_FUNCTIONS double get_poisson_ratio() const
Definition rocky_particle_scalars.hpp:308
ROCKY_FUNCTIONS void add_temperature(const double value)
Definition rocky_particle_scalars.hpp:179
ROCKY_FUNCTIONS void add_explicit_fluid_momentum(const double3 value)
Definition rocky_particle_scalars.hpp:192
ROCKY_FUNCTIONS void set_mass_increment(const double value)
Definition rocky_particle_scalars.hpp:156
ROCKY_FUNCTIONS void add_mass_increment(const double value)
Definition rocky_particle_scalars.hpp:241
ROCKY_FUNCTIONS void add_implicit_fluid_heat_transfer_rate(const double value)
Definition rocky_particle_scalars.hpp:231
Definition rocky_particle_scalars.hpp:372
void reset(int scalar_index)
void set_dimension(int scalar_index, double dimension_factor)
int add(const char *name, const char *unit, bool output=true)
Definition rocky_particle_scalars.hpp:407
ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS void set_heat_transfer(const double value)
Definition rocky_particle_scalars.hpp:425
ROCKY_FUNCTIONS void add_heat_transfer(const double value)
Definition rocky_particle_scalars.hpp:435
ROCKY_FUNCTIONS void add_heat_source(const double value)
Definition rocky_particle_scalars.hpp:448
ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const
ROCKY_FUNCTIONS double get_scalar(int scalar_index) const
ROCKY_FUNCTIONS double get_heat_transfer() const
Definition rocky_particle_scalars.hpp:413

Connect with Ansys