1 #pragma once
2 
3 #include "run/Job.h"
4 
5 NAMESPACE_SPH_BEGIN
6 
7 class SphJob : public IRunJob, public SharedToken {
8 protected:
9     RunSettings settings;
10     bool isResumed = false;
11 
12 public:
13     explicit SphJob(const String& name, const RunSettings& overrides = EMPTY_SETTINGS);
14 
15     static RunSettings getDefaultSettings(const String& name);
16 
className()17     virtual String className() const override {
18         return "SPH run";
19     }
20 
getSlots()21     virtual UnorderedMap<String, ExtJobType> getSlots() const override {
22         return { { "particles", JobType::PARTICLES }, { "boundary", JobType::GEOMETRY } };
23     }
24 
25     virtual UnorderedMap<String, ExtJobType>
requires()26     requires() const override {
27         UnorderedMap<String, ExtJobType> map{ { "particles", JobType::PARTICLES } };
28         if (settings.get<BoundaryEnum>(RunSettingsId::DOMAIN_BOUNDARY) != BoundaryEnum::NONE) {
29             map.insert("boundary", JobType::GEOMETRY);
30         }
31         return map;
32     }
33 
34     virtual VirtualSettings getSettings() override;
35 
36     virtual AutoPtr<IRun> getRun(const RunSettings& overrides) const override;
37 };
38 
39 class SphStabilizationJob : public SphJob {
40 public:
41     using SphJob::SphJob;
42 
className()43     virtual String className() const override {
44         return "SPH stabilization";
45     }
46 
47     virtual VirtualSettings getSettings() override;
48 
49     virtual AutoPtr<IRun> getRun(const RunSettings& overrides) const override;
50 };
51 
52 class NBodyJob : public IRunJob, public SharedToken {
53 private:
54     RunSettings settings;
55     bool useSoft = false;
56     bool isResumed = false;
57 
58 public:
59     explicit NBodyJob(const String& name, const RunSettings& overrides = EMPTY_SETTINGS);
60 
61     static RunSettings getDefaultSettings(const String& name);
62 
className()63     virtual String className() const override {
64         return "N-body run";
65     }
66 
getSlots()67     virtual UnorderedMap<String, ExtJobType> getSlots() const override {
68         return { { "particles", JobType::PARTICLES } };
69     }
70 
71     virtual VirtualSettings getSettings() override;
72 
73     virtual AutoPtr<IRun> getRun(const RunSettings& overrides) const override;
74 };
75 
76 NAMESPACE_SPH_END
77