Skip to main content

Rocky Solver SDK 2024 R2

rocky_particle_scalars

Last update: 08.07.2024
1#pragma once
2
3// Includes ========================================================================================
4#include "rocky_scalars.h"
5
6using rocky20::KnownParticleScalars;
7using rocky20::KnownParticleTransferScalars;
8using rocky20::KnownParticleBreakageScalars;
9
10// Forward declarations ===========================================================================
11class cuda_host;
12typedef cuda_host RockyModel;
13
14// =================================================================================================
15// IRockyParticleScalarsModel
16// =================================================================================================
17
25struct IRockyParticleScalarsModel : ScalarsModel<rocky20::ParticleScalarsController>
26{
27 // enable methods ---------------------------------------------------------------------------------
28
35
42
50
58
66
67#ifdef ONLY_FOR_DOXYGEN
68
70 int find(const char* name);
71
73 int add(const char* name, const char* unit, bool output = true);
74
76 void reset(int scalar_index);
77
79 void set_dimension(int scalar_index, double dimension_factor);
80
81#endif
82
85 void enable_minimum_t10();
86
87 void enable_round_quaternion();
88
89 IRockyParticleScalarsModel(RockyModel* solver_model);
90
92};
93
94// =================================================================================================
95// IRockyParticleScalars
96// =================================================================================================
97
103struct IRockyParticleScalars : EntityScalars<rocky20::ParticleScalars>
104{
105 // get -----------------------------------------------------------------------------------------
106
112 ROCKY_FUNCTIONS inline double get_temperature() const
113 {
114 return this->get_known_scalar(KnownParticleScalars::Temperature);
115 }
116
122 ROCKY_FUNCTIONS inline double get_mass_increment() const
123 {
124 return this->get_known_scalar(KnownParticleScalars::MassIncrement);
125 }
126
132 ROCKY_FUNCTIONS inline double get_volume_increment() const
133 {
134 return this->get_known_scalar(KnownParticleScalars::VolumeIncrement);
135 }
136
137 // set -----------------------------------------------------------------------------------------
138
144 ROCKY_FUNCTIONS inline void set_temperature(const double value)
145 {
146 this->get_known_scalar(KnownParticleScalars::Temperature) = value;
147 }
148
155 ROCKY_FUNCTIONS inline void set_mass_increment(const double value)
156 {
157 this->get_known_scalar(KnownParticleScalars::MassIncrement) = value;
158 }
159
166 ROCKY_FUNCTIONS inline void set_volume_increment(const double value)
167 {
168 this->get_known_scalar(KnownParticleScalars::VolumeIncrement) = value;
169 }
170
171 // add -----------------------------------------------------------------------------------------
172
178 ROCKY_FUNCTIONS inline void add_temperature(const double value)
179 {
180 this->add_known_scalar(KnownParticleScalars::Temperature, value);
181 }
182
191 ROCKY_FUNCTIONS inline void add_explicit_fluid_momentum(const double3 value)
192 {
193 this->add_known_scalar<double3>(KnownParticleScalars::FluidExplicitForce, value);
194 }
195
204 ROCKY_FUNCTIONS inline void add_implicit_fluid_momentum(const double value)
205 {
206 this->add_known_scalar<double>(KnownParticleScalars::FluidImplicitForce, value);
207 }
208
217 ROCKY_FUNCTIONS inline void add_explicit_fluid_heat_transfer_rate(const double value)
218 {
219 this->add_known_scalar<double>(KnownParticleScalars::FluidExplicitHeatTransferRate, value);
220 }
221
230 ROCKY_FUNCTIONS inline void add_implicit_fluid_heat_transfer_rate(const double value)
231 {
232 this->add_known_scalar<double>(KnownParticleScalars::FluidImplicitHeatTransferRate, value);
233 }
234
240 ROCKY_FUNCTIONS inline void add_mass_increment(const double value)
241 {
242 this->add_known_scalar(KnownParticleScalars::MassIncrement, value);
243 }
244
250 ROCKY_FUNCTIONS inline void add_volume_increment(const double value)
251 {
252 this->add_known_scalar(KnownParticleScalars::VolumeIncrement, value);
253 }
254
261 ROCKY_FUNCTIONS inline double get_thermal_conductivity() const
262 {
263 return this->get_known_scalar(KnownParticleScalars::ThermalConductivity);
264 }
265
273 ROCKY_FUNCTIONS inline void set_thermal_conductivity(const double value)
274 {
275 this->get_known_scalar(KnownParticleScalars::ThermalConductivity) = value;
276 }
277
284 ROCKY_FUNCTIONS inline double get_specific_heat() const
285 {
286 return this->get_known_scalar(KnownParticleScalars::SpecificHeat);
287 }
288
296 ROCKY_FUNCTIONS inline void set_specific_heat(const double value)
297 {
298 this->get_known_scalar(KnownParticleScalars::SpecificHeat) = value;
299 }
300
307 ROCKY_FUNCTIONS inline double get_poisson_ratio() const
308 {
309 return this->get_known_scalar(KnownParticleScalars::PoissonRatio);
310 }
311
319 ROCKY_FUNCTIONS inline void set_poisson_ratio(const double value)
320 {
321 this->get_known_scalar(KnownParticleScalars::PoissonRatio) = value;
322 }
323
324#ifdef ONLY_FOR_DOXYGEN
325
327 ROCKY_FUNCTIONS double get_scalar(int scalar_index) const;
328
330 ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const;
331
333 ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const;
334
336 ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const;
337
338#endif
339
342 ROCKY_FUNCTIONS inline void set_minimum_t10(const double value)
343 {
344 this->get_known_scalar(KnownParticleScalars::MinimumT10) = value;
345 }
346
347 ROCKY_FUNCTIONS inline double get_minimum_t10() const
348 {
349 return this->get_known_scalar(KnownParticleScalars::MinimumT10);
350 }
351
352 ROCKY_FUNCTIONS IRockyParticleScalars(rocky20::ParticleScalars &_scalars, int _particle_index)
353 : EntityScalars<rocky20::ParticleScalars>(_scalars, _particle_index)
354 {}
355
357};
358
359// =================================================================================================
360// IRockyParticleTransferScalarsModel
361// =================================================================================================
362
370struct IRockyParticleTransferScalarsModel : ScalarsModel<rocky20::ParticleTransferScalarsController>
371{
374 IRockyParticleTransferScalarsModel(RockyModel* solver_model);
375
378#ifdef ONLY_FOR_DOXYGEN
379
381 int find(const char* name);
382
384 int add(const char* name, const char* unit, bool output = true);
385
387 void reset(int scalar_index);
388
390 void set_dimension(int scalar_index, double dimension_factor);
391
392#endif
393
394};
395
396// =================================================================================================
397// IRockyParticleTransferScalars
398// =================================================================================================
399
405struct IRockyParticleTransferScalars : EntityScalars<rocky20::ParticleTransferScalars>
406{
412 ROCKY_FUNCTIONS inline double get_heat_transfer() const
413 {
414 return this->_impl.get_heat_transfer(this->element_index);
415 }
416
424 ROCKY_FUNCTIONS inline void set_heat_transfer(const double value)
425 {
426 this->_impl.get_heat_transfer(this->element_index) = value;
427 }
428
434 ROCKY_FUNCTIONS inline void add_heat_transfer(const double value)
435 {
436 backend::atomic_add(&this->_impl.get_heat_transfer(this->element_index), value);
437 }
438
447 ROCKY_FUNCTIONS inline void add_heat_source(const double value)
448 {
449 this->add_heat_transfer(value);
450 }
451
452#ifdef ONLY_FOR_DOXYGEN
453
455 ROCKY_FUNCTIONS double get_scalar(int scalar_index) const;
456
458 ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const;
459
461 ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const;
462
464 ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const;
465
466#endif
467
470 ROCKY_FUNCTIONS IRockyParticleTransferScalars(rocky20::ParticleTransferScalars& _scalars, int _particle_index)
471 : EntityScalars<rocky20::ParticleTransferScalars>(_scalars, _particle_index)
472 {}
473
475};
476
477
478// =================================================================================================
479// IRockyParticleBreakageScalarsModel
480// =================================================================================================
481
482
497struct IRockyParticleBreakageScalarsModel : ScalarsModel<rocky20::ParticleBreakageScalarsController>
498{
504 void enable_t10();
505
506#ifdef ONLY_FOR_DOXYGEN
507
509 int find(const char* name);
510
512 int add(const char* name, const char* unit, bool output = true);
513
515 void reset(int scalar_index);
516
518 void set_dimension(int scalar_index, double dimension_factor);
519
520#endif
521
524 IRockyParticleBreakageScalarsModel(RockyModel* solver_model);
525
527};
528
529// =================================================================================================
530// IRockyParticleBreakageScalars
531// =================================================================================================
532
542struct IRockyParticleBreakageScalars : EntityScalars<rocky20::ParticleBreakageScalars>
543{
549 ROCKY_FUNCTIONS inline double get_t10() const
550 {
551 return this->get_known_scalar(KnownParticleBreakageScalars::T10Parameter);
552 }
553
561 ROCKY_FUNCTIONS inline void set_t10(const double value)
562 {
563 this->get_known_scalar(KnownParticleBreakageScalars::T10Parameter) = value;
564 }
565
566#ifdef ONLY_FOR_DOXYGEN
567
569 ROCKY_FUNCTIONS double get_scalar(int scalar_index) const;
570
572 ROCKY_FUNCTIONS void set_scalar(int scalar_index, double value) const;
573
575 ROCKY_FUNCTIONS void add_scalar(int scalar_index, double value) const;
576
578 ROCKY_FUNCTIONS void max_scalar(int scalar_index, double value) const;
579
580#endif
581
584 ROCKY_FUNCTIONS IRockyParticleBreakageScalars(
585 rocky20::ParticleBreakageScalars& _scalars, int _particle_index
586 ) :
587 EntityScalars<rocky20::ParticleBreakageScalars>(_scalars, _particle_index)
588 {}
589
591};
Definition rocky_particle_scalars.hpp:498
void enable_t10()
Definition rocky_particle_scalars.cpp:60
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:543
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:549
ROCKY_FUNCTIONS void set_t10(const double value)
Definition rocky_particle_scalars.hpp:561
Definition rocky_particle_scalars.hpp:26
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:30
void enable_mass_increment()
Definition rocky_particle_scalars.cpp:10
void enable_variable_thermal_conductivity()
Definition rocky_particle_scalars.cpp:20
void enable_volume_increment()
Definition rocky_particle_scalars.cpp:15
void enable_variable_poisson_ratio()
Definition rocky_particle_scalars.cpp:25
Definition rocky_particle_scalars.hpp:104
ROCKY_FUNCTIONS double get_volume_increment() const
Definition rocky_particle_scalars.hpp:132
ROCKY_FUNCTIONS void set_specific_heat(const double value)
Definition rocky_particle_scalars.hpp:296
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:166
ROCKY_FUNCTIONS double get_mass_increment() const
Definition rocky_particle_scalars.hpp:122
ROCKY_FUNCTIONS double get_scalar(int scalar_index) const
ROCKY_FUNCTIONS double get_specific_heat() const
Definition rocky_particle_scalars.hpp:284
ROCKY_FUNCTIONS void set_thermal_conductivity(const double value)
Definition rocky_particle_scalars.hpp:273
ROCKY_FUNCTIONS double get_thermal_conductivity() const
Definition rocky_particle_scalars.hpp:261
ROCKY_FUNCTIONS double get_temperature() const
Definition rocky_particle_scalars.hpp:112
ROCKY_FUNCTIONS void add_implicit_fluid_momentum(const double value)
Definition rocky_particle_scalars.hpp:204
ROCKY_FUNCTIONS void set_temperature(const double value)
Definition rocky_particle_scalars.hpp:144
ROCKY_FUNCTIONS void set_poisson_ratio(const double value)
Definition rocky_particle_scalars.hpp:319
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:250
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:217
ROCKY_FUNCTIONS double get_poisson_ratio() const
Definition rocky_particle_scalars.hpp:307
ROCKY_FUNCTIONS void add_temperature(const double value)
Definition rocky_particle_scalars.hpp:178
ROCKY_FUNCTIONS void add_explicit_fluid_momentum(const double3 value)
Definition rocky_particle_scalars.hpp:191
ROCKY_FUNCTIONS void set_mass_increment(const double value)
Definition rocky_particle_scalars.hpp:155
ROCKY_FUNCTIONS void add_mass_increment(const double value)
Definition rocky_particle_scalars.hpp:240
ROCKY_FUNCTIONS void add_implicit_fluid_heat_transfer_rate(const double value)
Definition rocky_particle_scalars.hpp:230
Definition rocky_particle_scalars.hpp:371
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:406
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:424
ROCKY_FUNCTIONS void add_heat_transfer(const double value)
Definition rocky_particle_scalars.hpp:434
ROCKY_FUNCTIONS void add_heat_source(const double value)
Definition rocky_particle_scalars.hpp:447
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:412