Skip to main content

Rocky Solver SDK 2025 R2

rocky_output_collections_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 "rocky_time_curve_data.hpp"
6#include "rocky_output_properties.h"
7
8// =================================================================================================
9// IRockyCurveCollectionData
10// =================================================================================================
11
31{
44 void create_particles_dataset(const std::string& name, const std::string& unit);
45
58 void create_solver_dataset(const std::string& name, const std::string& unit);
59
73 void create_geometry_dataset(int geometry_id, const std::string& name, const std::string& unit);
74
88 void create_dataset(const std::string& owner_name, const std::string& name, const std::string& unit);
89
99 const std::string& domain_dataset, const std::string& image_dataset);
100
110 const std::string& domain_dataset, const std::string& image_dataset);
111
123 int geometry_id, const std::string& domain_dataset, const std::string& image_dataset);
124
135 void add_curve(
136 const std::string& owner_name, const std::string& domain_dataset, const std::string& image_dataset);
137
148 void setup_particles_dataset_dimension(const std::string& name, double dimension);
149
160 void setup_solver_dataset_dimension(const std::string& name, double dimension);
161
175 int geometry_id, const std::string& name, double dimension);
176
190 const std::string& owner_name, const std::string& name, double dimension);
191
205 void update_particles_dataset(const std::string& name, const double* dataset, size_t size);
206
220 void update_solver_dataset(const std::string& name, const double* dataset, size_t size);
221
238 int geometry_id, const std::string& name, const double* dataset, size_t size);
239
255 void update_dataset(
256 const std::string& owner_name, const std::string& name, const double* dataset, size_t size);
257
269 void create_particles_time_curve(const std::string& name, const std::string& unit);
270
282 void create_solver_time_curve(const std::string& name, const std::string& unit);
283
296 void create_geometry_time_curve(int geometry_id, const std::string& name, const std::string& unit);
297
310 void create_time_curve(const std::string& owner_name, const std::string& name, const std::string& unit);
311
322 void setup_particles_time_curve_dimension(const std::string& name, double dimension);
323
334 void setup_solver_time_curve_dimension(const std::string& name, double dimension);
335
348 void setup_geometry_time_curve_dimension(int geometry_id, const std::string& name, double dimension);
349
362 void setup_time_curve_dimension(const std::string& owner_name, const std::string& name, double dimension);
363
375 void update_particles_time_curve(const std::string& name, double value);
376
388 void update_solver_time_curve(const std::string& name, double value);
389
403 void update_geometry_time_curve(int geometry_id, const std::string& name, double value);
404
418 void update_time_curve(const std::string& owner_name, const std::string& name, double value);
419
422 std::shared_ptr<rocky20::RockyAddinCurvesWriter> datasets_writer, bool is_setup_stage);
423
424 RockyCurveCollectionData _impl;
425 bool _is_setup_stage;
427};
428
429inline IRockyCurveCollectionData::IRockyCurveCollectionData(
430 std::shared_ptr<rocky20::RockyAddinCurvesWriter> datasets_writer, bool is_setup_stage)
431 : _impl(datasets_writer)
432 , _is_setup_stage(is_setup_stage)
433{
434}
435
436// create ------------------------------------------------------------------------------------------
437
439 const std::string& name, const std::string& unit)
440{
441 if (this->_is_setup_stage)
442 this->_impl.create_particles_dataset(name, unit);
443 else
444 ROCKY_RUNTIME_ERROR("Curve collection datasets must be created before a simulation starts.")
445}
446
448 const std::string& name, const std::string& unit)
449{
450 if (this->_is_setup_stage)
451 this->_impl.create_solver_dataset(name, unit);
452 else
453 ROCKY_RUNTIME_ERROR("Curve collection datasets must be created before a simulation starts.")
454}
455
457 int geometry_id, const std::string& name, const std::string& unit)
458{
459 if (this->_is_setup_stage)
460 this->_impl.create_geometry_dataset(name, unit, geometry_id);
461 else
462 ROCKY_RUNTIME_ERROR("Curve collection datasets must be created before a simulation starts.")
463}
464
466 const std::string& owner_name, const std::string& name, const std::string& unit)
467{
468 if (this->_is_setup_stage)
469 this->_impl.create_custom_dataset(name, unit, owner_name);
470 else
471 ROCKY_RUNTIME_ERROR("Curve collection datasets must be created before a simulation starts.")
472}
473
475 const std::string& domain_dataset, const std::string& image_dataset)
476{
477 if (this->_is_setup_stage)
478 this->_impl.create_particles_curve(domain_dataset, image_dataset);
479 else
480 ROCKY_RUNTIME_ERROR("Curve collection curves must be created before a simulation starts.")
481}
482
484 const std::string& domain_dataset, const std::string& image_dataset)
485{
486 if (this->_is_setup_stage)
487 this->_impl.create_solver_curve(domain_dataset, image_dataset);
488 else
489 ROCKY_RUNTIME_ERROR("Curve collection curves must be created before a simulation starts.")
490}
491
493 int geometry_id, const std::string& domain_dataset, const std::string& image_dataset)
494{
495 if (this->_is_setup_stage)
496 this->_impl.create_geometry_curve(domain_dataset, image_dataset, geometry_id);
497 else
498 ROCKY_RUNTIME_ERROR("Curve collection curves must be created before a simulation starts.")
499}
500
502 const std::string& owner_name, const std::string& domain_dataset, const std::string& image_dataset)
503{
504 if (this->_is_setup_stage)
505 this->_impl.create_custom_curve(domain_dataset, image_dataset, owner_name);
506 else
507 ROCKY_RUNTIME_ERROR("Curve collection curves must be created before a simulation starts.")
508}
509
510inline void IRockyCurveCollectionData::create_particles_time_curve(const std::string& name, const std::string& unit)
511{
512 if (this->_is_setup_stage)
513 this->_impl.create_particles_time_curve(name, unit);
514 else
515 ROCKY_RUNTIME_ERROR("Curve collection curves must be created before a simulation starts.")
516}
517
518inline void IRockyCurveCollectionData::create_solver_time_curve(const std::string& name, const std::string& unit)
519{
520 if (this->_is_setup_stage)
521 this->_impl.create_solver_time_curve(name, unit);
522 else
523 ROCKY_RUNTIME_ERROR("Curve collection curves must be created before a simulation starts.")
524 }
525
526inline void IRockyCurveCollectionData::create_geometry_time_curve(int geometry_id, const std::string& name, const std::string& unit)
527{
528 if (this->_is_setup_stage)
529 this->_impl.create_geometry_time_curve(name, unit, geometry_id);
530 else
531 ROCKY_RUNTIME_ERROR("Curve collection curves must be created before a simulation starts.")
532}
533
535 const std::string &owner_name, const std::string &name, const std::string &unit)
536{
537 if (this->_is_setup_stage)
538 this->_impl.create_custom_time_curve(name, unit, owner_name);
539 else
540 ROCKY_RUNTIME_ERROR("Curve collection curves must be created before a simulation starts.")
541}
542
543// dimensions --------------------------------------------------------------------------------------
545 const std::string& name, double dimension)
546{
547 if (this->_is_setup_stage)
548 this->_impl.setup_particles_dataset_dimension(name, dimension);
549 else
550 ROCKY_RUNTIME_ERROR(
551 "The dimension associated to a dataset must be set before a simulation starts.")
552}
553
555 const std::string& name, double dimension)
556{
557 if (this->_is_setup_stage)
558 this->_impl.setup_solver_dataset_dimension(name, dimension);
559 else
560 ROCKY_RUNTIME_ERROR(
561 "The dimension associated to a dataset must be set before a simulation starts.")
562}
563
565 int geometry_id, const std::string& name, double dimension)
566{
567 if (this->_is_setup_stage)
568 this->_impl.setup_geometry_dataset_dimension(name, dimension, geometry_id);
569 else
570 ROCKY_RUNTIME_ERROR(
571 "The dimension associated to a dataset must be set before a simulation starts.")
572}
573
575 const std::string &owner_name, const std::string &name, double dimension)
576{
577 if (this->_is_setup_stage)
578 this->_impl.setup_custom_dataset_dimension(name, dimension, owner_name);
579 else
580 ROCKY_RUNTIME_ERROR("The dimension associated to a dataset must be set before a simulation starts.")
581}
582
584 const std::string& name, double dimension)
585{
586 if (this->_is_setup_stage)
587 this->_impl.setup_particles_dataset_dimension(name, dimension);
588 else
589 ROCKY_RUNTIME_ERROR(
590 "The dimension associated to a time curve must be set before a simulation starts.")
591}
592
594 const std::string& name, double dimension)
595{
596 if (this->_is_setup_stage)
597 this->_impl.setup_solver_dataset_dimension(name, dimension);
598 else
599 ROCKY_RUNTIME_ERROR(
600 "The dimension associated to a time curve must be set before a simulation starts.")
601 }
602
604 int geometry_id, const std::string& name, double dimension)
605{
606 if (this->_is_setup_stage)
607 this->_impl.setup_geometry_dataset_dimension(name, dimension, geometry_id);
608 else
609 ROCKY_RUNTIME_ERROR(
610 "The dimension associated to a time curve must be set before a simulation starts.")
611}
612
614 const std::string& owner_name, const std::string& name, double dimension)
615{
616 if (this->_is_setup_stage)
617 this->_impl.setup_custom_dataset_dimension(name, dimension, owner_name);
618 else
619 ROCKY_RUNTIME_ERROR(
620 "The dimension associated to a time curve must be set before a simulation starts.")
621}
622
623// update ------------------------------------------------------------------------------------------
624
626 const std::string& name, const double* dataset, size_t size)
627{
628 if (!this->_is_setup_stage)
629 this->_impl.update_particles_dataset(name, dataset, size);
630 else
631 ROCKY_RUNTIME_ERROR(
632 "Curve collection datasets must be updated during the simulation iterative process.")
633}
634
636 const std::string& name, const double* dataset, size_t size)
637{
638 if (!this->_is_setup_stage)
639 this->_impl.update_solver_dataset(name, dataset, size);
640 else
641 ROCKY_RUNTIME_ERROR(
642 "Curve collection datasets must be updated during the simulation iterative process.")
643}
644
646 int geometry_id, const std::string& name, const double* dataset, size_t size)
647{
648 if (!this->_is_setup_stage)
649 this->_impl.update_geometry_dataset(name, dataset, size, geometry_id);
650 else
651 ROCKY_RUNTIME_ERROR(
652 "Curve collection datasets must be updated during the simulation iterative process.")
653}
654
656 const std::string& owner_name, const std::string& name, const double* dataset, size_t size)
657{
658 if (!this->_is_setup_stage)
659 this->_impl.update_custom_dataset(name, dataset, size, owner_name);
660 else
661 ROCKY_RUNTIME_ERROR(
662 "Curve collection datasets must be updated during the simulation iterative process.")
663}
664
665inline void IRockyCurveCollectionData::update_particles_time_curve(const std::string& name, double value)
666{
667 if (!this->_is_setup_stage)
668 this->_impl.update_particles_dataset(name, &value, 1);
669 else
670 ROCKY_RUNTIME_ERROR(
671 "Curve collection datasets must be updated during the simulation iterative process.")
672}
673
674inline void IRockyCurveCollectionData::update_solver_time_curve(const std::string& name, double value)
675{
676 if (!this->_is_setup_stage)
677 this->_impl.update_solver_dataset(name, &value, 1);
678 else
679 ROCKY_RUNTIME_ERROR(
680 "Curve collection datasets must be updated during the simulation iterative process.")
681}
682
683inline void IRockyCurveCollectionData::update_geometry_time_curve(int geometry_id, const std::string& name, double value)
684{
685 if (!this->_is_setup_stage)
686 this->_impl.update_geometry_dataset(name, &value, 1, geometry_id);
687 else
688 ROCKY_RUNTIME_ERROR(
689 "Curve collection datasets must be updated during the simulation iterative process.")
690}
691
693 const std::string &owner_name, const std::string &name, double value)
694{
695 if (!this->_is_setup_stage)
696 this->_impl.update_custom_dataset(name, &value, 1, owner_name);
697 else
698 ROCKY_RUNTIME_ERROR("Curve collection datasets must be updated during the simulation iterative process.")
699}
700
701// =================================================================================================
702// IRockyOutputPropertyCollection
703// =================================================================================================
704
711{
720 int create_particles_instantaneous_property(const std::string& name, const std::string& unit, double dimension = 1.0);
721
731 int create_particles_statistical_property(const std::string& name, const std::string& unit, double dimension = 1.0);
732
741 int create_triangles_instantaneous_property(const std::string& name, const std::string& unit, double dimension = 1.0);
742
752 int create_triangles_statistical_property(const std::string& name, const std::string& unit, double dimension = 1.0);
753
762 int create_vertex_triangles_instantaneous_property(const std::string& name, const std::string& unit, double dimension = 1.0);
763
773 int create_vertex_triangles_statistical_property(const std::string& name, const std::string& unit, double dimension = 1.0);
774
776 IRockyOutputPropertyCollection(std::shared_ptr<OutputPropertiesSetup> properties_setup);
777
778 std::shared_ptr<OutputPropertiesSetup> _impl;
780};
781
782inline IRockyOutputPropertyCollection::IRockyOutputPropertyCollection(
783 std::shared_ptr<OutputPropertiesSetup> properties_setup)
784 : _impl(properties_setup)
785{}
786
788 const std::string& name, const std::string& unit, double dimension)
789{
790 return this->_impl->create_particles_instantaneous_property(name, unit, dimension);
791}
792
794 const std::string& name, const std::string& unit, double dimension)
795{
796 return this->_impl->create_particles_statistical_property(name, unit, dimension);
797}
798
800 const std::string& name, const std::string& unit, double dimension)
801{
802 return this->_impl->create_triangles_instantaneous_property(name, unit, dimension);
803}
804
806 const std::string& name, const std::string& unit, double dimension)
807{
808 return this->_impl->create_triangles_statistical_property(name, unit, dimension);
809}
810
812 const std::string& name, const std::string& unit, double dimension)
813{
814 return this->_impl->create_vertex_triangles_instantaneous_property(name, unit, dimension);
815}
816
818 const std::string& name, const std::string& unit, double dimension)
819{
820 return this->_impl->create_vertex_triangles_statistical_property(name, unit, dimension);
821}
Definition rocky_output_collections_api.hpp:31
void update_time_curve(const std::string &owner_name, const std::string &name, double value)
Definition rocky_output_collections_api.hpp:692
void create_solver_dataset(const std::string &name, const std::string &unit)
Definition rocky_output_collections_api.hpp:447
void setup_particles_time_curve_dimension(const std::string &name, double dimension)
Definition rocky_output_collections_api.hpp:583
void update_solver_time_curve(const std::string &name, double value)
Definition rocky_output_collections_api.hpp:674
void update_geometry_time_curve(int geometry_id, const std::string &name, double value)
Definition rocky_output_collections_api.hpp:683
void setup_dataset_dimension(const std::string &owner_name, const std::string &name, double dimension)
Definition rocky_output_collections_api.hpp:574
void create_time_curve(const std::string &owner_name, const std::string &name, const std::string &unit)
Definition rocky_output_collections_api.hpp:534
void update_particles_time_curve(const std::string &name, double value)
Definition rocky_output_collections_api.hpp:665
void update_solver_dataset(const std::string &name, const double *dataset, size_t size)
Definition rocky_output_collections_api.hpp:635
void update_dataset(const std::string &owner_name, const std::string &name, const double *dataset, size_t size)
Definition rocky_output_collections_api.hpp:655
void setup_particles_dataset_dimension(const std::string &name, double dimension)
Definition rocky_output_collections_api.hpp:544
void update_particles_dataset(const std::string &name, const double *dataset, size_t size)
Definition rocky_output_collections_api.hpp:625
void create_particles_curve(const std::string &domain_dataset, const std::string &image_dataset)
Definition rocky_output_collections_api.hpp:474
void create_solver_time_curve(const std::string &name, const std::string &unit)
Definition rocky_output_collections_api.hpp:518
void add_curve(const std::string &owner_name, const std::string &domain_dataset, const std::string &image_dataset)
Definition rocky_output_collections_api.hpp:501
void create_dataset(const std::string &owner_name, const std::string &name, const std::string &unit)
Definition rocky_output_collections_api.hpp:465
void create_particles_dataset(const std::string &name, const std::string &unit)
Definition rocky_output_collections_api.hpp:438
void setup_geometry_time_curve_dimension(int geometry_id, const std::string &name, double dimension)
Definition rocky_output_collections_api.hpp:603
void create_geometry_time_curve(int geometry_id, const std::string &name, const std::string &unit)
Definition rocky_output_collections_api.hpp:526
void create_geometry_dataset(int geometry_id, const std::string &name, const std::string &unit)
Definition rocky_output_collections_api.hpp:456
void setup_geometry_dataset_dimension(int geometry_id, const std::string &name, double dimension)
Definition rocky_output_collections_api.hpp:564
void setup_solver_dataset_dimension(const std::string &name, double dimension)
Definition rocky_output_collections_api.hpp:554
void setup_time_curve_dimension(const std::string &owner_name, const std::string &name, double dimension)
Definition rocky_output_collections_api.hpp:613
void create_geometry_curve(int geometry_id, const std::string &domain_dataset, const std::string &image_dataset)
Definition rocky_output_collections_api.hpp:492
void create_particles_time_curve(const std::string &name, const std::string &unit)
Definition rocky_output_collections_api.hpp:510
void setup_solver_time_curve_dimension(const std::string &name, double dimension)
Definition rocky_output_collections_api.hpp:593
void create_solver_curve(const std::string &domain_dataset, const std::string &image_dataset)
Definition rocky_output_collections_api.hpp:483
void update_geometry_dataset(int geometry_id, const std::string &name, const double *dataset, size_t size)
Definition rocky_output_collections_api.hpp:645
Definition rocky_output_collections_api.hpp:711
int create_particles_statistical_property(const std::string &name, const std::string &unit, double dimension=1.0)
Definition rocky_output_collections_api.hpp:793
int create_particles_instantaneous_property(const std::string &name, const std::string &unit, double dimension=1.0)
Definition rocky_output_collections_api.hpp:787
int create_triangles_instantaneous_property(const std::string &name, const std::string &unit, double dimension=1.0)
Definition rocky_output_collections_api.hpp:799
int create_triangles_statistical_property(const std::string &name, const std::string &unit, double dimension=1.0)
Definition rocky_output_collections_api.hpp:805
int create_vertex_triangles_statistical_property(const std::string &name, const std::string &unit, double dimension=1.0)
Definition rocky_output_collections_api.hpp:817
int create_vertex_triangles_instantaneous_property(const std::string &name, const std::string &unit, double dimension=1.0)
Definition rocky_output_collections_api.hpp:811

Connect with Ansys