api_device_cfd_coupling
Last update: 17.07.2025 3// Includes =================================================================================================
14 const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data,
135 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
169 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
181 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
187// Operator defined with drag laws implementation with light weight code, with less impact of performance.
213 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
217 case cfd_drag_law_SchillerNaumann1933: DragLaw<SchillerNaumann1933Operator>(particle, cfd, output, data); break;
218 case cfd_drag_law_Dallavalle1948: DragLaw<Dallavalle1948Operator>(particle, cfd, output, data); break;
219 case cfd_drag_law_HaiderLevenspiel1989: DragLaw<HaiderLevenspiel1989Operator>(particle, cfd, output, data); break;
220 case cfd_drag_law_MorsiAlexander1972: DragLaw<MorsiAlexander1972Operator>(particle, cfd, output, data); break;
223 case cfd_drag_law_GidaspowBezburuahDing1992: DragLaw<GidaspowBezburuahDing1992Operator>(particle, cfd, output, data); break;
224 case cfd_drag_law_HuilinGidaspow2003: DragLaw<HuilinGidaspow2003Operator>(particle, cfd, output, data); break;
225 case cfd_drag_law_DiFelice1994: DragLaw<DiFelice1994Operator>(particle, cfd, output, data); break;
226 case cfd_drag_law_HillKochLadd2001: DragLaw<HillKochLadd2001Operator>(particle, cfd, output, data); break;
227 case cfd_drag_law_HillKoch2001: DragLaw<HillKoch2001Operator>(particle, cfd, output, data); break;
228 case cfd_drag_law_SyamlalOBrien1987: DragLaw<SyamlalOBrien1987Operator>(particle, cfd, output, data); break;
233// Operator defined with drag laws implementation with light weight code, with less impact of performance.
249 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
254 case cfd_drag_law_MarheinekeWegener2011: MarheinekeWegener2011Operator::DragLaw(particle, cfd, output); break;
262 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
272 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
283 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
286 device_data->particle_scalars->get_virtual_mass(particle._impl.particle_index) = output.virtual_mass;
296 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
299 device_data->particle_scalars->get_virtual_mass(particle._impl.particle_index) = output.virtual_mass;
306 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
316 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
327 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
330 device_data->particle_transfer_scalars->get_heat_transfer(particle._impl.particle_index) += output.heat_transfer;
340 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
343 device_data->particle_transfer_scalars->get_heat_transfer(particle._impl.particle_index) += output.heat_transfer;
352 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
424 void operator()(const IRockyParticle& particle, const IRockyCFDProperties& cfd, CFDCouplingOutput& output, void* data)
445Dispatch function, a sequence of selector function calls, that will at the end collected all operators in a
486void select_turbulence_and(CouplingDispatchData& data, const cuda_general_cfd& h_gen_cfd, Operators... operators)
495void select_coupling_mode_and(CouplingDispatchData& data, const cuda_general_cfd& h_gen_cfd, Operators... operators)
505void select_cfd_data_recorder_and(CouplingDispatchData& data, const cuda_general_cfd& h_gen_cfd, Operators... operators)
509 select_coupling_mode_and(data, h_gen_cfd, operators..., CFDDataRecorderOperator{ data.device_data });
513 // When compiling the kernel with custom laws, we must limit the number of times we instantiate the coupling kernel.
526void select_convection_and(CouplingDispatchData& data, const cuda_general_cfd& h_gen_cfd, const CFDParticleGroup& group, Operators... operators)
535 select_cfd_data_recorder_and(data, h_gen_cfd, operators..., custom_convection_operator<Plugin>(data.device_data));
539 select_cfd_data_recorder_and(data, h_gen_cfd, operators..., HeatConvectionOperator{ data.device_data });
544void select_torque_and(CouplingDispatchData& data, const cuda_general_cfd& h_gen_cfd, const CFDParticleGroup& group, Operators... operators)
552 select_convection_and<Plugin>(data, h_gen_cfd, group, operators..., TorqueParametricOperator<DennisSinghIngham1980Operator>());
556 select_convection_and<Plugin>(data, h_gen_cfd, group, operators..., custom_torque_operator<Plugin>());
563void select_virtual_mass_and(CouplingDispatchData& data, const cuda_general_cfd& h_gen_cfd, const CFDParticleGroup& group, Operators... operators)
572 select_torque_and<Plugin>(data, h_gen_cfd, group, operators..., custom_virtual_mass_operator<Plugin>(data.device_data));
576 select_torque_and<Plugin>(data, h_gen_cfd, group, operators..., VirtualMassOperator{ data.device_data });
581void select_lift_and(CouplingDispatchData& data, const cuda_general_cfd& h_gen_cfd, const CFDParticleGroup& h_group, Operators... operators)
589 // select_virtual_mass_and<Plugin>(data, h_gen_cfd, h_group, operators..., LiftOperator<Mei1992Operator>());
592 // select_virtual_mass_and<Plugin>(data, h_gen_cfd, h_group, operators..., LiftOperator<Saffman1968Operator>());
596 select_virtual_mass_and<Plugin>(data, h_gen_cfd, h_group, operators..., custom_lift_operator<Plugin>());
605void select_drag_and(CouplingDispatchData& data, const cuda_general_cfd& h_gen_cfd, const CFDParticleGroup& h_group)
634 CouplingDispatchData data{ is_cuda, collect_cfd_data, device_data, particle_indexes, n_particles, udf_data };
Definition rocky_cfd.hpp:26
ROCKY_FUNCTIONS double3 get_relative_velocity() const
Definition rocky_cfd.hpp:112
ROCKY_FUNCTIONS double get_fluid_temperature() const
Definition rocky_cfd.hpp:54
Definition rocky_model_api.hpp:19
Definition rocky_particle_api.hpp:27
ROCKY_FUNCTIONS IRockyParticleScalars get_scalars()
Definition rocky_particle_api.hpp:537
ROCKY_FUNCTIONS double3 get_translational_velocity() const
Definition rocky_particle_api.hpp:417