В методе run () класса Time используется переменная bool subCycling_ в следующем коде:
bool Foam::Time::run() const
810 {
811 bool running = value() < (endTime_ - 0.5*deltaT_);
812
813 if (!subCycling_) //bool subCycling_; //- Is the time currently being sub-cycled?
814 {
815 // only execute when the condition is no longer true
816 // ie, when exiting the control loop
817 if (!running && timeIndex_ != startTimeIndex_)
818 {
819 // Note, end() also calls an indirect start() as required
820 functionObjects_.end();
821 }
822 }
823
824 if (running)
825 {
826 if (!subCycling_)
827 {
828 const_cast<Time&>(*this).readModifiedObjects();
829
830 if (timeIndex_ == startTimeIndex_)
831 {
832 functionObjects_.start();
833 }
834 else
835 {
836 functionObjects_.execute();
837 }
838 }
839
840 // Update the "running" status following the
841 // possible side-effects from functionObjects
842 running = value() < (endTime_ - 0.5*deltaT_);
843 }
844
845 return running;
846 }
847
848
849 bool Foam::Time::loop()
850 {
851 bool running = run();
852
853 if (running)
854 {
855 operator++();
856 }
857
858 return running;
859 }
Когда я перевожу субциклирование на немецкий язык, я все еще не понимаю смысла.
Итак, что означает подциклирование [строка 813]? Пример был бы великолепен здесь.
Привет
Streight
Вы должны спросить человека, который написал код. Невозможно случайным образом отличить этот небольшой фрагмент кода без какого-либо контекста. Может быть подсказка в следующих строках (так как это строки, затронутые этим логическим значением), но вы их нам не показывали.
Однако, как подсказка, некоторые реализации таймера используют «подцикл» для описания запуска повторяющихся итераций механизма таймера в каждом цикле первичного цикла событий. Это может разрешить конфликт, вызванный индивидуальными условиями ожидания:
Это чаще встречается в коде, который запускает механические устройства.
Других решений пока нет …